Browse Source

合同列表

master
张彭杰 8 months ago
parent
commit
ec61cc2faf
13 changed files with 351 additions and 0 deletions
  1. 5
      dating-agency-mall-server/pom.xml
  2. 33
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java
  3. 34
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/request/UserPageCustomizedServiceContractQueryParams.java
  4. 22
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractImageVo.java
  5. 29
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractTermVo.java
  6. 72
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserPageCustomizedServiceContractVo.java
  7. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractDao.java
  8. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractImageDao.java
  9. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractTermDao.java
  10. 21
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ContractRepositoryImpl.java
  11. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java
  12. 56
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java
  13. 49
      dating-agency-mall-server/src/main/resources/mapper/contract/ContractMapper.xml

5
dating-agency-mall-server/pom.xml

@ -101,6 +101,11 @@
<artifactId>dating-agency-service-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>dating-clue-service-entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>dating-agency-uec-sdk</artifactId>

33
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java

@ -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);
}
}

34
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/request/UserPageCustomizedServiceContractQueryParams.java

@ -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;
}

22
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractImageVo.java

@ -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;
}

29
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/ContractTermVo.java

@ -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;
}

72
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserPageCustomizedServiceContractVo.java

@ -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;
}

9
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractDao.java

@ -1,7 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.contract;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams;
import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo;
import com.qniao.dam.domain.aggregate.contract.entity.Contract;
import org.apache.ibatis.annotations.Param;
/**
* 合同
@ -9,4 +14,8 @@ import com.qniao.dam.domain.aggregate.contract.entity.Contract;
* @date 2025/07/10
*/
public interface ContractDao extends BaseMapper<Contract> {
IPage<UserPageCustomizedServiceContractVo> pageCustomizedServiceContract(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPageCustomizedServiceContractQueryParams queryParams);
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractImageDao.java

@ -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> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/contract/ContractTermDao.java

@ -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> {
}

21
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ContractRepositoryImpl.java

@ -1,9 +1,13 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.contract.entity.Contract;
import com.qniao.dam.domain.aggregate.contract.repository.ContractRepository;
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 org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Objects;
@ -18,12 +22,17 @@ public class ContractRepositoryImpl implements ContractRepository {
@Resource
private ContractDao dao;
@Resource
private ContractTermDao contractTermDao;
@Resource
private ContractImageDao contractImageDao;
@Override
public Contract load(Long id) {
return dao.selectById(id);
}
@Transactional(rollbackFor = Exception.class)
@Override
public Long save(Contract entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
@ -31,6 +40,18 @@ public class ContractRepositoryImpl implements ContractRepository {
} else {
dao.updateById(entity);
}
if (CollUtil.isNotEmpty(entity.getContractTermList())) {
entity.getContractTermList().forEach(contractTerm -> {
contractTerm.setContractId(entity.getId());
contractTermDao.insert(contractTerm);
});
}
if (CollUtil.isNotEmpty(entity.getContractImageList())) {
entity.getContractImageList().forEach(contractImage -> {
contractImage.setContractId(entity.getId());
contractImageDao.insert(contractImage);
});
}
return entity.getId();
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java

@ -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);
}

56
dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java

@ -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));
}
}

49
dating-agency-mall-server/src/main/resources/mapper/contract/ContractMapper.xml

@ -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>
Loading…
Cancel
Save