Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 1 year ago
parent
commit
9738636078
  1. 4
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java
  2. 34
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempMapper.xml
  3. 71
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  4. 32
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysappendix/SysAppendix.java
  5. 20
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysappendix/SysAppendixQuery.java
  6. 33
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/NoticeAppListVo.java
  7. 24
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/PushNoticeAppVo.java
  8. 35
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/PushNoticeQuery.java
  9. 13
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNotice.java
  10. 29
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeAppDetails.java
  11. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeDto.java
  12. 12
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeFeign.java
  13. 3
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeListVo.java
  14. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/UrlQuery.java
  15. 31
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/index/AppIndexRest.java
  16. 23
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixMapper.java
  17. 21
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixMapper.xml
  18. 79
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixService.java
  19. 3
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeMapper.java
  20. 17
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeMapper.xml
  21. 15
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeRest.java
  22. 119
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeService.java
  23. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfile/LoanFileEnum.java
  24. 73
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgage.java
  25. 27
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageDto.java
  26. 59
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFeign.java
  27. 45
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFeignFallback.java
  28. 18
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFile.java
  29. 50
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageQuery.java
  30. 53
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageSaveDto.java
  31. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageTransferDto.java
  32. 55
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageTransferVo.java
  33. 43
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageVo.java
  34. 40
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/MortgageInitDto.java
  35. 42
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/MortgageInitVo.java
  36. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/BiddingVo.java
  37. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBidding.java
  38. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingDto.java
  39. 36
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingFeign.java
  40. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingFeignFallback.java
  41. 22
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageMapper.java
  42. 26
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageMapper.xml
  43. 54
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageRest.java
  44. 369
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageService.java
  45. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  46. 51
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java
  47. 24
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingMapper.java
  48. 27
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingMapper.xml
  49. 41
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingRest.java
  50. 84
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingService.java
  51. 35
      doc/databases/portal_tables.sql
  52. 27
      doc/databases/risk_center.sql

4
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempExportVo.java

@ -10,8 +10,8 @@ import lombok.Data;
*/
@Data
public class CrmCustomerTempExportVo {
// private String staffSid;
// private String createOrgSid;
private String staffSid;
private String createOrgSid;
@ExportEntityMap(CnName = "序号", EnName = "rankNo")
private Integer rankNo;
@ExportEntityMap(CnName = "创建日期", EnName = "createTime")

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

@ -251,29 +251,33 @@
</select>
<select id="exportExcel" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo">
SELECT
row_number() over(order by cct.id) as rankNo,
DATE_FORMAT(cct.createTime, '%Y-%m-%d') AS createTime,
@row_number:=@row_number + 1 AS rankNo
,a.* FROM (
SELECT
DATE_FORMAT( cct.createTime, '%Y-%m-%d' ) AS createTime,
cct.customerNo,
so.`name` as createOrgName,
st.name as staffName,
org.orgName as deptName,
so.`name` AS createOrgName,
st.NAME AS staffName,
cct.staffSid,
cct.`name`,
cct.customerType,
-- org.orgName AS deptName,
cct.mobile,
cct.weixin,
cct.`level`,
DATE_FORMAT(cct.remind_day, '%Y-%m-%d') AS remind_day,
(SELECT COUNT(*)
FROM crm_vehicledemand cv
WHERE cct.sid = cv.customerSid
AND states = 1) yxcounts,
(SELECT COUNT(*)
FROM crm_visit cvi
WHERE cct.sid = cvi.customerSid) gjcounts
FROM crm_customer_temp cct
cct.customerTypeKey,
cct.createOrgSid,
so.orgSidPath,
cct.levelKey,
DATE_FORMAT( cct.remind_day, '%Y-%m-%d' ) AS remind_day,
( SELECT COUNT(*) FROM crm_vehicledemand cv WHERE cct.sid = cv.customerSid AND states = 1 ) yxcounts,
( SELECT COUNT(*) FROM crm_visit cvi WHERE cct.sid = cvi.customerSid ) gjcounts
FROM
crm_customer_temp cct
LEFT JOIN anrui_portal.sys_organization so ON cct.createOrgSid = so.sid
LEFT JOIN anrui_portal.sys_staffinfo st ON cct.staffSid = st.sid
LEFT JOIN anrui_portal.sys_staff_org as org ON org.staffSid = st.sid
-- LEFT JOIN anrui_portal.sys_staff_org AS org ON org.staffSid = st.sid and so.psid = org.orgSid
) as a,(SELECT @row_number:=0) AS t
<where>
${ew.sqlSegment}
</where>

71
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

@ -62,6 +62,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Predicate;
/**
* Project: anrui-crm(客户管理) <br/>
@ -1256,75 +1257,63 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
String orgLevelKey = data.getOrgLevelKey();
if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, 73);
qw.like("so.orgSidPath", orgSidPath);
qw.like("a.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
qw.eq("cct.createOrgSid", orgSid);
qw.eq("a.createOrgSid", orgSid);
}
if (StringUtils.isNotBlank(query.getCustomerTypeKey())) {
qw.eq("cct.customerTypeKey", query.getCustomerTypeKey());
qw.eq("a.customerTypeKey", query.getCustomerTypeKey());
}
if (StringUtils.isNotBlank(query.getName())) {
qw.like("cct.name", query.getName());
qw.like("a.name", query.getName());
}
if (StringUtils.isNotBlank(query.getLevelKey())) {
qw.eq("cct.levelKey", query.getLevelKey());
qw.eq("a.levelKey", query.getLevelKey());
}
if (StringUtils.isNotBlank(query.getMobile())) {
qw.like("cct.mobile", query.getMobile());
qw.like("a.mobile", query.getMobile());
}
if (StringUtils.isNotBlank(query.getStaffName())) {
qw.like("st.name", query.getStaffName());
qw.like("a.staffName", query.getStaffName());
}
String remindStartDay = query.getRemindStartDay();
String remindEndDay = query.getRemindEndDay();
qw.apply(StringUtils.isNotBlank(remindStartDay), "date_format (cct.remind_day,'%Y-%m-%d') >= date_format('" + remindStartDay + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(remindEndDay), "date_format (cct.remind_day,'%Y-%m-%d') <= date_format('" + remindEndDay + "','%Y-%m-%d')"
qw.apply(StringUtils.isNotBlank(remindStartDay), "date_format (a.remind_day,'%Y-%m-%d') >= date_format('" + remindStartDay + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(remindEndDay), "date_format (a.remind_day,'%Y-%m-%d') <= date_format('" + remindEndDay + "','%Y-%m-%d')"
);
String createStartDate = query.getCreateStartDate();
String createEndDate = query.getCreateEndDate();
qw.apply(StringUtils.isNotBlank(createStartDate), "date_format (cct.createTime,'%Y-%m-%d') >= date_format('" + createStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndDate), "date_format (cct.createTime,'%Y-%m-%d') <= date_format('" + createEndDate + "','%Y-%m-%d')"
qw.apply(StringUtils.isNotBlank(createStartDate), "date_format (a.createTime,'%Y-%m-%d') >= date_format('" + createStartDate + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createEndDate), "date_format (a.createTime,'%Y-%m-%d') <= date_format('" + createEndDate + "','%Y-%m-%d')"
);
List<CrmCustomerTempExportVo> records = baseMapper.exportExcel(qw);
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// int id = 1;
// if (!records.isEmpty()) {
// for (CrmCustomerTempExportVo record : records) {
// try {
// Date date = sdf.parse(record.getCreateTime());
// record.setCreateTime(sdf.format(date));
// } catch (ParseException e) {
// e.printStackTrace();
// }
// String createOrgSid = record.getCreateOrgSid();
// String staffSid = record.getStaffSid();
// String createOrgName = sysOrganizationFeign.fetchBySid(createOrgSid).getData().getName();
// record.setCreateOrgName(createOrgName);
// List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
// for (SysStaffOrgVo sysStaffOrgVo : sysStaffOrgVos) {
// SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(sysStaffOrgVo.getOrgSid()).getData();
// String psid = sysOrganizationVo.getPsid();
// if (psid.equals(createOrgSid)) {
// String orgName = sysStaffOrgVo.getOrgName();
// record.setDeptName(orgName);
// }
// }
// record.setRankNo(id);
// id = id + 1;
// }
// }
if (!records.isEmpty()) {
records.stream().forEach(r -> {
String createOrgSid = r.getCreateOrgSid();
String staffSid = r.getStaffSid();
List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgFeign.getSysStaffOrgListByStaffSid(staffSid).getData();
sysStaffOrgVos.stream().forEach(s -> {
SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.fetchBySid(s.getOrgSid()).getData();
String psid = sysOrganizationVo.getPsid();
if (psid.equals(createOrgSid)) {
String orgName = s.getOrgName();
r.setDeptName(orgName);
}
});
});
}
return records;
}
public ResultBean<String> updateTemp(CustomerSecondSalesDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
AppCrmCustomerTempDto appCrmCustomerTempDto = new AppCrmCustomerTempDto();
if(StringUtils.isNotBlank(dto.getCustomerSid())){
if (StringUtils.isNotBlank(dto.getCustomerSid())) {
CrmCustomerTemp customerTemp = fetchBySid(dto.getCustomerSid());
BeanUtils.copyProperties(customerTemp,appCrmCustomerTempDto);
BeanUtils.copyProperties(customerTemp, appCrmCustomerTempDto);
appCrmCustomerTempDto.setSid(dto.getCustomerSid());
appCrmCustomerTempDto.setCertificateTypeKey(dto.getCertificateTypeKey());
appCrmCustomerTempDto.setCertificateType(dto.getCertificateType());
@ -1332,7 +1321,7 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
appCrmCustomerTempDto.setEndDate(dto.getEndDate());
appCrmCustomerTempDto.setCertificateAddress(dto.getCertificateAddress());
appCrmCustomerTempDto.setUserSid(dto.getUserSid());
}else{
} else {
appCrmCustomerTempDto.setSid(dto.getCustomerSid());
appCrmCustomerTempDto.setName(dto.getCustomerName());
appCrmCustomerTempDto.setMobile(dto.getMobile());

32
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysappendix/SysAppendix.java

@ -0,0 +1,32 @@
package com.yxt.anrui.portal.api.sysappendix;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class SysAppendix extends BaseEntity {
private static final long serialVersionUID = -6810446025754215365L;
@ApiModelProperty("文件名")
private String fileName;
@ApiModelProperty("文件类型")
private String fileType;
@ApiModelProperty("上传人姓名")
private String name;
@ApiModelProperty("关联sid")
private String linkSid;
@ApiModelProperty("附件类型")
private String attachType;
@ApiModelProperty("文件大小")
private String fileSize;
@ApiModelProperty("文件的相对路径")
private String filePath;
}

20
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysappendix/SysAppendixQuery.java

@ -0,0 +1,20 @@
package com.yxt.anrui.portal.api.sysappendix;
import com.yxt.anrui.portal.api.sysnotice.UrlQuery;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class SysAppendixQuery {
private String linkSid;
private List<UrlQuery> filesList = new ArrayList<>();
}

33
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/NoticeAppListVo.java

@ -0,0 +1,33 @@
package com.yxt.anrui.portal.api.sysnotice;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class NoticeAppListVo {
private PushNoticeAppVo pageInfo;
private String title;
private String sid;
@ApiModelProperty("移动端页面地址")
@JsonIgnore
private String moduleAction;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
@JsonIgnore
private String app_type;
@ApiModelProperty("参数(规则),json类型的传参(必须为 string、string)")
@JsonIgnore
private String args_json;
@ApiModelProperty("插件sid")
@JsonIgnore
private String moduleSid;
}

24
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/PushNoticeAppVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.portal.api.sysnotice;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class PushNoticeAppVo {
private String path;
private String modulePluginName;
private int moduleVersion;
private String json;
private String type;
private String moduleAction;
}

35
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/PushNoticeQuery.java

@ -0,0 +1,35 @@
package com.yxt.anrui.portal.api.sysnotice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class PushNoticeQuery {
@ApiModelProperty("移动端页面地址")
private String moduleAction;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("参数(规则),json类型的传参(必须为 string、string)")
private String args_json;
@ApiModelProperty("插件sid")
private String moduleSid;
private String title;
private String sid;
private String pcUrl;
@ApiModelProperty("类别")
private String type;
@ApiModelProperty("类别key")
private String typeKey;
private String createTime;
@ApiModelProperty("有效期至")
private String validityDate;
@ApiModelProperty("用户sid")
private String userSid;
}

13
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNotice.java

@ -27,4 +27,17 @@ public class SysNotice extends BaseEntity {
private String content;
@ApiModelProperty("附件")
private String files;
@ApiModelProperty("生成类型0添加1自动")
private String createType;
private String pcUrl;
@ApiModelProperty("移动端页面地址")
private String moduleAction;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String app_type;
@ApiModelProperty("参数(规则),json类型的传参(必须为 string、string)")
private String args_json;
@ApiModelProperty("插件sid")
private String moduleSid;
}

29
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeAppDetails.java

@ -0,0 +1,29 @@
package com.yxt.anrui.portal.api.sysnotice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Data
public class SysNoticeAppDetails {
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("有效期至")
private String validityDate;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("附件")
private List<String> filesList = new ArrayList<>();
@ApiModelProperty("发布日期")
private String createTime;
}

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeDto.java

@ -35,4 +35,6 @@ public class SysNoticeDto implements Dto {
private String createTime;
private String userSid;
}

12
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeFeign.java

@ -50,4 +50,16 @@ public interface SysNoticeFeign {
@ApiOperation("删除/批量删除")
@DeleteMapping("/delBySids")
ResultBean delBySids(@RequestBody String[] sids);
@ApiOperation("自动推送通知公告")
@PostMapping("/savePushNotice")
ResultBean savePushNotice(@RequestBody PushNoticeQuery query);
@ApiOperation("移动端通知公告")
@GetMapping("/getAppDetails")
ResultBean<List<NoticeAppListVo>> getAppDetails();
@ApiOperation("移动端")
@GetMapping("/getDetailsApp")
ResultBean<SysNoticeAppDetails> getDetailsApp(@RequestParam("sid") String sid);
}

3
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/SysNoticeListVo.java

@ -1,5 +1,6 @@
package com.yxt.anrui.portal.api.sysnotice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -13,4 +14,6 @@ public class SysNoticeListVo {
private String sid;
private String title;
private String createTime;
@ApiModelProperty("pc的页面地址")
private String pcUrl;
}

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysnotice/UrlQuery.java

@ -12,5 +12,7 @@ public class UrlQuery {
private String url;
private String name;
}

31
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/index/AppIndexRest.java

@ -5,11 +5,15 @@ import com.yxt.anrui.portal.api.banner.BannerVo;
import com.yxt.anrui.portal.api.formnotice.FormNoticeQuery;
import com.yxt.anrui.portal.api.formnotice.FormNoticeVo;
import com.yxt.anrui.portal.api.index.*;
import com.yxt.anrui.portal.api.sysnotice.NoticeAppListVo;
import com.yxt.anrui.portal.api.sysnotice.SysNoticeFeign;
import com.yxt.anrui.portal.api.sysnotice.SysNoticeListVo;
import com.yxt.anrui.portal.biz.appsubsetversion.AppSubsetVersionService;
import com.yxt.anrui.portal.biz.banner.BannerService;
import com.yxt.anrui.portal.biz.flow.FlowableService;
import com.yxt.anrui.portal.biz.formnotice.FormNoticeService;
import com.yxt.anrui.portal.biz.sysmobilemenurole.SysMobileMenuRoleService;
import com.yxt.anrui.portal.biz.sysnotice.SysNoticeService;
import com.yxt.anrui.portal.biz.sysuser.SysUserService;
import com.yxt.anrui.terminal.api.autoservice.baseInfo.AppAutoServiceBaseInfoQuery;
import com.yxt.anrui.terminal.api.autoservice.baseInfo.AppAutoServiceBaseInfoVo;
@ -70,6 +74,8 @@ public class AppIndexRest implements AppIndexFeign {
private AppAutoserviceBaseInfoFeign appAutoserviceBaseInfoFeign;
@Autowired
private AppAutoRiskBaseInfoFeign appAutoRiskBaseInfoFeign;
@Autowired
private SysNoticeService sysNoticeService;
@Override
public ResultBean<AppIndexVo> index(String userSid) {
@ -78,21 +84,22 @@ public class AppIndexRest implements AppIndexFeign {
Map<String, Object> map = new HashMap<String, Object>();
appVo.setUserSid(userSid);
// 待办数量
// appVo.setNotWorkNum(flowableService.getTodoNum(userSid).getData());
appVo.setNotWorkNum(0);
// 待阅数量
// appVo.setNotReadNum(messageListFeign.selectUnReadCount("", userSid).getData());
appVo.setNotReadNum(0);
// 通知公告列表
FormNoticeQuery formNoticeQuery = new FormNoticeQuery();
/* FormNoticeQuery formNoticeQuery = new FormNoticeQuery();
PagerQuery<FormNoticeQuery> formNoticeQueryPage = new PagerQuery<>();
formNoticeQueryPage.setParams(formNoticeQuery);
formNoticeQueryPage.getParams().setClosingDate(DateUtils.dateConvertStr(new Date()));
//取前6条
formNoticeQueryPage.setSize(6);
List<FormNoticeVo> formNoticeVoList = formNoticeService.pageList(formNoticeQueryPage).getRecords();
map.put("tips", formNoticeVoList);
List<FormNoticeVo> formNoticeVoList = formNoticeService.pageList(formNoticeQueryPage).getRecords();*/
ResultBean<List<NoticeAppListVo>> listResultBean = sysNoticeService.getAppDetails();
List<NoticeAppListVo> sysNoticeListVoList = listResultBean.getData();
sysNoticeListVoList.removeAll(Collections.singleton(null));
map.put("tips", sysNoticeListVoList);
// 子应用列表
String linkSid = LINKSID;
@ -101,8 +108,8 @@ public class AppIndexRest implements AppIndexFeign {
//查询该用户是否有权限
List<String> stringList = sysMobileMenuRoleService.selectAppSidList(userSid);
List<AppSubsetVersionVo> subsetVersionVoList = new ArrayList<>();
if(!stringList.isEmpty()){
subsetVersionVoList = appSubsetVersionService.selectVersionListOne(linkSid, path,stringList);
if (!stringList.isEmpty()) {
subsetVersionVoList = appSubsetVersionService.selectVersionListOne(linkSid, path, stringList);
subsetVersionVoList.stream().forEach(item -> {
item.setCornerNum("");
});
@ -186,7 +193,7 @@ public class AppIndexRest implements AppIndexFeign {
}
item.setCornerNum(String.valueOf(count));
} else if("e25e13b5-f2ed-421f-bdb3-6f2eca2a3028".equals(item.getAppSid())){
} else if ("e25e13b5-f2ed-421f-bdb3-6f2eca2a3028".equals(item.getAppSid())) {
//业务
ResultBean<AppAutoServiceBaseInfoVo> indexCountVo = ResultBean.fireFail();
if (StringUtils.isNotBlank(orgPath)) {
@ -208,7 +215,7 @@ public class AppIndexRest implements AppIndexFeign {
}
}
item.setCornerNum(String.valueOf(count));
}else if ("fec4e243-491a-11ec-94cd-fa163e0cb33c".equals(item.getAppSid())){
} else if ("fec4e243-491a-11ec-94cd-fa163e0cb33c".equals(item.getAppSid())) {
//风控
ResultBean<AppAutoRiskBaseInfoVo> indexCountVo = ResultBean.fireFail();
if (StringUtils.isNotBlank(orgPath)) {
@ -235,7 +242,7 @@ public class AppIndexRest implements AppIndexFeign {
}
}
item.setCornerNum(String.valueOf(count));
}else{
} else {
item.setCornerNum("");
}
});
@ -243,8 +250,8 @@ public class AppIndexRest implements AppIndexFeign {
}
@Override
public ResultBean<List<AppIndexNewVo>> getBusinessList(String userSid, String appSid,String orgPath) {
return appIndexService.getBusinessList(userSid, appSid,orgPath);
public ResultBean<List<AppIndexNewVo>> getBusinessList(String userSid, String appSid, String orgPath) {
return appIndexService.getBusinessList(userSid, appSid, orgPath);
}
@Override

23
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixMapper.java

@ -0,0 +1,23 @@
package com.yxt.anrui.portal.biz.sysappendix;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.portal.api.sysappendix.SysAppendix;
import com.yxt.anrui.portal.api.sysnotice.UrlQuery;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Mapper
public interface SysAppendixMapper extends BaseMapper<SysAppendix> {
List<SysAppendix> selectByLinkSid(String linkSid);
int deleteByLinkSid(String linkSid);
List<UrlQuery> selectByLinkSids(String sid);
}

21
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixMapper.xml

@ -0,0 +1,21 @@
<?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.portal.biz.sysappendix.SysAppendixMapper">
<select id="selectByLinkSid" resultType="com.yxt.anrui.portal.api.sysappendix.SysAppendix">
select *
from sys_appendix
where linkSid = #{linkSid}
</select>
<delete id="deleteByLinkSid">
delete
from sys_appendix
where linkSid = #{linkSid}
</delete>
<select id="selectByLinkSids" resultType="com.yxt.anrui.portal.api.sysnotice.UrlQuery">
select fileName name, filePath url
from sys_appendix
where linkSid = #{sid}
</select>
</mapper>

79
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysappendix/SysAppendixService.java

@ -0,0 +1,79 @@
package com.yxt.anrui.portal.biz.sysappendix;
import com.yxt.anrui.portal.api.sysappendix.SysAppendix;
import com.yxt.anrui.portal.api.sysappendix.SysAppendixQuery;
import com.yxt.anrui.portal.api.sysnotice.UrlQuery;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/1
**/
@Service
public class SysAppendixService extends MybatisBaseService<SysAppendixMapper, SysAppendix> {
@Autowired
private FileUploadComponent fileUploadComponent;
@Transactional(rollbackFor = Exception.class)
public int saveOrUpdateAppAppendix(SysAppendixQuery query) {
int i = 0;
String urlPrefix = fileUploadComponent.getUrlPrefix();
String uploadPath = fileUploadComponent.getUploadPath();
List<UrlQuery> list = query.getFilesList();
List<SysAppendix> appendixList = baseMapper.selectByLinkSid(query.getLinkSid());
// 去重列表(删除)
appendixList.stream().forEach(item -> {
item.setFilePath(urlPrefix + item.getFilePath());
});
List<String> s = list.stream().map(v->v.getUrl()).collect(Collectors.toList());
List<String> oldList = appendixList.stream().map(SysAppendix::getFilePath).collect(Collectors.toList());
List<String> delList = oldList.stream().filter(item -> !s.contains(item)).collect(Collectors.toList());
// 删除旧数据
baseMapper.deleteByLinkSid(query.getLinkSid());
// 增加
for (UrlQuery strs : list) {
String str = strs.getUrl();
String pathLoc = str.replace(urlPrefix, uploadPath);
pathLoc = pathLoc.replace("/", File.separator);
File file = new File(pathLoc);
String size = "";
if (file != null) {
size = fileUploadComponent.getPrintSize(file.length());
}
String suffix = str.substring(str.lastIndexOf(".") + 1); // 文件类型
String fileName = str.substring(str.lastIndexOf("/") + 1, str.lastIndexOf(".")); // 文件名
SysAppendix commonAppendix = new SysAppendix();
commonAppendix.setFileName(strs.getName());
commonAppendix.setFileType(suffix);
commonAppendix.setLinkSid(query.getLinkSid());
commonAppendix.setAttachType("");
commonAppendix.setFileSize(size);
commonAppendix.setFilePath(str.replace(urlPrefix, ""));
i = insert(commonAppendix);
}
// 删除原文件
if (i == 1) {
for (String path : delList) {
String pathLoc = path.replace(urlPrefix, uploadPath);
pathLoc = pathLoc.substring(0, pathLoc.lastIndexOf("/") + 1).replace("/", File.separator);
fileUploadComponent.deleteFiles(path, pathLoc);
}
}
return i;
}
public List<UrlQuery> selectByLinKSid(String sid) {
return baseMapper.selectByLinkSids(sid);
}
}

3
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeMapper.java

@ -4,6 +4,7 @@ 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.portal.api.sysnotice.NoticeAppListVo;
import com.yxt.anrui.portal.api.sysnotice.SysNotice;
import com.yxt.anrui.portal.api.sysnotice.SysNoticeListVo;
import com.yxt.anrui.portal.api.sysnotice.SysNoticeVo;
@ -22,4 +23,6 @@ public interface SysNoticeMapper extends BaseMapper<SysNotice> {
IPage<SysNoticeVo> selectPageVo(IPage<SysNotice> page, @Param(Constants.WRAPPER) QueryWrapper<SysNotice> qw);
List<SysNoticeListVo> getLists();
List<NoticeAppListVo> getAppDetails();
}

17
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeMapper.xml

@ -2,7 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.portal.biz.sysnotice.SysNoticeMapper">
<select id="selectPageVo" resultType="com.yxt.anrui.portal.api.sysnotice.SysNoticeVo">
select sn.sid,sn.title,
select sn.sid,
sn.title,
DATE_FORMAT(sn.createTime, '%Y-%m-%d') as createDate,
sn.validityDate,
case state
@ -17,10 +18,20 @@
</select>
<select id="getLists" resultType="com.yxt.anrui.portal.api.sysnotice.SysNoticeListVo">
select sid, title, DATE_FORMAT(createTime, '%Y-%m-%d') as createTime
select sid, title, DATE_FORMAT(createTime, '%Y-%m-%d') as createTime, pcUrl
from sys_notice
where state = 1 and (validityDate is null or validityDate = '' or validityDate>NOW())
where state = 1
and (validityDate is null or validityDate = '' or validityDate > NOW())
order by topping desc, createTime desc
limit 4
</select>
<select id="getAppDetails" resultType="com.yxt.anrui.portal.api.sysnotice.NoticeAppListVo">
select sid, title, moduleAction, app_type, args_json, moduleSid
from sys_notice
where state = 1
and (validityDate is null or validityDate = '' or validityDate > NOW())
order by topping desc, createTime desc
limit 6
</select>
</mapper>

15
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeRest.java

@ -60,4 +60,19 @@ public class SysNoticeRest implements SysNoticeFeign {
public ResultBean delBySids(String[] sids) {
return sysNoticeService.delAllBySids(sids);
}
@Override
public ResultBean savePushNotice(PushNoticeQuery query) {
return sysNoticeService.savePushNotice(query);
}
@Override
public ResultBean<List<NoticeAppListVo>> getAppDetails() {
return sysNoticeService.getAppDetails();
}
@Override
public ResultBean<SysNoticeAppDetails> getDetailsApp(String sid) {
return sysNoticeService.getDetailsApp(sid);
}
}

119
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysnotice/SysNoticeService.java

@ -2,9 +2,14 @@ package com.yxt.anrui.portal.biz.sysnotice;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubsetVersionVo;
import com.yxt.anrui.portal.api.sysappendix.SysAppendixQuery;
import com.yxt.anrui.portal.api.sysnotice.*;
import com.yxt.anrui.portal.biz.appsubsetversion.AppSubsetVersionService;
import com.yxt.anrui.portal.biz.sysappendix.SysAppendixService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -13,12 +18,13 @@ 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.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -31,6 +37,10 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private SysAppendixService sysAppendixService;
@Autowired
private AppSubsetVersionService appSubsetVersionService;
public PagerVo<SysNoticeVo> listPageVo(PagerQuery<SysNoticeQuery> pagerQuery) {
SysNoticeQuery query = pagerQuery.getParams();
@ -72,8 +82,20 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
sysNotice.setFiles(files);
SysAppendixQuery sysAppendixQuery = new SysAppendixQuery();
sysAppendixQuery.setLinkSid(sysNotice.getSid());
sysAppendixQuery.setFilesList(filss);
sysAppendixService.saveOrUpdateAppAppendix(sysAppendixQuery);
}
}
sysNotice.setCreateBySid(dto.getUserSid());
sysNotice.setApp_type("0");
sysNotice.setModuleAction("com.anrui.android.activity.NoticeActivity");
sysNotice.setModuleSid("fec4e243-491a-11ec-94cd-fa163e0cb33c");
Map<String, Object> maps = new HashMap<>();
maps.put("sid", sysNotice.getSid());
sysNotice.setArgs_json(JSONObject.toJSONString(maps));
sysNotice.setCreateType("0");
baseMapper.insert(sysNotice);
} else {
SysNotice sysNotice = fetchBySid(sid);
@ -81,6 +103,13 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
return rb.setMsg("该通知公告不存在");
}
BeanUtil.copyProperties(dto, sysNotice, "sid");
sysNotice.setApp_type("0");
sysNotice.setModuleAction("com.anrui.android.activity.NoticeActivity");
sysNotice.setModuleSid("fec4e243-491a-11ec-94cd-fa163e0cb33c");
Map<String, Object> maps = new HashMap<>();
maps.put("sid", sysNotice.getSid());
sysNotice.setArgs_json(JSONObject.toJSONString(maps));
sysNotice.setCreateType("0");
List<UrlQuery> filss = dto.getFilesList();
filss.removeAll(Collections.singleton(null));
if (!filss.isEmpty()) {
@ -89,6 +118,10 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
sysNotice.setFiles(files);
SysAppendixQuery sysAppendixQuery = new SysAppendixQuery();
sysAppendixQuery.setLinkSid(sysNotice.getSid());
sysAppendixQuery.setFilesList(filss);
sysAppendixService.saveOrUpdateAppAppendix(sysAppendixQuery);
}
} else {
sysNotice.setFiles("");
@ -110,10 +143,11 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
String filesss = sysNotice.getFiles();
List<UrlQuery> lists = new ArrayList<>();
if (StringUtils.isNotBlank(filesss)) {
List<String> fileList = Arrays.asList(filesss.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
List<UrlQuery> fileList = sysAppendixService.selectByLinKSid(sid);
for (int i = 0; i < fileList.size(); i++) {
UrlQuery urlQuery = new UrlQuery();
urlQuery.setUrl(fileList.get(i));
urlQuery.setUrl(fileUploadComponent.getUrlPrefix() + fileList.get(i).getUrl());
urlQuery.setName(fileList.get(i).getName());
lists.add(urlQuery);
}
sysNoticeDetailsVo.setFilesList(lists);
@ -171,4 +205,77 @@ public class SysNoticeService extends MybatisBaseService<SysNoticeMapper, SysNot
}
return rb.success();
}
public ResultBean savePushNotice(PushNoticeQuery query) {
ResultBean rb = ResultBean.fireFail();
SysNotice sysNotice = new SysNotice();
BeanUtil.copyProperties(query, sysNotice);
sysNotice.setCreateBySid(query.getUserSid());
sysNotice.setCreateType("1");
sysNotice.setTopping("是");
sysNotice.setType("公告");
sysNotice.setTypeKey("02");
baseMapper.insert(sysNotice);
return rb.success().setData(sysNotice);
}
public ResultBean<List<NoticeAppListVo>> getAppDetails() {
ResultBean<List<NoticeAppListVo>> rb = ResultBean.fireFail();
List<NoticeAppListVo> list = baseMapper.getAppDetails();
list.removeAll(Collections.singleton(null));
//定义的app的sid的index集合
Map<String, List<Integer>> appVer = new HashMap<>();
if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
NoticeAppListVo noticeAppListVo = list.get(i);
PushNoticeAppVo pageInfo = new PushNoticeAppVo();
pageInfo.setModuleAction(noticeAppListVo.getModuleAction());
pageInfo.setType(noticeAppListVo.getApp_type());
pageInfo.setJson(noticeAppListVo.getArgs_json());
String moduleSid = noticeAppListVo.getModuleSid();
List<Integer> integers = appVer.get(moduleSid);
if (integers == null) {
integers = new ArrayList<>();
}
integers.add(i);
appVer.put(moduleSid, integers);
noticeAppListVo.setPageInfo(pageInfo);
}
// 循环取map:若为同一个app版本,则只查询一次
for (String key : appVer.keySet()) {
AppSubsetVersionVo appSubsetVersions = appSubsetVersionService.selectByAppSidOne(key);
if (appSubsetVersions != null) {
List<Integer> integers = appVer.get(key);
for (int i = 0; i < integers.size(); i++) {
Integer integer = integers.get(i);
String path = fileUploadComponent.getUrlPrefix();
list.get(integer).getPageInfo().setPath(path + appSubsetVersions.getUpdateUrl());
list.get(integer).getPageInfo().setModuleVersion(appSubsetVersions.getVersionCode());
list.get(integer).getPageInfo().setModulePluginName(appSubsetVersions.getModulePluginName());
}
}
}
}
return rb.success().setData(list);
}
public ResultBean<SysNoticeAppDetails> getDetailsApp(String sid) {
ResultBean<SysNoticeAppDetails> rb = ResultBean.fireFail();
SysNoticeAppDetails sysNoticeAppDetails = new SysNoticeAppDetails();
SysNotice sysNotice = fetchBySid(sid);
if (sysNotice == null) {
return rb.setMsg("该通知公告不存在");
}
BeanUtil.copyProperties(sysNotice, sysNoticeAppDetails);
sysNoticeAppDetails.setCreateTime(DateUtil.format(sysNotice.getCreateTime(), "yyyy-MM-dd"));
String filesss = sysNotice.getFiles();
if (StringUtils.isNotBlank(filesss)) {
List<String> fileList = Arrays.asList(filesss.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
sysNoticeAppDetails.setFilesList(fileList);
}
}
return rb.success().setData(sysNoticeAppDetails);
}
}

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

@ -40,6 +40,9 @@ public enum LoanFileEnum {
DELIVERYFILES("026", "交回车辆出库车辆交付确认书"),
ASSESSFILES("027", "交回车辆出库车辆完整评估照片"),
OTHERFILES("028", "交回车辆出库其他附件"),
MORTGAGE_NOTICES("029", "解抵管理-解抵通知单"),
MORTGAGE_POROXY("030", "解抵管理-委托书"),
MORTGAGE_HANDOVER_INFO("031", "解抵管理-交接材料"),
;

73
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgage.java

@ -0,0 +1,73 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
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;
/**
* @author Administrator
* @description
* @date 2023/8/16 14:34
*/
@Data
@ApiModel(value = "解抵管理", description = "解抵管理")
@TableName("loan_relieve_mortgage")
public class LoanRelieveMortgage extends BaseEntity {
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("使用组织名称")
private String useOrgName;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
@ApiModelProperty("销售订单关联业务车辆sid")
private String busVinSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车辆sid")
private String vehSid;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("销售部门")
private String dept;
@ApiModelProperty("销售部门sid")
private String deptSid;
@ApiModelProperty("销售专员")
private String salesman;
@ApiModelProperty("销售专员sid")
private String salesmanSid;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("贷款人sid")
private String borrowerSid;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("客户Sid")
private String customerSid;
@ApiModelProperty("移交日期")
private Date transferDate;
@ApiModelProperty("接收文件")
private String receiveFiles;
@ApiModelProperty("快递单号")
private String trackingNo;
@ApiModelProperty("移交方式key")
private String transferWayKey;
@ApiModelProperty("移交方式value(001邮寄002自送)")
private String transferWayValue;
@ApiModelProperty("接收人/签收人")
private String recipient;
@ApiModelProperty("移交备注")
private String transferRemarks;
@ApiModelProperty("其他移交资料")
private String otherInformation;
@ApiModelProperty("资方")
private String bankName;
}

27
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageDto.java

@ -0,0 +1,27 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/8/21 9:12
*/
@Data
public class LoanRelieveMortgageDto implements Dto {
private String sid;
private String remarks;
private String userSid;
@ApiModelProperty("参数编码")
private String parameterNo;
@ApiModelProperty("参数名称")
private String parameterName;
@ApiModelProperty("参数值")
private String parameterValue;
@ApiModelProperty("使用组织全路径")
private String orgPath;
}

59
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFeign.java

@ -0,0 +1,59 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
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.*;
/**
* @description: 解抵管理
* @author: fan
* @date: 2023/7/6
**/
@Api(tags = "解抵管理")
@FeignClient(
contextId = "anrui-riskcenter-LoanRelieveMortgage",
name = "anrui-riskcenter",
path = "v1/loanrelievemortgage",
fallback = LoanRelieveMortgageFeignFallback.class)
public interface LoanRelieveMortgageFeign {
/**
* 根据条件分页查询数据的列表已测试
*
* @param pq
*/
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanRelieveMortgageVo>> listPage(@RequestBody PagerQuery<LoanRelieveMortgageQuery> pq);
@ApiOperation("新增")
@PostMapping("/saveRelieveMortgage")
@ResponseBody
public ResultBean saveRelieveMortgage(@RequestBody LoanRelieveMortgageSaveDto dto);
@ApiOperation("办理初始化")
@GetMapping("/mortgageInit")
@ResponseBody
public ResultBean<MortgageInitVo> mortgageInit(@RequestParam("sid") String sid);
@ApiOperation("办理操作")
@PostMapping("/mortgageHandle")
@ResponseBody
public ResultBean mortgageHandle(@RequestBody MortgageInitDto dto);
@ApiOperation("移交初始化/详情")
@GetMapping("/transferInit")
@ResponseBody
public ResultBean<LoanRelieveMortgageTransferVo> transferInit(@RequestParam("sid") String sid);
@ApiOperation("移交操作")
@PostMapping("/mortgageTransfer")
@ResponseBody
public ResultBean mortgageTransfer(@RequestBody LoanRelieveMortgageTransferDto dto);
}

45
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFeignFallback.java

@ -0,0 +1,45 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
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;
/**
* @author Administrator
* @description
* @date 2023/8/16 14:36
*/
@Component
public class LoanRelieveMortgageFeignFallback implements LoanRelieveMortgageFeign {
@Override
public ResultBean<PagerVo<LoanRelieveMortgageVo>> listPage(PagerQuery<LoanRelieveMortgageQuery> pq) {
return null;
}
@Override
public ResultBean saveRelieveMortgage(LoanRelieveMortgageSaveDto dto) {
return null;
}
@Override
public ResultBean<MortgageInitVo> mortgageInit(String sid) {
return null;
}
@Override
public ResultBean mortgageHandle(MortgageInitDto dto) {
return null;
}
@Override
public ResultBean<LoanRelieveMortgageTransferVo> transferInit(String sid) {
return null;
}
@Override
public ResultBean mortgageTransfer(LoanRelieveMortgageTransferDto dto) {
return null;
}
}

18
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageFile.java

@ -0,0 +1,18 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/17 9:18
*/
@Data
public class LoanRelieveMortgageFile {
private String filePath;
private String name;
private String size;
private String status;
private String uid;
private String url;
}

50
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageQuery.java

@ -0,0 +1,50 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/8/16 15:05
*/
@Data
public class LoanRelieveMortgageQuery implements Query {
@ApiModelProperty("移交状态")
private String state;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("销售部门")
private String dept;
@ApiModelProperty("销售专员")
private String salesman;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("移交开始日期")
private String transferStartDate;
@ApiModelProperty("移交结束日期")
private String transferEndDate;
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
private String menuSid;
@ApiModelProperty("菜单url")
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
}

53
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageSaveDto.java

@ -0,0 +1,53 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/2/1 17:35
*/
@Data
public class LoanRelieveMortgageSaveDto implements Dto {
@ApiModelProperty("创建者")
private String createBySid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("使用组织名称")
private String useOrgName;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
@ApiModelProperty("销售订单关联业务车辆sid")
private String busVinSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车辆sid")
private String vehSid;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("销售部门")
private String dept;
@ApiModelProperty("销售部门sid")
private String deptSid;
@ApiModelProperty("销售专员")
private String salesman;
@ApiModelProperty("销售专员sid")
private String salesmanSid;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("贷款人sid")
private String borrowerSid;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("客户Sid")
private String customerSid;
@ApiModelProperty("资方")
private String bankName;
}

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageTransferDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/2/2 15:08
*/
@Data
public class LoanRelieveMortgageTransferDto implements Dto {
private String sid;
// private List<LoanRelieveMortgageFile> notices = new ArrayList<>(); //解抵通知单
// private List<LoanRelieveMortgageFile> proxy = new ArrayList<>(); //委托书
private List<LoanRelieveMortgageFile> handoverFiles = new ArrayList<>(); //交接材料
// private List<String> confirmFiles = new ArrayList<>(); //接收确认文件
@ApiModelProperty("移交日期")
private String transferDate;
@ApiModelProperty("快递单号")
private String trackingNo;
@ApiModelProperty("移交方式key")
private String transferWayKey;
@ApiModelProperty("移交方式value(001邮寄002自送)")
private String transferWayValue;
@ApiModelProperty("接收人/签收人")
private String recipient;
@ApiModelProperty("移交备注")
private String transferRemarks;
@ApiModelProperty("其他移交资料")
private String otherInformation;
}

55
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageTransferVo.java

@ -0,0 +1,55 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/2/2 15:08
*/
@Data
public class LoanRelieveMortgageTransferVo implements Vo {
private String sid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("资方")
private String bankName;
private List<LoanRelieveMortgageFile> notices = new ArrayList<>(); //解抵通知单
private List<LoanRelieveMortgageFile> proxy = new ArrayList<>(); //委托书
private List<LoanRelieveMortgageFile> handoverFiles = new ArrayList<>(); //交接材料
private List<String> confirmFiles = new ArrayList<>(); //接收确认文件
@ApiModelProperty("移交日期")
private String transferDate;
@ApiModelProperty("快递单号")
private String trackingNo;
@ApiModelProperty("移交方式key")
private String transferWayKey;
@ApiModelProperty("移交方式value(001邮寄002自送)")
private String transferWayValue;
@ApiModelProperty("接收人/签收人")
private String recipient;
@ApiModelProperty("移交备注")
private String transferRemarks;
@ApiModelProperty("其他移交资料")
private String otherInformation;
}

43
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/LoanRelieveMortgageVo.java

@ -0,0 +1,43 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Administrator
* @description
* @date 2023/8/16 15:04
*/
@Data
public class LoanRelieveMortgageVo implements Vo {
private String sid;
@ApiModelProperty("移交状态")
private String state;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("销售部门")
private String dept;
@ApiModelProperty("销售专员")
private String salesman;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("移交日期")
private String transferDate;
}

40
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/MortgageInitDto.java

@ -0,0 +1,40 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/2/2 14:34
*/
@Data
public class MortgageInitDto implements Dto {
private String sid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("资方")
private String bankName;
private List<LoanRelieveMortgageFile> notices = new ArrayList<>(); //解抵通知单
private List<LoanRelieveMortgageFile> proxy = new ArrayList<>(); //委托书
private List<String> confirmFiles = new ArrayList<>(); //接收确认文件
private String remarks; //备注
}

42
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrelievemortgage/MortgageInitVo.java

@ -0,0 +1,42 @@
package com.yxt.anrui.riskcenter.api.loanrelievemortgage;
import com.yxt.anrui.riskcenter.api.loanredemptionapply.LoanRedemptionApplyFile;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/2/2 14:24
*/
@Data
public class MortgageInitVo implements Vo {
private String sid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("客户名称")
private String customer;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("消贷合同号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
private String bankContractNo;
@ApiModelProperty("贷款人")
private String borrowerName;
@ApiModelProperty("资方")
private String bankName;
private List<LoanRelieveMortgageFile> notices = new ArrayList<>(); //解抵通知单
private List<LoanRelieveMortgageFile> proxy = new ArrayList<>(); //委托书
private List<String> confirmFiles = new ArrayList<>(); //接收确认文件
private String remarks; //备注
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/BiddingVo.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesbidding;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Data
public class BiddingVo {
@ApiModelProperty("时间")
private String createTime;
@ApiModelProperty("报价")
private String price;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("报价人")
private String createByName;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBidding.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesbidding;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Data
public class LoanSecondarySalesBidding extends BaseEntity {
private static final long serialVersionUID = 5823145478364799224L;
@ApiModelProperty("报价人")
private String createByName;
private String mainSid;
@ApiModelProperty("报价")
private BigDecimal price;
@ApiModelProperty("分公司")
private String useOrgName;
private String useOrgSid;
private String orgSidPath;
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingDto.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesbidding;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Data
public class LoanSecondarySalesBiddingDto {
private String mainSid;
@ApiModelProperty("报价")
private String price;
@ApiModelProperty("机构全路径")
private String orgPath;
private String userSid;
}

36
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingFeign.java

@ -0,0 +1,36 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesbidding;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@FeignClient(
contextId = "anrui-riskcenter-LoanSecondarySalesBidding",
name = "anrui-riskcenter",
path = "v1/LoanSecondarySalesBidding",
fallback = LoanSecondarySalesBiddingFeignFallback.class)
public interface LoanSecondarySalesBiddingFeign {
@ApiOperation("保存")
@PostMapping("/save")
ResultBean save(@RequestBody LoanSecondarySalesBiddingDto dto);
@ApiOperation("竞价列表")
@GetMapping("/getList")
ResultBean<List<BiddingVo>> getList(@RequestParam("sid") String sid);
@ApiOperation("当前竞价最高")
@GetMapping("/getPrice")
ResultBean<String> getPrice(@RequestParam("sid") String sid);
}

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesbidding/LoanSecondarySalesBiddingFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesbidding;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Component
public class LoanSecondarySalesBiddingFeignFallback {
}

22
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageMapper.java

@ -0,0 +1,22 @@
package com.yxt.anrui.riskcenter.biz.loanrelievemortgage;
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.loanredemptionapply.RedemptionVinList;
import com.yxt.anrui.riskcenter.api.loanredemptionveh.LoanRedemptionVeh;
import com.yxt.anrui.riskcenter.api.loanrelievemortgage.LoanRelieveMortgage;
import com.yxt.anrui.riskcenter.api.loanrelievemortgage.LoanRelieveMortgageVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface LoanRelieveMortgageMapper extends BaseMapper<LoanRelieveMortgage> {
IPage<LoanRelieveMortgageVo> listPage(IPage<LoanRelieveMortgage> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRelieveMortgage> qw);
}

26
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageMapper.xml

@ -0,0 +1,26 @@
<?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.loanrelievemortgage.LoanRelieveMortgageMapper">
<select id="listPage" resultType="com.yxt.anrui.riskcenter.api.loanrelievemortgage.LoanRelieveMortgageVo">
SELECT sid,
`state`,
useOrgName,
dept,
salesman,
loanContractNo,
vinNo,
vehMark,
bankName,
bankContractNo,
customer,
borrowerName,
date_format(transferDate, '%Y-%m-%d') as transferDate
from loan_relieve_mortgage
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

54
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageRest.java

@ -0,0 +1,54 @@
package com.yxt.anrui.riskcenter.biz.loanrelievemortgage;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.anrui.riskcenter.api.loanredemptionveh.LoanRedemptionVehFeign;
import com.yxt.anrui.riskcenter.api.loanrelievemortgage.*;
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;
@Api(tags = "解抵管理")
@RestController
@RequestMapping("v1/loanrelievemortgage")
public class LoanRelieveMortgageRest implements LoanRelieveMortgageFeign {
@Autowired
private LoanRelieveMortgageService loanRelieveMortgageService;
@Override
public ResultBean<PagerVo<LoanRelieveMortgageVo>> listPage(PagerQuery<LoanRelieveMortgageQuery> pq) {
ResultBean<PagerVo<LoanRelieveMortgageVo>> rb = ResultBean.fireFail();
PagerVo<LoanRelieveMortgageVo> pv = loanRelieveMortgageService.listPage(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean saveRelieveMortgage(LoanRelieveMortgageSaveDto dto) {
return loanRelieveMortgageService.saveRelieveMortgage(dto);
}
@Override
public ResultBean<MortgageInitVo> mortgageInit(String sid) {
return loanRelieveMortgageService.mortgageInit(sid);
}
@Override
public ResultBean mortgageHandle(MortgageInitDto dto) {
return loanRelieveMortgageService.mortgageHandle(dto);
}
@Override
public ResultBean<LoanRelieveMortgageTransferVo> transferInit(String sid) {
return loanRelieveMortgageService.transferInit(sid);
}
@Override
public ResultBean mortgageTransfer(LoanRelieveMortgageTransferDto dto) {
return loanRelieveMortgageService.mortgageTransfer(dto);
}
}

369
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrelievemortgage/LoanRelieveMortgageService.java

@ -0,0 +1,369 @@
package com.yxt.anrui.riskcenter.biz.loanrelievemortgage;
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.base.api.basetrailer.BaseTrailer;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanredemptionapply.*;
import com.yxt.anrui.riskcenter.api.loanredemptionveh.LoanRedemptionVeh;
import com.yxt.anrui.riskcenter.api.loanrelievemortgage.*;
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 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.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @description:
* @author: fzz
* @date: 2023/7/6
**/
@Service
public class LoanRelieveMortgageService extends MybatisBaseService<LoanRelieveMortgageMapper, LoanRelieveMortgage> {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private BaseTrailerFeign baseTrailerFeign;
@Autowired
private LoanFileService loanFileService;
@Autowired
private FileUploadComponent fileUploadComponent;
public ResultBean saveRelieveMortgage(LoanRelieveMortgageSaveDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanRelieveMortgage entity = new LoanRelieveMortgage();
BeanUtil.copyProperties(dto, entity, "id", "sid");
int i = baseMapper.insert(entity);
if (i > 0) {
return rb.success();
}
return rb;
}
public PagerVo<LoanRelieveMortgageVo> listPage(PagerQuery<LoanRelieveMortgageQuery> pq) {
IPage<LoanRelieveMortgage> page = PagerUtil.queryToPage(pq);
LoanRelieveMortgageQuery pagerQuery = pq.getParams();
QueryWrapper<LoanRelieveMortgage> 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<LoanRelieveMortgageVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanRelieveMortgageVo> p = new PagerVo<>();
return p;
}
//=======================
//移交状态
if (StringUtils.isNotBlank(pagerQuery.getState())) {
qw.like("`state`", pagerQuery.getState());
}
//销售专员
if (StringUtils.isNotBlank(pagerQuery.getSalesman())) {
qw.like("salesman", pagerQuery.getSalesman());
}
//分公司
if (StringUtils.isNotBlank(pagerQuery.getUseOrgName())) {
qw.like("useOrgName", pagerQuery.getUseOrgName());
}
//申请部门
if (StringUtils.isNotBlank(pagerQuery.getDept())) {
qw.like("dept", pagerQuery.getDept());
}
//消贷合同号
if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) {
qw.like("loanContractNo", pagerQuery.getLoanContractNo());
}
//资方
if (StringUtils.isNotBlank(pagerQuery.getBankName())) {
qw.like("bankName", pagerQuery.getBankName());
}
//资方合同号
if (StringUtils.isNotBlank(pagerQuery.getBankContractNo())) {
qw.like("bankContractNo", pagerQuery.getBankContractNo());
}
//客户名称
if (StringUtils.isNotBlank(pagerQuery.getCustomer())) {
qw.like("customer", pagerQuery.getCustomer());
}
//贷款人
if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) {
qw.like("borrowerName", pagerQuery.getBorrowerName());
}
//车架号
if (StringUtils.isNotBlank(pagerQuery.getVinNo())) {
qw.like("vinNo", pagerQuery.getVinNo());
}
//车牌号
if (StringUtils.isNotBlank(pagerQuery.getVehMark())) {
qw.like("vehMark", pagerQuery.getVehMark());
}
String startDate = pagerQuery.getTransferStartDate();
String endDate = pagerQuery.getTransferEndDate();
qw.apply(StringUtils.isNotEmpty(startDate), "date_format (transferDate,'%Y-%m-%d') >= date_format('" + startDate + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(endDate), "date_format (transferDate,'%Y-%m-%d') <= date_format('" + endDate + "','%Y-%m-%d')"
);
qw.eq("isDelete", 0);
qw.orderBy(true, false, "`state`")
.orderBy(true, false, "createTime")
;
IPage<LoanRelieveMortgageVo> pagging = baseMapper.listPage(page, qw);
PagerVo<LoanRelieveMortgageVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<MortgageInitVo> mortgageInit(String sid) {
ResultBean rb = ResultBean.fireFail();
MortgageInitVo vo = new MortgageInitVo();
LoanRelieveMortgage entity = fetchBySid(sid);
if (null != entity) {
BeanUtil.copyProperties(entity, vo);
if (StringUtils.isNotBlank(entity.getReceiveFiles())) {
List<String> stringList = Arrays.asList(entity.getReceiveFiles().split(","));
vo.setConfirmFiles(stringList);
}
CrmCustomerTemp customerTemp = crmCustomerTempFeign.fetchEntity(entity.getCustomerSid()).getData();
if (null != customerTemp) {
if (StringUtils.isNotBlank(customerTemp.getMobile())) {
vo.setMobile(customerTemp.getMobile());
}
}
List<BaseTrailer> trailers = baseTrailerFeign.getByVehSid(entity.getVehSid()).getData();
if (!trailers.isEmpty()) {
StringBuffer sb = new StringBuffer();
sb.append(entity.getVinNo()).append("/");
for (BaseTrailer trailer : trailers) {
sb.append(trailer.getVinNo()).append("/");
}
if (sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
vo.setVinNo(sb.toString());
}
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.MORTGAGE_NOTICES.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanRelieveMortgageFile> filess = new ArrayList<>();
for (String file : files) {
LoanRelieveMortgageFile f = new LoanRelieveMortgageFile();
f.setUrl(file);
filess.add(f);
}
vo.setNotices(filess);
}
List<LoanFile> fileList2 = loanFileService.selectByLinkSid(sid, LoanFileEnum.MORTGAGE_POROXY.getAttachType());
fileList2.removeAll(Collections.singleton(null));
if (!fileList2.isEmpty()) {
List<String> files = fileList2.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanRelieveMortgageFile> filess = new ArrayList<>();
for (String file : files) {
LoanRelieveMortgageFile f = new LoanRelieveMortgageFile();
f.setUrl(file);
filess.add(f);
}
vo.setProxy(filess);
}
}
return rb.success().setData(vo);
}
@Transactional(rollbackFor = Exception.class)
public ResultBean mortgageHandle(MortgageInitDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
LoanRelieveMortgage entity = fetchBySid(sid);
StringBuffer sb = new StringBuffer();
if (null != entity) {
if (StringUtils.isNotBlank(dto.getRemarks())) {
entity.setRemarks(dto.getRemarks());
}
if (!dto.getConfirmFiles().isEmpty()) {
dto.getConfirmFiles().stream().forEach(s -> {
sb.append(s).append(",");
});
if (sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
entity.setReceiveFiles(sb.toString());
}
entity.setState(2);
baseMapper.updateById(entity);
//删除附件表中关于该linkSid的文件
loanFileService.delByLinkSidOrType(sid, LoanFileEnum.MORTGAGE_NOTICES.getAttachType());
loanFileService.delByLinkSidOrType(sid, LoanFileEnum.MORTGAGE_POROXY.getAttachType());
List<LoanRelieveMortgageFile> filess = dto.getNotices();
if (!filess.isEmpty()) {
List<String> files = new ArrayList<>();
for (LoanRelieveMortgageFile file : filess) {
files.add(file.getUrl());
}
loanFileService.saveAll(sid, files, LoanFileEnum.MORTGAGE_NOTICES.getAttachType());
}
List<LoanRelieveMortgageFile> pfiless = dto.getProxy();
if (!pfiless.isEmpty()) {
List<String> files = new ArrayList<>();
for (LoanRelieveMortgageFile file : pfiless) {
files.add(file.getUrl());
}
loanFileService.saveAll(sid, files, LoanFileEnum.MORTGAGE_POROXY.getAttachType());
}
}
return rb.success();
}
public ResultBean<LoanRelieveMortgageTransferVo> transferInit(String sid) {
ResultBean rb = ResultBean.fireFail();
LoanRelieveMortgageTransferVo vo = new LoanRelieveMortgageTransferVo();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
LoanRelieveMortgage entity = fetchBySid(sid);
if (null != entity) {
BeanUtil.copyProperties(entity, vo);
if (StringUtils.isNotBlank(entity.getReceiveFiles())) {
List<String> stringList = Arrays.asList(entity.getReceiveFiles().split(","));
vo.setConfirmFiles(stringList);
}
if (null != entity.getTransferDate()) {
vo.setTransferDate(sdf.format(entity.getTransferDate()));
}
CrmCustomerTemp customerTemp = crmCustomerTempFeign.fetchEntity(entity.getCustomerSid()).getData();
if (null != customerTemp) {
if (StringUtils.isNotBlank(customerTemp.getMobile())) {
vo.setMobile(customerTemp.getMobile());
}
}
List<BaseTrailer> trailers = baseTrailerFeign.getByVehSid(entity.getVehSid()).getData();
if (!trailers.isEmpty()) {
StringBuffer sb = new StringBuffer();
sb.append(entity.getVinNo()).append("/");
for (BaseTrailer trailer : trailers) {
sb.append(trailer.getVinNo()).append("/");
}
if (sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
vo.setVinNo(sb.toString());
}
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.MORTGAGE_NOTICES.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanRelieveMortgageFile> filess = new ArrayList<>();
for (String file : files) {
LoanRelieveMortgageFile f = new LoanRelieveMortgageFile();
f.setUrl(file);
filess.add(f);
}
vo.setNotices(filess);
}
List<LoanFile> fileList2 = loanFileService.selectByLinkSid(sid, LoanFileEnum.MORTGAGE_POROXY.getAttachType());
fileList2.removeAll(Collections.singleton(null));
if (!fileList2.isEmpty()) {
List<String> files = fileList2.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanRelieveMortgageFile> filess = new ArrayList<>();
for (String file : files) {
LoanRelieveMortgageFile f = new LoanRelieveMortgageFile();
f.setUrl(file);
filess.add(f);
}
vo.setProxy(filess);
}
List<LoanFile> fileList3 = loanFileService.selectByLinkSid(sid, LoanFileEnum.MORTGAGE_HANDOVER_INFO.getAttachType());
fileList3.removeAll(Collections.singleton(null));
if (!fileList3.isEmpty()) {
List<String> files = fileList3.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
List<LoanRelieveMortgageFile> filess = new ArrayList<>();
for (String file : files) {
LoanRelieveMortgageFile f = new LoanRelieveMortgageFile();
f.setUrl(file);
filess.add(f);
}
vo.setHandoverFiles(filess);
}
}
return rb.success().setData(vo);
}
@Transactional(rollbackFor = Exception.class)
public ResultBean mortgageTransfer(LoanRelieveMortgageTransferDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
LoanRelieveMortgage entity = fetchBySid(sid);
StringBuffer sb = new StringBuffer();
if (null != entity) {
BeanUtil.copyProperties(dto, entity, "id", "sid");
entity.setState(0);
baseMapper.updateById(entity);
//删除附件表中关于该linkSid的文件
loanFileService.delByLinkSidOrType(sid, LoanFileEnum.MORTGAGE_HANDOVER_INFO.getAttachType());
List<LoanRelieveMortgageFile> hfiless = dto.getHandoverFiles();
if (!hfiless.isEmpty()) {
List<String> files = new ArrayList<>();
for (LoanRelieveMortgageFile file : hfiless) {
files.add(file.getUrl());
}
loanFileService.saveAll(sid, files, LoanFileEnum.MORTGAGE_HANDOVER_INFO.getAttachType());
}
}
return rb.success();
}
}

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml

@ -236,7 +236,19 @@
<select id="repaymentStatistics"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentStatisticsVo">
SELECT DISTINCT
a.*
a.*,
(SELECT
(fjj.reveivableMoney - fjj.m)
FROM
(SELECT
IFNULL((SELECT SUM(subscriptionMoney) FROM anrui_fin.fin_selected_receivables_detailed as s
WHERE s.auditState = '3'
and s.receivablesSid = fj.sid),0) as m,
fj.*
FROM
(SELECT j.busSid,j.sid,j.reveivableMoney FROM anrui_fin.fin_uncollected_receivables_detailed_jr as j
WHERE j.payCostTitleKey = '006') as fj ) as fjj
WHERE fjj.busSid = a.sid) as fund
FROM
(
SELECT
@ -257,7 +269,6 @@
pd.period,
pd.paymentMoney,
pd.paymentInterest as bankBeInter,
pd.fund,
pd.dueMoney,
t.repaidMoney,
t.outstandingMoney,

51
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java

@ -3,6 +3,7 @@ package com.yxt.anrui.riskcenter.biz.loansecondarysalesapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@ -17,6 +18,8 @@ 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.sysnotice.PushNoticeQuery;
import com.yxt.anrui.portal.api.sysnotice.SysNoticeFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -35,6 +38,7 @@ import com.yxt.anrui.riskcenter.api.loanreturninboundtrailer.LoanReturnInboundTr
import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.*;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBiddingDto;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCost;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
@ -44,6 +48,7 @@ import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService;
import com.yxt.anrui.riskcenter.biz.loanreturninboundapply.LoanReturnInboundApplyService;
import com.yxt.anrui.riskcenter.biz.loanreturnvehledger.LoanReturnVehLedgerService;
import com.yxt.anrui.riskcenter.biz.loansecondarysalesbidding.LoanSecondarySalesBiddingService;
import com.yxt.anrui.riskcenter.biz.loansecondarysalescost.LoanSecondarySalesCostMapper;
import com.yxt.anrui.riskcenter.biz.loansecondarysalescost.LoanSecondarySalesCostService;
import com.yxt.anrui.riskcenter.biz.loansecondarysalesveh.LoanSecondarySalesVehService;
@ -65,6 +70,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@ -109,6 +117,10 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
private LoanSolutionsDetailService loanSolutionsDetailService;
@Autowired
private LoanSecondarySalesCostMapper loanSecondarySalesCostMapper;
@Autowired
private SysNoticeFeign sysNoticeFeign;
@Autowired
private LoanSecondarySalesBiddingService loanSecondarySalesBiddingService;
public PagerVo<LoanSecondarySalesApplyVo> listPageVo(PagerQuery<LoanSecondarySalesApplyQuery> pq) {
LoanSecondarySalesApplyQuery query = pq.getParams();
@ -469,7 +481,44 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesApply = fetchBySid(businessSid);
loanSecondarySalesApply.setCloseDate(DateUtil.today());
baseMapper.updateById(loanSecondarySalesApply);
//推公告
PushNoticeQuery pushNoticeQuery = new PushNoticeQuery();
pushNoticeQuery.setApp_type("2");
pushNoticeQuery.setModuleAction("com.anrui.android.plugin.riskcontrol.activity.DetailCarSecondSaleActivity");
pushNoticeQuery.setUserSid(bv.getUserSid());
pushNoticeQuery.setModuleSid("fec4e243-491a-11ec-94cd-fa163e0cb33c");
pushNoticeQuery.setSid(businessSid);
pushNoticeQuery.setCreateTime(DateUtil.today());
pushNoticeQuery.setPcUrl("riskcenter/#/notificationannouncement/relation/secondarysaleannouncement");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String closeDates = "";
try {
Date classDate = format.parse(DateUtil.today());
Calendar calendar = Calendar.getInstance(); //使用Calendar日历类对日期进行加减
calendar.setTime(classDate);
calendar.add(Calendar.DAY_OF_MONTH, +3);
classDate = calendar.getTime();
closeDates = format.format(classDate);
} catch (ParseException e) {
e.printStackTrace();
}
pushNoticeQuery.setTitle(loanSecondarySalesApply.getUseOrgName() + "二手车销售公示(竞价截止日期:" + closeDates + ")");
pushNoticeQuery.setValidityDate(closeDates);
Map<String, Object> maps = new HashMap<>();
maps.put("sid", businessSid);
pushNoticeQuery.setArgs_json(JSONObject.toJSONString(maps));
ResultBean resultBeans = sysNoticeFeign.savePushNotice(pushNoticeQuery);
LoanSecondarySalesBiddingDto loanSecondarySalesBiddingDto = new LoanSecondarySalesBiddingDto();
loanSecondarySalesBiddingDto.setMainSid(businessSid);
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(businessSid);
BigDecimal prices = BigDecimal.ZERO;
if (loanSecondarySalesCost.getVehPrice().compareTo(loanSecondarySalesCost.getVehicleEvaluation()) > 0) {
prices = loanSecondarySalesCost.getVehPrice();
}
loanSecondarySalesBiddingDto.setPrice(prices.toString());
loanSecondarySalesBiddingDto.setUserSid(loanSecondarySalesApply.getCreateBySid());
loanSecondarySalesBiddingDto.setOrgPath(loanSecondarySalesApply.getOrgSidPath());
ResultBean resultBean1 = loanSecondarySalesBiddingService.saveBidding(loanSecondarySalesBiddingDto);
} else {
//极光推送
loanSecondarySalesApply = fetchBySid(businessSid);

24
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingMapper.java

@ -0,0 +1,24 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalesbidding;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.BiddingVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBidding;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Mapper
public interface LoanSecondarySalesBiddingMapper extends BaseMapper<LoanSecondarySalesBidding> {
LoanSecondarySalesBidding selectByMainSid(String mainSid);
List<BiddingVo> getList(String sid);
String getPrice(String sid);
}

27
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingMapper.xml

@ -0,0 +1,27 @@
<?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.loansecondarysalesbidding.LoanSecondarySalesBiddingMapper">
<select id="selectByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBidding">
select *
from loan_secondary_sales_bidding
where mainSid = #{mainSid}
order by price desc
limit 1
</select>
<select id="getList" resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.BiddingVo">
select DATE_FORMAT(createTime, '%Y-%m-%d') as createTime, createByName, price, useOrgName
from loan_secondary_sales_bidding
where mainSid = #{sid}
order by price desc
</select>
<select id="getPrice" resultType="java.lang.String">
select price
from loan_secondary_sales_bidding
where mainSid = #{sid}
order by price desc
limit 1
</select>
</mapper>

41
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingRest.java

@ -0,0 +1,41 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalesbidding;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.BiddingVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBiddingDto;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBiddingFeign;
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;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@RestController
@RequestMapping("v1/LoanSecondarySalesBidding")
@Api(tags = "二次销售公示竞价")
public class LoanSecondarySalesBiddingRest implements LoanSecondarySalesBiddingFeign {
@Autowired
private LoanSecondarySalesBiddingService loanSecondarySalesBiddingService;
@Override
public ResultBean save(LoanSecondarySalesBiddingDto dto) {
return loanSecondarySalesBiddingService.saveBidding(dto);
}
@Override
public ResultBean<List<BiddingVo>> getList(String sid) {
return loanSecondarySalesBiddingService.getList(sid);
}
@Override
public ResultBean<String> getPrice(String sid) {
return loanSecondarySalesBiddingService.getPrice(sid);
}
}

84
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesbidding/LoanSecondarySalesBiddingService.java

@ -0,0 +1,84 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalesbidding;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.BiddingVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBidding;
import com.yxt.anrui.riskcenter.api.loansecondarysalesbidding.LoanSecondarySalesBiddingDto;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/2
**/
@Service
public class LoanSecondarySalesBiddingService extends MybatisBaseService<LoanSecondarySalesBiddingMapper, LoanSecondarySalesBidding> {
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysUserFeign sysUserFeign;
public ResultBean saveBidding(LoanSecondarySalesBiddingDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesBidding loanSecondarySalesBidding = new LoanSecondarySalesBidding();
loanSecondarySalesBidding.setCreateBySid(dto.getMainSid());
loanSecondarySalesBidding.setMainSid(dto.getMainSid());
loanSecondarySalesBidding.setOrgSidPath(dto.getOrgPath());
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
if ("0".equals(useOrgSid)) {
return rb.setMsg("您所在机构没有分公司,不允许竞价");
}
loanSecondarySalesBidding.setUseOrgSid(useOrgSid);
//创建组织使用组织
ResultBean<SysOrganizationVo> organizationResultBean = sysOrganizationFeign.fetchBySid(useOrgSid);
if (organizationResultBean.getData() != null) {
loanSecondarySalesBidding.setUseOrgName(organizationResultBean.getData().getName());
}
//根据用户sid查询人员姓名
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
loanSecondarySalesBidding.setCreateByName(userVoResultBean.getData().getName());
//查询最高竞价
LoanSecondarySalesBidding loanSecondarySalesBidding1 = baseMapper.selectByMainSid(dto.getMainSid());
if (StringUtils.isNotBlank(dto.getPrice())) {
if ((new BigDecimal(dto.getPrice()).subtract(loanSecondarySalesBidding1.getPrice()).compareTo(new BigDecimal("1000"))) < 0) {
return rb.setMsg("确认失败,每次竞价幅度需不低于1000元");
}
loanSecondarySalesBidding.setPrice(new BigDecimal(dto.getPrice()));
} else {
return rb.setMsg("请输入您的报价");
}
baseMapper.insert(loanSecondarySalesBidding);
return rb.success();
}
public ResultBean<List<BiddingVo>> getList(String sid) {
ResultBean<List<BiddingVo>> rb = ResultBean.fireFail();
List<BiddingVo> list = baseMapper.getList(sid);
list.removeAll(Collections.singleton(null));
return rb.success().setData(list);
}
public ResultBean<String> getPrice(String sid) {
ResultBean<String> rb = ResultBean.fireFail();
String price = baseMapper.getPrice(sid);
return rb.success().setData(price);
}
}

35
doc/databases/portal_tables.sql

@ -841,9 +841,44 @@ CREATE TABLE `sys_notice`
`topping` varchar(500) DEFAULT NULL COMMENT '是否置顶',
`content` text DEFAULT NULL COMMENT '内容',
`files` text DEFAULT NULL COMMENT '附件',
`pcUrl` text DEFAULT NULL COMMENT 'PC地址',
`appUrl` text DEFAULT NULL COMMENT 'app地址',
`createType` varchar(200) DEFAULT NULL COMMENT '生成类型:0添加,1自动',
`moduleAction` varchar(500) DEFAULT NULL COMMENT '移动端页面地址',
`app_type` varchar(500) DEFAULT NULL COMMENT '0.内置Activity 1.内置WebView 2.RePlugin插件',
`args_json` varchar(500) DEFAULT NULL COMMENT '参数',
`moduleSid` varchar(500) DEFAULT NULL COMMENT '插件sid',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 18
DEFAULT CHARSET = utf8 COMMENT ='通知公告';
DROP TABLE IF EXISTS `sys_appendix`;
CREATE TABLE `sys_appendix`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(11) NOT NULL DEFAULT '0' COMMENT '记录版本,锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`modifyTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录最后修改时间',
`isEnable` int(11) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用',
`state` int(11) DEFAULT '1' COMMENT '状态',
`isDelete` int(11) DEFAULT NULL COMMENT '记录是否被删除,0:未删除,1:已经删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建者',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者',
`fileName` text DEFAULT NULL COMMENT '文件名',
`fileType` varchar(500) DEFAULT NULL COMMENT '文件类型',
`name` varchar(500) DEFAULT NULL COMMENT '上传人姓名',
`linkSid` varchar(500) DEFAULT NULL COMMENT '关联业务对象sid',
`attachType` varchar(500) DEFAULT NULL COMMENT '附件类型',
`fileSize` varchar(200) DEFAULT NULL COMMENT '文件大小',
`filePath` text DEFAULT NULL COMMENT '文件的相对路径',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 18
DEFAULT CHARSET = utf8 COMMENT ='附件表';

27
doc/databases/risk_center.sql

@ -1698,6 +1698,33 @@ CREATE TABLE `loan_secondary_sales_customer`
DROP TABLE IF EXISTS `loan_secondary_sales_bidding`;
CREATE TABLE `loan_secondary_sales_bidding`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`createByName` varchar(64) DEFAULT NULL COMMENT '报价人',
`mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid',
`price` decimal(10, 2) DEFAULT NULL COMMENT '报价',
`useOrgName` varchar(500) DEFAULT NULL COMMENT '分公司',
`useOrgSid` varchar(64) DEFAULT NULL COMMENT '分公司sid',
`orgSidPath` text DEFAULT NULL COMMENT '机构sid全路径',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='二次销售公示竞价';

Loading…
Cancel
Save