13 changed files with 351 additions and 0 deletions
Split View
Diff Options
-
5dating-agency-mall-server/pom.xml
-
33dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java
-
34dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/request/UserPageCustomizedServiceContractQueryParams.java
-
22dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractImageVo.java
-
29dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractTermVo.java
-
72dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserPageCustomizedServiceContractVo.java
-
9dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractDao.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractImageDao.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractTermDao.java
-
21dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ContractRepositoryImpl.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java
-
56dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java
-
49dating-agency-mall-server/src/main/resources/mapper/contract/ContractMapper.xml
@ -0,0 +1,33 @@ |
|||
package com.qniao.dam.api.query.contract.user; |
|||
|
|||
import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; |
|||
import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; |
|||
import com.qniao.dam.query.contract.ContractQueryService; |
|||
import com.qniao.dau.infrastructure.constant.RequestHeaderFields; |
|||
import com.qniao.domain.QnPage; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Api(tags = "合同") |
|||
@RestController |
|||
@RequestMapping("user") |
|||
public class ContractUserQueryController { |
|||
|
|||
@Resource |
|||
private ContractQueryService contractQueryService; |
|||
|
|||
@GetMapping("page/customized-service-contract/by-dating-store") |
|||
@ApiOperation("线下门店查询合同列表 -- 线下门店") |
|||
public QnPage<UserPageCustomizedServiceContractVo> userPageCustomizedServiceContractByDatingStore(PageUtil pageUtil, |
|||
UserPageCustomizedServiceContractQueryParams queryParams, |
|||
@RequestParam(value = "userId") Long userId, |
|||
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID) Long orgId) { |
|||
queryParams.setDatingStoreOrgId(orgId); |
|||
return PageUtil.convert(contractQueryService.pageCustomizedServiceContract(queryParams, pageUtil), UserPageCustomizedServiceContractVo.class); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
package com.qniao.dam.api.query.contract.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.time.LocalDate; |
|||
|
|||
@Data |
|||
public class UserPageCustomizedServiceContractQueryParams { |
|||
|
|||
private Long datingStoreOrgId; |
|||
|
|||
@ApiModelProperty("客户姓名") |
|||
private String datingStoreCustomerName; |
|||
|
|||
@ApiModelProperty("客户身份证") |
|||
private String datingStoreCustomerIdentityNo; |
|||
|
|||
@ApiModelProperty("客户联系号码") |
|||
private String datingStoreCustomerPhone; |
|||
|
|||
@ApiModelProperty("签订日期开始") |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
private LocalDate signDateFrom; |
|||
|
|||
@ApiModelProperty("签订日期结束") |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd") |
|||
private LocalDate signDateTo; |
|||
|
|||
@ApiModelProperty("状态") |
|||
private Integer status; |
|||
|
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
package com.qniao.dam.api.query.contract.user.response; |
|||
|
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractImageTypeEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class ContractImageVo { |
|||
|
|||
@ApiModelProperty("合同唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long contractId; |
|||
|
|||
@ApiModelProperty("影像类型") |
|||
private ContractImageTypeEnum type; |
|||
|
|||
@ApiModelProperty("url") |
|||
private String url; |
|||
|
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
package com.qniao.dam.api.query.contract.user.response; |
|||
|
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractTermNameEnum; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractTermUnitEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class ContractTermVo { |
|||
|
|||
@ApiModelProperty("合同唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long contractId; |
|||
|
|||
@ApiModelProperty("名称") |
|||
private ContractTermNameEnum name; |
|||
|
|||
@ApiModelProperty("展示名称") |
|||
private String displayName; |
|||
|
|||
@ApiModelProperty("类型") |
|||
private ContractTermUnitEnum type; |
|||
|
|||
@ApiModelProperty("数值") |
|||
private String value; |
|||
|
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
package com.qniao.dam.api.query.contract.user.response; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractStatusEnum; |
|||
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.time.LocalDate; |
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class UserPageCustomizedServiceContractVo { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long id; |
|||
|
|||
@ApiModelProperty("甲方身份类型") |
|||
private IdentityTypeEnum firstPartyIdentityType; |
|||
|
|||
@ApiModelProperty("甲方标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long firstPartyId; |
|||
|
|||
@ApiModelProperty("甲方经办人名称") |
|||
private String firstPartyName; |
|||
|
|||
@ApiModelProperty("甲方身份编号 身份证、统一信用代码") |
|||
private String firstPartyIdentityNo; |
|||
|
|||
@ApiModelProperty("乙方身份类型") |
|||
private IdentityTypeEnum secondPartyIdentityType; |
|||
|
|||
@ApiModelProperty("乙方标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long secondPartyId; |
|||
|
|||
@ApiModelProperty("乙方经办人名称") |
|||
private String secondPartyName; |
|||
|
|||
@ApiModelProperty("乙方身份编号 身份证、统一信用代码") |
|||
private String secondPartyIdentityNo; |
|||
|
|||
@ApiModelProperty("合同金额") |
|||
private BigDecimal amount; |
|||
|
|||
@ApiModelProperty("签订日期") |
|||
@JsonFormat(pattern = "yyyy-MM-dd") |
|||
private LocalDate signDate; |
|||
|
|||
@ApiModelProperty("开始日期") |
|||
@JsonFormat(pattern = "yyyy-MM-dd") |
|||
private LocalDate startDate; |
|||
|
|||
@ApiModelProperty("开始日期") |
|||
@JsonFormat(pattern = "yyyy-MM-dd") |
|||
private LocalDate endDate; |
|||
|
|||
@ApiModelProperty("状态") |
|||
private ContractStatusEnum status; |
|||
|
|||
@ApiModelProperty("合同备注") |
|||
private String remark; |
|||
|
|||
private List<ContractTermVo> contractTermList; |
|||
|
|||
private List<ContractImageVo> contractImageList; |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.contract; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; |
|||
|
|||
public interface ContractImageDao extends BaseMapper<ContractImage> { |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.contract; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; |
|||
|
|||
public interface ContractTermDao extends BaseMapper<ContractTerm> { |
|||
} |
|||
@ -1,5 +1,12 @@ |
|||
package com.qniao.dam.query.contract; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; |
|||
import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; |
|||
import com.qniao.domain.QnPage; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
|
|||
public interface ContractQueryService { |
|||
|
|||
IPage<UserPageCustomizedServiceContractVo> pageCustomizedServiceContract(UserPageCustomizedServiceContractQueryParams queryParams, PageUtil pageUtil); |
|||
} |
|||
@ -1,9 +1,65 @@ |
|||
package com.qniao.dam.query.contract.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; |
|||
import com.qniao.dam.api.query.contract.user.response.ContractImageVo; |
|||
import com.qniao.dam.api.query.contract.user.response.ContractTermVo; |
|||
import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; |
|||
import com.qniao.dam.infrastructure.persistent.dao.contract.ContractDao; |
|||
import com.qniao.dam.infrastructure.persistent.dao.contract.ContractImageDao; |
|||
import com.qniao.dam.infrastructure.persistent.dao.contract.ContractTermDao; |
|||
import com.qniao.dam.query.contract.ContractQueryService; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Service |
|||
public class ContractQueryServiceImpl implements ContractQueryService { |
|||
|
|||
@Resource |
|||
private ContractDao contractDao; |
|||
@Resource |
|||
private ContractTermDao contractTermDao; |
|||
@Resource |
|||
private ContractImageDao contractImageDao; |
|||
|
|||
@Override |
|||
public IPage<UserPageCustomizedServiceContractVo> pageCustomizedServiceContract(UserPageCustomizedServiceContractQueryParams queryParams, |
|||
PageUtil pageUtil) { |
|||
IPage<UserPageCustomizedServiceContractVo> page = contractDao.pageCustomizedServiceContract(pageUtil.toPageWithoutOrders(), queryParams); |
|||
if (page.getRecords().size() > 0) { |
|||
List<Long> contractIdList = page.getRecords().stream().map(UserPageCustomizedServiceContractVo::getId).collect(Collectors.toList()); |
|||
Map<Long, List<ContractTermVo>> allContractTermVoMap = mapContractTermVo(contractIdList); |
|||
Map<Long, List<ContractImageVo>> allContractImageVoMap = mapContractImageVo(contractIdList); |
|||
page.getRecords().forEach(record -> { |
|||
record.setContractTermList(allContractTermVoMap.get(record.getId())); |
|||
record.setContractImageList(allContractImageVoMap.get(record.getId())); |
|||
}); |
|||
} |
|||
|
|||
return page; |
|||
} |
|||
|
|||
private Map<Long, List<ContractImageVo>> mapContractImageVo(List<Long> contractIdList) { |
|||
List<ContractImage> contractImageList = contractImageDao.selectList(new LambdaQueryWrapper<ContractImage>() |
|||
.in(ContractImage::getContractId, contractIdList)); |
|||
List<ContractImageVo> contractImageVoList = TypeConvertUtils.convert(contractImageList, ContractImageVo.class); |
|||
return contractImageVoList.stream().collect(Collectors.groupingBy(ContractImageVo::getContractId)); |
|||
} |
|||
|
|||
private Map<Long, List<ContractTermVo>> mapContractTermVo(List<Long> contractIdList) { |
|||
List<ContractTerm> contractTermList = contractTermDao.selectList(new LambdaQueryWrapper<ContractTerm>() |
|||
.in(ContractTerm::getContractId, contractIdList)); |
|||
List<ContractTermVo> contractTermVoList = TypeConvertUtils.convert(contractTermList, ContractTermVo.class); |
|||
return contractTermVoList.stream().collect(Collectors.groupingBy(ContractTermVo::getContractId)); |
|||
} |
|||
} |
|||
@ -0,0 +1,49 @@ |
|||
<?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.qniao.dam.infrastructure.persistent.dao.contract.ContractDao"> |
|||
|
|||
|
|||
<select id="pageCustomizedServiceContract" |
|||
resultType="com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo"> |
|||
SELECT |
|||
dac.id, |
|||
dac.first_party_identity_type, |
|||
dac.first_party_id, |
|||
dac.first_party_name, |
|||
dac.first_party_identity_no, |
|||
dac.second_party_identity_type, |
|||
dac.second_party_id, |
|||
dac.second_party_name, |
|||
dac.second_party_identity_no, |
|||
dac.amount, |
|||
dac.sign_date, |
|||
dac.start_date, |
|||
dac.end_date, |
|||
dac.status, |
|||
dac.remark |
|||
from da_contract as dac |
|||
LEFT JOIN da_dating_store_customer as dadsc on dac.first_party_id=dadsc.id |
|||
where dac.is_delete=0 |
|||
<if test="queryParams.status != null"> |
|||
and dac.status = #{queryParams.status} |
|||
</if> |
|||
<if test="queryParams.datingStoreOrgId != null"> |
|||
and dadsc.dating_store_org_id = #{queryParams.datingStoreOrgId} |
|||
</if> |
|||
<if test="queryParams.datingStoreCustomerName != null and queryParams.datingStoreCustomerName != '' "> |
|||
AND dac.first_party_name LIKE CONCAT('%', TRIM(#{queryParams.datingStoreCustomerName}), '%') |
|||
</if> |
|||
<if test="queryParams.datingStoreCustomerIdentityNo != null and queryParams.datingStoreCustomerIdentityNo != '' "> |
|||
AND dac.first_party_identity_no LIKE CONCAT('%', TRIM(#{queryParams.datingStoreCustomerIdentityNo}), '%') |
|||
</if> |
|||
<if test="queryParams.datingStoreCustomerPhone != null and queryParams.datingStoreCustomerPhone != '' "> |
|||
AND dadsc.phone LIKE CONCAT('%', TRIM(#{queryParams.datingStoreCustomerPhone}), '%') |
|||
</if> |
|||
<if test="queryParams.signDateFrom != null and queryParams.signDateTo != null"> |
|||
and dac.sign_date BETWEEN #{queryParams.signDateFrom} and #{queryParams.signDateTo} |
|||
</if> |
|||
ORDER BY dac.sign_date desc |
|||
</select> |
|||
|
|||
|
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save