目录
需求:
1、工具类
/**
* 表格分页数据对象
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
public class TableDataInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 总记录数
*/
private long total;
/**
* 列表数据
*/
private List<T> rows;
/**
* 消息状态码
*/
private int code;
/**
* 消息内容
*/
private String msg;
/**
* 分页
*
* @param list 列表数据
* @param total 总记录数
*/
public TableDataInfo(List<T> list, long total) {
this.rows = list;
this.total = total;
}
public static <T> TableDataInfo<T> build(IPage<T> page) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
rspData.setRows(page.getRecords());
rspData.setTotal(page.getTotal());
return rspData;
}
public static <T> TableDataInfo<T> build(List<T> list) {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
rspData.setRows(list);
rspData.setTotal(list.size());
return rspData;
}
public static <T> TableDataInfo<T> build() {
TableDataInfo<T> rspData = new TableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
return rspData;
}
}
public class PagingUtils {
public static Integer pagingHandle(Integer pageNum,Integer pageSize){
if (pageNum != null && pageSize != null) {
pageNum = (pageNum-1) * pageSize;
}
return pageNum;
}
2、domain
@Data
public class ZjTenderer implements Serializable,Cloneable{
/** 联系人*/
@TableField(exist = false)
private List<ZjTendererContacter> contacterList;
private Integer pageNum;
private Integer pageSize;
/** 招标人ID */
private Integer tendererId ;
/** 招标人名字 */
private String userName ;
/** 区域 */
private String location ;
/** 单位性质;政府主管部门、国有企业、政府平台公司、私有企业、事业单位、社会团体 */
private String unitProperty ;
/** 税号 */
private String dutyNumber ;
/** 单位地址 */
private String address ;
/** 手机号 */
private String phoneNumber ;
/** 开户银行 */
private String depositBank ;
/** 银行账号 */
private String bankNumber ;
/** 数据状态 */
private String dataStatus ;
/** 流程processId */
private String taskId ;
/** 创建人 */
private String createBy ;
/** 创建时间 */
private Date createTime ;
/** 更新人 */
private String updateBy ;
/** 更新时间 */
private Date updateTime ;
}
@Data
public class ZjTendererContacter implements Serializable,Cloneable{
/** 联系人ID */
private Integer contacterId ;
/** 联系人名字 */
private String userName ;
/** 电话号码 */
private String phoneNumber ;
/** 职务 */
private String job ;
/** 招标人ID */
private Integer tendererId ;
/** 数据状态 */
private String dataStatus ;
/** 流程processId */
private String taskId ;
/** 创建人 */
private String createBy ;
/** 创建时间 */
private Date createTime ;
/** 更新人 */
private String updateBy ;
/** 更新时间 */
private Date updateTime ;
@Data
@TableName("zj_tenderer")
public class ZjTendererDTO implements Serializable,Cloneable {
/** 联系人*/
@TableField(exist = false)
private List<ZjTendererContacterDTO> contacterList;
/**
* 招标人ID
*/
@TableId
private Integer tendererId;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 数据状态
*/
private String dataStatus;
/**
* 流程processId
*/
private String taskId;
/**
* 招标人名字
*/
private String userName;
/**
* 区域
*/
private String location;
/**
* 单位性质;政府主管部门、国有企业、政府平台公司、私有企业、事业单位、社会团体
*/
private String unitProperty;
/**
* 税号
*/
private String dutyNumber;
/**
* 单位地址
*/
private String address;
/**
* 手机号
*/
private String phoneNumber;
/**
* 开户银行
*/
private String depositBank;
/**
* 银行账号
*/
private String bankNumber;
@Override
public ZjTendererDTO clone() {
try {
ZjTendererDTO clone = (ZjTendererDTO) super.clone();
// TODO: copy mutable state here, so the clone can't change the internals of the original
return clone;
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
3、mapper
public interface ZjTenderMapper{
List<ZjTenderer> queryAllByLimit(ZjTenderer zjTenderer);
int count(ZjTenderer zjTenderer);
}
public interface ZjTenderContacterMapper {
List<ZjTendererContacter> queryAllByLimits(Integer tendererId);
}
xml
<?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接口路径 -->
<mapper namespace="com.hyxckj.web.controller.hyxckj.mapper.tender.ZjTenderContacterMapper">
<!--id的值保证Mapper接口的方法名一值-->
<resultMap type="com.hyxckj.web.controller.hyxckj.domain.tender.vo.ZjTendererContacter" id="ZjTendererContacterMap">
<result property="contacterId" column="contacter_id"/>
<result property="userName" column="user_name"/>
<result property="phoneNumber" column="phone_number"/>
<result property="job" column="job"/>
<result property="tendererId" column="tenderer_id"/>
<result property="dataStatus" column="DATA_STATUS"/>
<result property="taskId" column="TASK_ID"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<!--分页查询指定行数据-->
<select id="queryAllByLimits" resultMap="ZjTendererContacterMap">
select
contacter_id,user_name,phone_number,job,tenderer_id,DATA_STATUS,TASK_ID,CREATE_BY,CREATE_TIME,UPDATE_BY,UPDATE_TIME
from zj_tenderer_contacter where tenderer_id = #{tendererId}
<!-- <where>-->
<!-- <if test="contacterId != null and contacterId != ''">-->
<!-- and contacter_id = #{contacterId}-->
<!-- </if>-->
<!-- <if test="userName != null and userName != ''">-->
<!-- and user_name = #{userName}-->
<!-- </if>-->
<!-- <if test="phoneNumber != null and phoneNumber != ''">-->
<!-- and phone_number = #{phoneNumber}-->
<!-- </if>-->
<!-- <if test="job != null and job != ''">-->
<!-- and job = #{job}-->
<!-- </if>-->
<!-- <if test="tendererId != null and tendererId != ''">-->
<!-- and tenderer_id = #{tendererId}-->
<!-- </if>-->
<!-- <if test="dataStatus != null and dataStatus != ''">-->
<!-- and DATA_STATUS = #{dataStatus}-->
<!-- </if>-->
<!-- <if test="taskId != null and taskId != ''">-->
<!-- and TASK_ID = #{taskId}-->
<!-- </if>-->
<!-- <if test="createBy != null and createBy != ''">-->
<!-- and CREATE_BY = #{createBy}-->
<!-- </if>-->
<!-- <if test="createTime != null and createTime != ''">-->
<!-- and CREATE_TIME = #{createTime}-->
<!-- </if>-->
<!-- <if test="updateBy != null and updateBy != ''">-->
<!-- and UPDATE_BY = #{updateBy}-->
<!-- </if>-->
<!-- <if test="updateTime != null and updateTime != ''">-->
<!-- and UPDATE_TIME = #{updateTime}-->
<!-- </if>-->
<!-- </where>-->
</select>
</mapper>
<?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接口路径 -->
<mapper namespace="com.hyxckj.web.controller.hyxckj.mapper.tender.ZjTenderContacterMapper">
<!--id的值保证Mapper接口的方法名一值-->
<resultMap type="com.hyxckj.web.controller.hyxckj.domain.tender.vo.ZjTendererContacter" id="ZjTendererContacterMap">
<result property="contacterId" column="contacter_id"/>
<result property="userName" column="user_name"/>
<result property="phoneNumber" column="phone_number"/>
<result property="job" column="job"/>
<result property="tendererId" column="tenderer_id"/>
<result property="dataStatus" column="DATA_STATUS"/>
<result property="taskId" column="TASK_ID"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<select id="queryAllByLimits" resultMap="ZjTendererContacterMap">
select
contacter_id,user_name,phone_number,job,tenderer_id,DATA_STATUS,TASK_ID,CREATE_BY,CREATE_TIME,UPDATE_BY,UPDATE_TIME
from zj_tenderer_contacter where tenderer_id = #{tendererId}
</select>
</mapper>
4、service
TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer);
impl
@Override
public TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer) {
zjTenderer.setPageSize(PagingUtils.pagingHandle(zjTenderer.getPageSize(),zjTenderer.getPageNum()
));
List<ZjTenderer> list = zjTenderMapper.queryAllByLimit(zjTenderer);
list.forEach(zjTendererDTO->{
List<ZjTendererContacter> zjTendererContacte = tenderContacterMapper.queryAllByLimits(zjTendererDTO.getTendererId());
zjTendererDTO.setContacterList(zjTendererContacte);
});
int total = zjTenderMapper.count(zjTenderer);
TableDataInfo dataInfo = new TableDataInfo();
dataInfo.setTotal(total);
dataInfo.setRows(list);
return dataInfo;
}
5、controller
@PostMapping("/lists")
public TableDataInfo<ZjTendererDTO> getLists(ZjTenderer zjTenderer){
return zjTenderService.getLists(zjTenderer);
}