前端问题总结:
后端问题总结:
1.注解含意:
1.@Transactional 注解用于提交事务,若没有带上这句,会报事务异常提示。
2.@Modifying(clearAutomatically = true) 自动清除实体里保存的数据
/**
* 邮件删除(发件箱列表删除)
*/
@Modifying
@Transactional
@Query(value = "update oa_xt_yjxx set yjzt = 2 where kid = :kid", nativeQuery = true)
int changeDeleStatus(@Param("kid") String kid);
/**
* 查询删除邮件
*/
@Modifying
@Transactional
@Query(value = "select * from oa_xt_yjxx where fjrid = :fjrid and yjzt = 2", nativeQuery = true)
List<OaXtYjxx> queryAllDel(@Param("fjrid") String fjrid);
2.查询条件构建:
/**
* 构建查询条件:
* 收件箱查询条件
*
* */
public default Specification<OaXtYjxxSjxx> toSpecification(OaXtYjxxSjxx yjxxSjxx){
return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>();
Optional.ofNullable(yjxxSjxx.getSjrid()).filter(StringUtils::isNotBlank)
.ifPresent(value -> predicates.add(builder.equal(root.get("sjrid"), value)));
Optional.ofNullable(yjxxSjxx.getSjrxm()).filter(StringUtils::isNotBlank)
.ifPresent(value -> predicates.add(builder.equal(root.get("sjrxm"), value)));
Optional.ofNullable(yjxxSjxx.getYjzt()).ifPresent(value -> predicates.add(builder.equal(root.get("yjzt"), value)));
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
};
}
3.分页查询:
/**
* 分页查询某人的所有邮件(收件箱)
*/
Page<OaXtYjxxSjxx> queryAllYjxx(OaXtYjxxSjxx yjxxSjxx, CommonPageRequest pageRequest);
/**
* 分页查询某人的所有邮件(收件箱)
*/
@Override
public Page<OaXtYjxxSjxx> queryAllYjxx(OaXtYjxxSjxx yjxxSjxx, CommonPageRequest pageRequest) {
Page<OaXtYjxxSjxx> sjxxList = yjxxSjxxRepository.findAll(yjxxSjxxRepository.toSpecification(yjxxSjxx),pageRequest.createSortPageable());
if(sjxxList.getContent().size() != 0){
//循环将发件人信息添加
for(OaXtYjxxSjxx sjxx : sjxxList.getContent()){
if(sjxx.getXszt() == 2){//收件人显示状态为不显示,整理收件人信息
//获取此发件人的所有收件人信息
List<OaXtYjxxSjxx> xszt = yjxxSjxxRepository.findByYjxxKid(sjxx.getYjxxKid());
//过滤出需要进行显示的数据
List<OaXtYjxxSjxx> newXszt = xszt.stream().filter(a -> a.getXszt() == 1).collect(Collectors.toList());
//对需要进行显示的数据进行排序,保证显示的顺序
List<OaXtYjxxSjxx> listSort = newXszt.stream().sorted(Comparator.comparing(OaXtYjxxSjxx::getXh)).collect(Collectors.toList());
List<String> sjrxxList = listSort.stream().map(OaXtYjxxSjxx::getSjrxm).collect(Collectors.toList());
String sjrxx = StringUtils.join(sjrxxList.toArray(),",");
sjxx.setSjrxm(sjrxx);
}
sjxx.setXtYjxx(xtYjxxRepository.findByKid(sjxx.getYjxxKid()));
}
}
return sjxxList;
}
4.swagger相关注解
@RestController
@RequestMapping(value = API_PATH_PREFIX + "/email", consumes = { ALL_VALUE }, produces = { APPLICATION_JSON_UTF8_VALUE })