Commit 424a169e authored by huangcb's avatar huangcb

新增分页查询电子合同列表功能接口

parent c10b84fa
......@@ -11,7 +11,6 @@ package com.esv.freight.customer.common.constants;
*/
public class CommonConstants {
/**
* 访问端来源:1-浏览器端、2-Android端、3-iOS端、4-后台服务端
**/
......
......@@ -27,6 +27,11 @@ public class LogbackFilter implements Filter {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 获取来自上游服务的传参traceId
......@@ -45,11 +50,6 @@ public class LogbackFilter implements Filter {
}
}
@Override
public void destroy() {
}
private boolean setMDC(String traceId) {
if (StringUtils.isEmpty(traceId) || CommonConstants.NULL_STRING.equalsIgnoreCase(traceId)) {
traceId = UUID.randomUUID().toString().replace("-", "");
......
......@@ -28,7 +28,6 @@ import java.util.Map;
@Slf4j
public class RestLogFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) {
......
......@@ -102,6 +102,6 @@ public class ContractOfflineCarrierController {
**/
@PostMapping("/list")
public EResponse list(@RequestBody @Validated(ValidatorList.class) ContractOfflineCarrierQueryForm form) throws EException {
return EResponse.ok(contractOfflineCarrierService.selectContractList(form));
return EResponse.ok(contractOfflineCarrierService.getContractList(form));
}
}
......@@ -102,6 +102,6 @@ public class ContractOfflineGoodsOwnerController {
**/
@PostMapping("/list")
public EResponse list(@RequestBody @Validated(ValidatorList.class) ContractOfflineGoodsOwnerQueryForm form) throws EException {
return EResponse.ok(contractOfflineGoodsOwnerService.selectContractList(form));
return EResponse.ok(contractOfflineGoodsOwnerService.getContractList(form));
}
}
......@@ -3,7 +3,9 @@ package com.esv.freight.customer.module.contract.controller;
import com.esv.freight.customer.common.exception.EException;
import com.esv.freight.customer.common.response.EResponse;
import com.esv.freight.customer.common.validator.groups.ValidatorDetail;
import com.esv.freight.customer.common.validator.groups.ValidatorList;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordQueryForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignDriverForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignGoodsOwnerForm;
import com.esv.freight.customer.module.contract.service.ContractOnlineRecordService;
......@@ -85,4 +87,16 @@ public class ContractOnlineRecordController {
public EResponse getContractByNumber(@RequestBody @Validated(ValidatorDetail.class) ContractOnlineRecordForm form) throws EException {
return EResponse.ok(contractOnlineRecordService.getContractInfoByNumber(form.getContractNumber()));
}
/**
* description 分页查询电子合同列表
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/05/28 10:06
**/
@PostMapping("/list")
public EResponse list(@RequestBody @Validated(ValidatorList.class) ContractOnlineRecordQueryForm form) throws EException {
return EResponse.ok(contractOnlineRecordService.getContractList(form));
}
}
package com.esv.freight.customer.module.contract.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.esv.freight.customer.module.contract.entity.ContractOnlineRecordEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.esv.freight.customer.module.contract.form.ContractOfflineCarrierQueryForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordQueryForm;
import org.apache.ibatis.annotations.Mapper;
/**
......@@ -14,4 +17,13 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ContractOnlineRecordDao extends BaseMapper<ContractOnlineRecordEntity> {
/**
* description 分页查询合同列表
* param [page, queryObj]
* return com.baomidou.mybatisplus.core.metadata.IPage
* author Administrator
* createTime 2020/05/28 9:51
**/
IPage selectContractList(IPage page, ContractOnlineRecordQueryForm queryObj);
}
package com.esv.freight.customer.module.contract.form;
import com.esv.freight.customer.common.validator.groups.ValidatorList;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotNull;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.contract.form.ContractOnlineRecordForm
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/05/22 16:52
* @version:1.0
*/
@Data
public class ContractOnlineRecordQueryForm {
/**
* 关键字
*/
@Length(max = 50, message = "参数keywords长度不合法", groups = {ValidatorList.class})
private String keywords;
/**
* 页码
**/
@Range(min = 1, max = 65535, message = "无效的pageNum", groups = {ValidatorList.class})
@NotNull(message = "参数pageNum不能为空", groups = {ValidatorList.class})
private Integer pageNum;
/**
* 每页记录条数
**/
@Range(min = 1, max = 100, message = "pageSize", groups = {ValidatorList.class})
@NotNull(message = "参数pageSize不能为空", groups = {ValidatorList.class})
private Integer pageSize;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -61,7 +61,7 @@ public interface ContractOfflineCarrierService extends IService<ContractOfflineC
* author Administrator
* createTime 2020/05/20 11:18
**/
PageResultVO selectContractList(ContractOfflineCarrierQueryForm queryForm);
PageResultVO getContractList(ContractOfflineCarrierQueryForm queryForm);
}
......@@ -60,7 +60,7 @@ public interface ContractOfflineGoodsOwnerService extends IService<ContractOffli
* author Administrator
* createTime 2020/05/20 11:18
**/
PageResultVO selectContractList(ContractOfflineGoodsOwnerQueryForm queryForm);
PageResultVO getContractList(ContractOfflineGoodsOwnerQueryForm queryForm);
}
......@@ -2,10 +2,9 @@ package com.esv.freight.customer.module.contract.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esv.freight.customer.common.exception.EException;
import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.module.contract.entity.ContractOnlineRecordEntity;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignDriverForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignGoodsOwnerForm;
import com.esv.freight.customer.module.contract.form.*;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordSignDriverVO;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordSignGoodsOwnerVO;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordVO;
......@@ -55,5 +54,14 @@ public interface ContractOnlineRecordService extends IService<ContractOnlineReco
**/
Integer platformSign(String contractNumber);
/**
* description 分页查询合同列表
* param [queryForm]
* return com.esv.freight.customer.common.vo.PageResultVO
* author Administrator
* createTime 2020/05/28 9:52
**/
PageResultVO getContractList(ContractOnlineRecordQueryForm queryForm);
}
......@@ -124,7 +124,7 @@ public class ContractOfflineCarrierServiceImpl extends ServiceImpl<ContractOffli
}
@Override
public PageResultVO selectContractList(ContractOfflineCarrierQueryForm queryForm) {
public PageResultVO getContractList(ContractOfflineCarrierQueryForm queryForm) {
IPage<ContractOfflineCarrierDto> page = new Page<>(queryForm.getPageNum(), queryForm.getPageSize());
this.baseMapper.selectContractList(page, queryForm);
......
......@@ -124,7 +124,7 @@ public class ContractOfflineGoodsOwnerServiceImpl extends ServiceImpl<ContractOf
}
@Override
public PageResultVO selectContractList(ContractOfflineGoodsOwnerQueryForm queryForm) {
public PageResultVO getContractList(ContractOfflineGoodsOwnerQueryForm queryForm) {
IPage<ContractOfflineGoodsOwnerDto> page = new Page<>(queryForm.getPageNum(), queryForm.getPageSize());
this.baseMapper.selectContractList(page, queryForm);
......
......@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureRenderData;
......@@ -16,6 +18,7 @@ import com.esv.freight.customer.common.util.DateUtils;
import com.esv.freight.customer.common.util.FeignUtils;
import com.esv.freight.customer.common.util.InputStreamUtils;
import com.esv.freight.customer.common.util.ReqUtils;
import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.feign.FeignBaseService;
import com.esv.freight.customer.feign.FeignFileService;
import com.esv.freight.customer.module.contract.ContractConstants;
......@@ -23,6 +26,7 @@ import com.esv.freight.customer.module.contract.dao.ContractOnlineRecordDao;
import com.esv.freight.customer.module.contract.entity.ContractOnlinePlatformDataEntity;
import com.esv.freight.customer.module.contract.entity.ContractOnlineRecordEntity;
import com.esv.freight.customer.module.contract.entity.ContractOnlineTemplateEntity;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordQueryForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignDriverForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignGoodsOwnerForm;
import com.esv.freight.customer.module.contract.pojo.ContractOnlineDriverPojo;
......@@ -31,6 +35,7 @@ import com.esv.freight.customer.module.contract.pojo.ContractOnlinePlatformPojo;
import com.esv.freight.customer.module.contract.service.ContractOnlinePlatformDataService;
import com.esv.freight.customer.module.contract.service.ContractOnlineRecordService;
import com.esv.freight.customer.module.contract.service.ContractOnlineTemplateService;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordListVO;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordSignDriverVO;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordSignGoodsOwnerVO;
import com.esv.freight.customer.module.contract.vo.ContractOnlineRecordVO;
......@@ -54,9 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.Date;
import java.util.UUID;
import java.util.*;
@Service("contractOnlineRecordService")
......@@ -71,7 +74,7 @@ public class ContractOnlineRecordServiceImpl extends ServiceImpl<ContractOnlineR
/**
* 货主/司机签名图像宽度、长度
**/
private static final int CUSTOMER_SIGN_WIDTH = 150;
private static final int CUSTOMER_SIGN_WIDTH = 300;
private static final int CUSTOMER_SIGN_HEIGHT = 60;
/**
......@@ -571,4 +574,23 @@ public class ContractOnlineRecordServiceImpl extends ServiceImpl<ContractOnlineR
log.info("------异步保存合同[{}]目标文件及信息结束------", contractNumber);
}
@Override
public PageResultVO getContractList(ContractOnlineRecordQueryForm queryForm) {
IPage<ContractOnlineRecordEntity> page = new Page<>(queryForm.getPageNum(), queryForm.getPageSize());
this.baseMapper.selectContractList(page, queryForm);
// 数据转换
List<ContractOnlineRecordEntity> dtoList = page.getRecords();
List<ContractOnlineRecordListVO> targetRecordList = new ArrayList<>();
for (ContractOnlineRecordEntity dto : dtoList) {
ContractOnlineRecordListVO vo = new ContractOnlineRecordListVO();
BeanUtils.copyProperties(dto, vo);
vo.setContractFileId(dto.getTargetFileId());
vo.setContractFileUrl(dto.getTargetFileUrl());
vo.setEffectiveTime(null == dto.getEffectiveTime() ? null : dto.getEffectiveTime().getTime());
targetRecordList.add(vo);
}
return new PageResultVO(page, targetRecordList);
}
}
\ No newline at end of file
package com.esv.freight.customer.module.contract.vo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.contract.vo.ContractOnlineRecordListVO
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/05/22 16:37
* @version:1.0
*/
@Data
public class ContractOnlineRecordListVO {
/**
*
*/
private Long id;
/**
* 合同类型:1-货主与平台合同、2-司机与平台合同
*/
private Integer contractType;
/**
* 合同文件ID
*/
private String contractFileId;
/**
* 合同文件URL
*/
private String contractFileUrl;
/**
* 合同编号
*/
private String contractNumber;
/**
* 业务编号(订单号或运单号)
*/
private String businessNumber;
/**
* 客户ID
*/
private Long customerId;
/**
* 合同签订完成:1-是,2-否
*/
private Integer signComplete;
/**
* 合同生效时间
*/
private Long effectiveTime;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -236,6 +236,8 @@ error-message:
1002: 合同编号已存在
delete:
1001: 无效的合同ID
detail:
1001: 无效的合同ID
carrier:
add:
1001: 无效的承运商ID
......@@ -245,6 +247,8 @@ error-message:
1002: 合同编号已存在
delete:
1001: 无效的合同ID
detail:
1001: 无效的合同ID
online:
goods-owner:
sign:
......
......@@ -22,4 +22,17 @@
<result property="effectiveTime" column="effective_time"/>
</resultMap>
<!-- 分页查询合同列表 -->
<select id="selectContractList" parameterType="com.esv.freight.customer.module.contract.form.ContractOnlineRecordQueryForm"
resultType="com.esv.freight.customer.module.contract.entity.ContractOnlineRecordEntity">
select a.*
from contract_online_record a
where 1 = 1
<if test="queryObj.keywords != null">
and (a.contract_number like CONCAT('%',#{queryObj.keywords},'%')
or a.business_number like CONCAT('%',#{queryObj.keywords},'%'))
</if>
ORDER BY a.contract_number DESC
</select>
</mapper>
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.esv.freight.customer.BaseTestController;
import com.esv.freight.customer.common.response.ECode;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordQueryForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignDriverForm;
import com.esv.freight.customer.module.contract.form.ContractOnlineRecordSignGoodsOwnerForm;
import lombok.extern.slf4j.Slf4j;
......@@ -67,7 +68,7 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
form.setReceiveTime("2020-05-28 18:00:00");
form.setFreightCharge("500");
form.setDepositCharge("0");
String filepath = "D:\\test\\何锋.jpg";
String filepath = "D:\\test\\张志臣-签名.PNG";
File signFile = new File(filepath);
InputStream input = new FileInputStream(signFile);
form.setSignData(Base64.getEncoder().encodeToString(IOUtils.toByteArray(input)));
......@@ -188,11 +189,11 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
**/
@Test
public void c1_platformSign_success_test() throws Exception {
String url = "/contract/online/platformSign";
String url = "/contract/online/platform/sign";
// 构造数据
ContractOnlineRecordForm form = new ContractOnlineRecordForm();
form.setContractNumber("SJHT20200526000001");
form.setContractNumber("SJHT20200528000001");
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
......@@ -215,7 +216,7 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
@Test
@Rollback
public void c2_platformSign_wrong_contractNumber_failure_test() throws Exception {
String url = "/contract/online/platformSign";
String url = "/contract/online/platform/sign";
// 构造数据
ContractOnlineRecordForm form = new ContractOnlineRecordForm();
......@@ -240,7 +241,7 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
* 司机与平台的电子合同-司机签订
**/
@Test
public void a1_driverSign_success_test() throws Exception {
public void d1_driverSign_success_test() throws Exception {
String url = "/contract/online/driver/sign";
// 构造数据
......@@ -257,7 +258,7 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
form.setReceiveAddress("辽宁沈阳市沈河区泉园二路85号");
form.setReceiveTime("2020-05-28 18:00:00");
form.setFreightCharge("500");
String filepath = "D:\\test\\何锋.jpg";
String filepath = "D:\\test\\路上飞-签名.PNG";
File signFile = new File(filepath);
InputStream input = new FileInputStream(signFile);
form.setSignData(Base64.getEncoder().encodeToString(IOUtils.toByteArray(input)));
......@@ -283,7 +284,7 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
**/
@Test
@Rollback
public void a2_driverSign_failure_test() throws Exception {
public void d2_driverSign_failure_test() throws Exception {
String url = "/contract/online/driver/sign";
// 构造数据
......@@ -319,4 +320,32 @@ public class ContractOnlineRecordControllerTest extends BaseTestController {
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(1001, result.getIntValue("code"));
}
/**
* 分页查询电子合同列表
**/
@Test
public void e1_list_success_test() throws Exception {
String url = "/contract/online/list";
// 构造数据
ContractOnlineRecordQueryForm form = new ContractOnlineRecordQueryForm();
form.setPageNum(1);
form.setPageSize(10);
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(form.toString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertTrue(result.getJSONObject("data").containsKey("records"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment