提交 ad00c1e6 作者: 谭志磊

feat : 新增字典功能,导入导出字典翻译

上级 713143a3
...@@ -41,7 +41,7 @@ public class Car implements Serializable { ...@@ -41,7 +41,7 @@ public class Car implements Serializable {
String carNum; String carNum;
@Comment("车辆类型") @Comment("车辆类型")
@Excel(name = "车辆类型", sort = 2) @Excel(name = "车辆类型", sort = 2, dictType = "car_type")
String carType; String carType;
@Comment("司机名称") @Comment("司机名称")
...@@ -57,7 +57,7 @@ public class Car implements Serializable { ...@@ -57,7 +57,7 @@ public class Car implements Serializable {
String labelCard; String labelCard;
@Comment("标签卡状态") @Comment("标签卡状态")
@Excel(name = "标签卡状态", sort = 10) @Excel(name = "标签卡状态", sort = 10, dictType = "car_label_status")
String labelCardStatus; String labelCardStatus;
@Comment("所属单位id") @Comment("所属单位id")
......
...@@ -11,4 +11,22 @@ import org.springframework.stereotype.Repository; ...@@ -11,4 +11,22 @@ import org.springframework.stereotype.Repository;
* 2022/4/11 13:42 * 2022/4/11 13:42
*/ */
@Repository @Repository
public interface CarRepository extends JpaRepository<Car, Serializable>, JpaSpecificationExecutor<Car> {} public interface CarRepository extends JpaRepository<Car, Serializable>, JpaSpecificationExecutor<Car> {
// /**
// * 检查是否存在相同车牌号登记
// *
// * @param param String 车牌号码
// * @return 是否存在
// */
// @Query("SELECT COUNT(c.id) FROM bs_car c where car_num=?1 and label_card_status <>'已收卡'")
// boolean hasCarInfoByCarNum(String param);
//
// /**
// * 检查是否存在相同手机号码登记
// *
// * @param param String 手机号码
// * @return 是否存在
// */
// @Query("SELECT COUNT(c.id) FROM bs_car c where driver_mobile=?1 and label_card_status <>'已收卡'")
// boolean hasCarInfoByMobile(String param);
}
...@@ -50,9 +50,6 @@ public class Video implements Serializable { ...@@ -50,9 +50,6 @@ public class Video implements Serializable {
@Comment("标识") @Comment("标识")
String uuid; String uuid;
/**
* rtsp 地址
*/
@Comment("rtsp 媒体地址") @Comment("rtsp 媒体地址")
String rtsp; String rtsp;
......
...@@ -11,7 +11,7 @@ import lombok.experimental.FieldDefaults; ...@@ -11,7 +11,7 @@ import lombok.experimental.FieldDefaults;
* @author tzl * @author tzl
* 2022/4/12 11:11 * 2022/4/12 11:11
*/ */
@ApiModel("CarParam") @ApiModel("CarQueryParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dict; package com.yiring.app.param.dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import javax.validation.constraints.NotEmpty;
/** /**
* @author tzl * @author tzl
* 2022/4/13 15:51 * 2022/4/13 15:51
...@@ -18,20 +18,26 @@ import javax.validation.constraints.NotEmpty; ...@@ -18,20 +18,26 @@ import javax.validation.constraints.NotEmpty;
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class DictParam { public class DictParam {
@ApiModelProperty(value = "排序", example = "1", required = true) @ApiModelProperty(value = "排序", example = "1", required = true)
Integer dictSort; Integer dictSort;
@ApiModelProperty(value = "字典标签", example = "男", required = true) @ApiModelProperty(value = "字典标签", example = "男", required = true)
@NotEmpty(message = "字典标签不能为空") @NotEmpty(message = "字典标签不能为空")
String dictLabel; String dictLabel;
@ApiModelProperty(value = "字典值", example = "1", required = true) @ApiModelProperty(value = "字典值", example = "1", required = true)
@NotEmpty(message = "字典值不能为空") @NotEmpty(message = "字典值不能为空")
String dictValue; String dictValue;
@ApiModelProperty(value = "字典类型", example = "user_sex", required = true) @ApiModelProperty(value = "字典类型", example = "user_sex", required = true)
@NotEmpty(message = "字典类型不能为空") @NotEmpty(message = "字典类型不能为空")
String dictType; String dictType;
@ApiModelProperty(value = "是否启用", example = "1", required = true) @ApiModelProperty(value = "是否启用", example = "1", required = true)
@NotEmpty(message = "是否启用必填") @NotEmpty(message = "是否启用必填")
String status; String status;
@ApiModelProperty(value = "备注", example = "性别", required = true) @ApiModelProperty(value = "备注", example = "性别", required = true)
String remark; String remark;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dict; package com.yiring.app.param.dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -16,8 +17,10 @@ import lombok.experimental.FieldDefaults; ...@@ -16,8 +17,10 @@ import lombok.experimental.FieldDefaults;
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class DictQueryParam { public class DictQueryParam {
@ApiModelProperty(value = "字典标签", example = "男") @ApiModelProperty(value = "字典标签", example = "男")
String dictLabel; String dictLabel;
@ApiModelProperty(value = "字典类型", example = "user_sex") @ApiModelProperty(value = "字典类型", example = "user_sex")
String dictType; String dictType;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dict; package com.yiring.app.param.dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import javax.validation.constraints.NotEmpty;
/** /**
* @author tzl * @author tzl
* 2022/4/13 15:51 * 2022/4/13 15:51
...@@ -18,12 +18,15 @@ import javax.validation.constraints.NotEmpty; ...@@ -18,12 +18,15 @@ import javax.validation.constraints.NotEmpty;
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class DictTypeParam { public class DictTypeParam {
@ApiModelProperty(value = "字典名称", example = "性别", required = true) @ApiModelProperty(value = "字典名称", example = "性别", required = true)
@NotEmpty(message = "字典名称不能为空") @NotEmpty(message = "字典名称不能为空")
String dictName; String dictName;
@ApiModelProperty(value = "字典类型", example = "user_sex", required = true) @ApiModelProperty(value = "字典类型", example = "user_sex", required = true)
@NotEmpty(message = "字典类型不能为空") @NotEmpty(message = "字典类型不能为空")
String dictType; String dictType;
@ApiModelProperty(value = "是否启用", example = "1", required = true) @ApiModelProperty(value = "是否启用", example = "1", required = true)
@NotEmpty(message = "是否启用必填") @NotEmpty(message = "是否启用必填")
String status; String status;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dict; package com.yiring.app.param.dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -16,6 +17,7 @@ import lombok.experimental.FieldDefaults; ...@@ -16,6 +17,7 @@ import lombok.experimental.FieldDefaults;
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class DictTypeQueryParam { public class DictTypeQueryParam {
@ApiModelProperty(value = "字典名称", example = "性别") @ApiModelProperty(value = "字典名称", example = "性别")
String dictName; String dictName;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.video;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
import org.locationtech.jts.geom.Point;
/**
* 监控视频入参类
*
* @author tzl
* 2022/4/8 16:07
*/
@ApiModel("VideoParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VideoParam implements Serializable {
@ApiModelProperty(value = "标识", example = "", required = true)
@NotEmpty(message = "标识不能为空")
String uuid;
@ApiModelProperty(value = "rtsp 媒体地址", example = "", required = true)
@NotEmpty(message = "rtsp 媒体地址不能为空")
String rtsp;
@ApiModelProperty(value = "m3u8 地址", example = "")
@NotEmpty(message = "m3u8 地址不能为空")
String m3u8;
@ApiModelProperty(value = "坐标点信息", example = "")
Point point;
@ApiModelProperty(value = "分类", example = "")
String type;
@ApiModelProperty(value = "是否在线", example = "")
Boolean online;
@ApiModelProperty(value = "是否启用", example = "")
Boolean enable;
}
...@@ -53,7 +53,7 @@ public interface CarService { ...@@ -53,7 +53,7 @@ public interface CarService {
* 删除车辆来访信息 * 删除车辆来访信息
* *
* @param idParam IdParam * @param idParam IdParam
* @return * @return String
*/ */
Result<String> deleteCarInfo(IdParam idParam); Result<String> deleteCarInfo(IdParam idParam);
...@@ -79,15 +79,22 @@ public interface CarService { ...@@ -79,15 +79,22 @@ public interface CarService {
List<Car> export(CarQueryParam carParam); List<Car> export(CarQueryParam carParam);
/** /**
* 检查是否存在相同车牌号 * 检查是否存在相同车牌号登记
* *
* @param param String * @param param String 车牌号码
* @return 是否存在 * @return 是否存在
*/ */
boolean hasCarInfo(String param); boolean hasCarInfoByCarNum(String param);
/** /**
* 检查是否存在相同手机号码登记
* *
* @param param String 手机号码
* @return 是否存在
*/
boolean hasCarInfoByMobile(String param);
/**
* @param carParam CarQueryParam * @param carParam CarQueryParam
* @return Specification * @return Specification
*/ */
......
...@@ -43,11 +43,16 @@ public class CarServiceImpl implements CarService { ...@@ -43,11 +43,16 @@ public class CarServiceImpl implements CarService {
@Override @Override
public Result<Long> saveCarInfo(CarParam carParam) { public Result<Long> saveCarInfo(CarParam carParam) {
// 检查车牌号是否已存在 // 检查车牌号是否已存在
if (hasCarInfo(carParam.getCarNum())) { if (hasCarInfoByCarNum(carParam.getCarNum())) {
return Result.no(Status.BAD_REQUEST, "车牌号重复"); return Result.no(Status.BAD_REQUEST, "您的车牌号已预约登记");
}
// 检查司机手机号码号是否已存在
if (hasCarInfoByMobile(carParam.getDriverMobile())) {
return Result.no(Status.BAD_REQUEST, "您的联系方式已预约登记");
} }
Car car = Car Car car = Car
.builder() .builder()
.labelCardStatus("未发卡")
.carNum(carParam.getCarNum()) .carNum(carParam.getCarNum())
.carType(carParam.getCarType()) .carType(carParam.getCarType())
.driverMobile(carParam.getDriverMobile()) .driverMobile(carParam.getDriverMobile())
...@@ -68,17 +73,22 @@ public class CarServiceImpl implements CarService { ...@@ -68,17 +73,22 @@ public class CarServiceImpl implements CarService {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
} }
Car car = optional.get(); Car car = optional.get();
if (!car.getCarNum().equals(carParam.getCarNum())) {
// 当修改车牌号时才检查重复
if (hasCarInfo(carParam.getCarNum())) {
return Result.no(Status.BAD_REQUEST, "车牌号重复");
}
//如果标签卡在使用中无法修改 //如果标签卡在使用中无法修改
if (StringUtils.isNotBlank(car.getLabelCardStatus()) && "使用中".equals(car.getLabelCardStatus())) { if (StringUtils.isNotBlank(car.getLabelCardStatus()) && "使用中".equals(car.getLabelCardStatus())) {
return Result.no(Status.BAD_REQUEST, "标签卡使用中,信息无法修改"); return Result.no(Status.BAD_REQUEST, "标签卡使用中,信息无法修改");
} }
if (!car.getCarNum().equals(carParam.getCarNum())) {
// 当修改车牌号时才检查重复
if (hasCarInfoByCarNum(carParam.getCarNum())) {
return Result.no(Status.BAD_REQUEST, "您的车牌号已预约登记");
}
}
if (!car.getDriverMobile().equals(carParam.getDriverMobile())) {
// 当修改联系方式时才检查重复
if (hasCarInfoByMobile(carParam.getDriverMobile())) {
return Result.no(Status.BAD_REQUEST, "您的联系方式已预约登记");
}
} }
BeanUtils.copyProperties(carParam, car); BeanUtils.copyProperties(carParam, car);
Car carReuslt = carRepository.saveAndFlush(car); Car carReuslt = carRepository.saveAndFlush(car);
return Result.ok(carReuslt.getId()); return Result.ok(carReuslt.getId());
...@@ -90,7 +100,6 @@ public class CarServiceImpl implements CarService { ...@@ -90,7 +100,6 @@ public class CarServiceImpl implements CarService {
if (optional.isEmpty()) { if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
} }
Car car = optional.get(); Car car = optional.get();
car.setLabelCardStatus("已收卡"); car.setLabelCardStatus("已收卡");
car.setCardRecTime(LocalDateTime.now()); car.setCardRecTime(LocalDateTime.now());
...@@ -119,7 +128,7 @@ public class CarServiceImpl implements CarService { ...@@ -119,7 +128,7 @@ public class CarServiceImpl implements CarService {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
} }
//已经发卡的信息无法删除 //正在使用中的信息无法删除
Car entity = optional.get(); Car entity = optional.get();
if (entity.getLabelCardStatus().equals("使用中")) { if (entity.getLabelCardStatus().equals("使用中")) {
return Result.no(Status.BAD_REQUEST, "标签卡使用中,信息无法删除"); return Result.no(Status.BAD_REQUEST, "标签卡使用中,信息无法删除");
...@@ -162,9 +171,21 @@ public class CarServiceImpl implements CarService { ...@@ -162,9 +171,21 @@ public class CarServiceImpl implements CarService {
} }
@Override @Override
public boolean hasCarInfo(String param) { public boolean hasCarInfoByCarNum(String param) {
Car entity = Car.builder().carNum(param).build(); Car entity = Car.builder().carNum(param).labelCardStatus("未发卡").build();
return carRepository.count(Example.of(entity)) > 0; long count = carRepository.count(Example.of(entity));
entity = Car.builder().carNum(param).labelCardStatus("使用中").build();
long count1 = carRepository.count(Example.of(entity));
return count + count1 > 0;
}
@Override
public boolean hasCarInfoByMobile(String param) {
Car entity = Car.builder().driverMobile(param).labelCardStatus("未发卡").build();
long count = carRepository.count(Example.of(entity));
entity = Car.builder().driverMobile(param).labelCardStatus("使用中").build();
long count1 = carRepository.count(Example.of(entity));
return count + count1 > 0;
} }
@Override @Override
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.dict; package com.yiring.app.service.dict;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.dict.Dict; import com.yiring.common.dict.Dict;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
...@@ -95,5 +94,4 @@ public interface DictService { ...@@ -95,5 +94,4 @@ public interface DictService {
* 加载字典缓存 * 加载字典缓存
*/ */
void loadingDictCache(); void loadingDictCache();
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.dict; package com.yiring.app.service.dict;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.app.param.dict.DictTypeParam; import com.yiring.app.param.dict.DictTypeParam;
import com.yiring.app.param.dict.DictTypeQueryParam; import com.yiring.app.param.dict.DictTypeQueryParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.dict.Dict;
import com.yiring.common.dict.DictType; import com.yiring.common.dict.DictType;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.ArrayList;
/** /**
* @author tzl * @author tzl
* 2022/4/14 14:10 * 2022/4/14 14:10
*/ */
public interface DictTypeService { public interface DictTypeService {
/** /**
* 根据条件分页查询字典类型 * 根据条件分页查询字典类型
* *
...@@ -28,15 +22,13 @@ public interface DictTypeService { ...@@ -28,15 +22,13 @@ public interface DictTypeService {
*/ */
Result<PageVo<DictType>> pageDictTypeInfo(DictTypeQueryParam dictTypeQueryParam, PageParam param); Result<PageVo<DictType>> pageDictTypeInfo(DictTypeQueryParam dictTypeQueryParam, PageParam param);
Result<DictType> getDictTypeInfo(Long id); Result<DictType> getDictTypeInfo(Long id);
Result<String> delecteById(Long id); Result<String> delecteById(Long id);
Result<String> saveDictTypeInfo(DictTypeParam dictTypeParam); Result<String> saveDictTypeInfo(DictTypeParam dictTypeParam);
Result<String> updateDictTypeInfo(DictTypeParam dictTypeParam,IdParam idParam); Result<String> updateDictTypeInfo(DictTypeParam dictTypeParam, IdParam idParam);
boolean has(String param); boolean has(String param);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.dict.impl; package com.yiring.app.service.dict.impl;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.app.service.dict.DictService; import com.yiring.app.service.dict.DictService;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
...@@ -7,24 +10,21 @@ import com.yiring.common.dict.Dict; ...@@ -7,24 +10,21 @@ import com.yiring.common.dict.Dict;
import com.yiring.common.dict.DictRepository; import com.yiring.common.dict.DictRepository;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.common.util.DictUtils; import com.yiring.common.util.DictUtils;
import com.yiring.common.util.StrUtils; import com.yiring.common.util.StrUtils;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Example; import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 字典 * 字典
* *
...@@ -33,6 +33,7 @@ import java.util.stream.Collectors; ...@@ -33,6 +33,7 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class DictServiceImpl implements DictService { public class DictServiceImpl implements DictService {
@Resource @Resource
DictRepository dictRepository; DictRepository dictRepository;
...@@ -50,15 +51,20 @@ public class DictServiceImpl implements DictService { ...@@ -50,15 +51,20 @@ public class DictServiceImpl implements DictService {
@Override @Override
public void loadingDictCache() { public void loadingDictCache() {
Dict dict = Dict.builder().status("1").build(); Dict dict = Dict.builder().status("1").build();
Map<String, List<Dict>> dictDataMap = dictRepository.findAll(Example.of(dict)).stream().collect(Collectors.groupingBy(Dict::getDictType)); Map<String, List<Dict>> dictDataMap = dictRepository
.findAll(Example.of(dict))
.stream()
.collect(Collectors.groupingBy(Dict::getDictType));
for (Map.Entry<String, List<Dict>> entry : dictDataMap.entrySet()) { for (Map.Entry<String, List<Dict>> entry : dictDataMap.entrySet()) {
DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(Dict::getDictSort)).collect(Collectors.toList())); DictUtils.setDictCache(
entry.getKey(),
entry.getValue().stream().sorted(Comparator.comparing(Dict::getDictSort)).collect(Collectors.toList())
);
} }
} }
@Override @Override
public Result<PageVo<Dict>> pageDictInfo(DictQueryParam dictQueryParam, PageParam param) { public Result<PageVo<Dict>> pageDictInfo(DictQueryParam dictQueryParam, PageParam param) {
Page<Dict> all = dictRepository.findAll(condition(dictQueryParam), PageParam.toPageable(param)); Page<Dict> all = dictRepository.findAll(condition(dictQueryParam), PageParam.toPageable(param));
List<Dict> data = all List<Dict> data = all
.get() .get()
...@@ -127,7 +133,6 @@ public class DictServiceImpl implements DictService { ...@@ -127,7 +133,6 @@ public class DictServiceImpl implements DictService {
@Override @Override
public Result<String> updateDictInfo(DictParam dictParam, IdParam idParam) { public Result<String> updateDictInfo(DictParam dictParam, IdParam idParam) {
Optional<Dict> optional = dictRepository.findById(idParam.getId()); Optional<Dict> optional = dictRepository.findById(idParam.getId());
if (optional.isEmpty()) { if (optional.isEmpty()) {
return Result.no(Status.NOT_FOUND); return Result.no(Status.NOT_FOUND);
...@@ -139,7 +144,10 @@ public class DictServiceImpl implements DictService { ...@@ -139,7 +144,10 @@ public class DictServiceImpl implements DictService {
return Result.no(Status.BAD_REQUEST, "标签已存在"); return Result.no(Status.BAD_REQUEST, "标签已存在");
} }
} }
if (!entity.getDictValue().equals(dictParam.getDictValue()) || !entity.getDictType().equals(dictParam.getDictType())) { if (
!entity.getDictValue().equals(dictParam.getDictValue()) ||
!entity.getDictType().equals(dictParam.getDictType())
) {
//当修改了字典类型或字典值时 //当修改了字典类型或字典值时
if (hasValue(dictParam.getDictType(), dictParam.getDictValue())) { if (hasValue(dictParam.getDictType(), dictParam.getDictValue())) {
return Result.no(Status.BAD_REQUEST, "该类型,字典值已存在"); return Result.no(Status.BAD_REQUEST, "该类型,字典值已存在");
...@@ -156,11 +164,21 @@ public class DictServiceImpl implements DictService { ...@@ -156,11 +164,21 @@ public class DictServiceImpl implements DictService {
return (root, query, criteriaBuilder) -> { return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
if (StrUtils.isNotBlank(dictQueryParam.getDictType())) { if (StrUtils.isNotBlank(dictQueryParam.getDictType())) {
list.add(criteriaBuilder.like(root.get("dictType").as(String.class), "%" + dictQueryParam.getDictType() + "%")); list.add(
criteriaBuilder.like(
root.get("dictType").as(String.class),
"%" + dictQueryParam.getDictType() + "%"
)
);
} }
if (StrUtils.isNotBlank(dictQueryParam.getDictLabel())) { if (StrUtils.isNotBlank(dictQueryParam.getDictLabel())) {
list.add(criteriaBuilder.like(root.get("dictLabel").as(String.class), "%" + dictQueryParam.getDictLabel() + "%")); list.add(
criteriaBuilder.like(
root.get("dictLabel").as(String.class),
"%" + dictQueryParam.getDictLabel() + "%"
)
);
} }
Predicate[] predicates = new Predicate[list.size()]; Predicate[] predicates = new Predicate[list.size()];
query.where(list.toArray(predicates)); query.where(list.toArray(predicates));
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.dict.impl; package com.yiring.app.service.dict.impl;
import com.yiring.app.param.dict.DictTypeParam; import com.yiring.app.param.dict.DictTypeParam;
...@@ -14,18 +15,17 @@ import com.yiring.common.param.PageParam; ...@@ -14,18 +15,17 @@ import com.yiring.common.param.PageParam;
import com.yiring.common.util.DictUtils; import com.yiring.common.util.DictUtils;
import com.yiring.common.util.StrUtils; import com.yiring.common.util.StrUtils;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Example; import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 字典类型 * 字典类型
* *
...@@ -34,8 +34,10 @@ import java.util.stream.Collectors; ...@@ -34,8 +34,10 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class DictTypeServiceImpl implements DictTypeService { public class DictTypeServiceImpl implements DictTypeService {
@Resource @Resource
DictTypeRepository dictTypeRepository; DictTypeRepository dictTypeRepository;
@Resource @Resource
DictRepository dictRepository; DictRepository dictRepository;
...@@ -112,7 +114,7 @@ public class DictTypeServiceImpl implements DictTypeService { ...@@ -112,7 +114,7 @@ public class DictTypeServiceImpl implements DictTypeService {
//查询该字典类型下的字典值数据 //查询该字典类型下的字典值数据
List<Dict> byDictType = dictRepository.findByDictType(dictType.getDictType()); List<Dict> byDictType = dictRepository.findByDictType(dictType.getDictType());
//添加新缓存 //添加新缓存
DictUtils.setDictCache(dictType.getDictType(),byDictType); DictUtils.setDictCache(dictType.getDictType(), byDictType);
return Result.ok(); return Result.ok();
} }
...@@ -122,12 +124,16 @@ public class DictTypeServiceImpl implements DictTypeService { ...@@ -122,12 +124,16 @@ public class DictTypeServiceImpl implements DictTypeService {
return dictTypeRepository.count(Example.of(dictType)) > 0; return dictTypeRepository.count(Example.of(dictType)) > 0;
} }
public Specification<DictType> condition(DictTypeQueryParam dictTypeQueryParam) { public Specification<DictType> condition(DictTypeQueryParam dictTypeQueryParam) {
return (root, query, criteriaBuilder) -> { return (root, query, criteriaBuilder) -> {
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
if (StrUtils.isNotBlank(dictTypeQueryParam.getDictName())) { if (StrUtils.isNotBlank(dictTypeQueryParam.getDictName())) {
list.add(criteriaBuilder.like(root.get("dictType").as(String.class), "%" + dictTypeQueryParam.getDictName() + "%")); list.add(
criteriaBuilder.like(
root.get("dictType").as(String.class),
"%" + dictTypeQueryParam.getDictName() + "%"
)
);
} }
Predicate[] predicates = new Predicate[list.size()]; Predicate[] predicates = new Predicate[list.size()];
query.where(list.toArray(predicates)); query.where(list.toArray(predicates));
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.video;
import com.yiring.app.param.video.VideoParam;
import com.yiring.common.core.Result;
/**
* @author tzl
* 2022/4/8 15:28
*/
public interface VideoService {
/**
* 监控视频点位添加
* @param videoParam VideoParam
* @return Result<String>
* @author tzl
* @date 2022/4/8 16:23
*/
Result<String> saveVideo(VideoParam videoParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.video.impl;
import com.yiring.app.domain.video.Video;
import com.yiring.app.domain.video.VideoRepository;
import com.yiring.app.param.video.VideoParam;
import com.yiring.app.service.video.VideoService;
import com.yiring.common.core.Result;
import java.time.LocalDateTime;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @author tzl
* 2022/4/8 15:28
*/
@Service
public class VideoServiceImpl implements VideoService {
@Resource
VideoRepository videoRepository;
@Override
public Result<String> saveVideo(VideoParam videoParam) {
Video video = Video
.builder()
.createTime(LocalDateTime.now())
.enable(videoParam.getEnable())
.m3u8(videoParam.getM3u8())
.point(videoParam.getPoint())
.rtsp(videoParam.getRtsp())
.online(videoParam.getOnline())
.type(videoParam.getType())
.uuid(videoParam.getUuid())
.build();
videoRepository.saveAndFlush(video);
return Result.ok();
}
}
...@@ -2,12 +2,14 @@ ...@@ -2,12 +2,14 @@
package com.yiring.app.vo.car; package com.yiring.app.vo.car;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yiring.common.util.DictUtils;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import org.apache.commons.lang3.StringUtils;
/** /**
* @author tzl * @author tzl
...@@ -21,42 +23,68 @@ import lombok.experimental.FieldDefaults; ...@@ -21,42 +23,68 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class CarVo implements Serializable { public class CarVo implements Serializable {
@ApiModelProperty(value = "车牌号码", example = "") @ApiModelProperty(value = "车牌号码", example = "湘A99999")
String carNum; String carNum;
@ApiModelProperty(value = "车辆类型", example = "") @ApiModelProperty(value = "车辆类型", example = "1")
String carType; String carType;
@ApiModelProperty(value = "司机名称", example = "") /**
* 车辆类型翻译
*/
@ApiModelProperty(value = "车辆类型(字典翻译)", example = "货车")
String carTypeName;
public String getCarTypeName() {
if (StringUtils.isNotBlank(carType)) {
return DictUtils.getDictLabel("car_type", carType);
}
return null;
}
@ApiModelProperty(value = "司机名称", example = "张三")
String driverName; String driverName;
@ApiModelProperty(value = "司机电话", example = "") @ApiModelProperty(value = "司机电话", example = "17688888888")
String driverMobile; String driverMobile;
@ApiModelProperty(value = "标签卡", example = "") @ApiModelProperty(value = "标签卡", example = "DT8875666")
String labelCard; String labelCard;
@ApiModelProperty(value = "标签卡状态", example = "") @ApiModelProperty(value = "标签卡状态", example = "1")
String labelCardStatus; String labelCardStatus;
@ApiModelProperty(value = "单位id", example = "") /**
* 车辆类型翻译
*/
@ApiModelProperty(value = "标签卡状态", example = "未发卡")
String labelCardStatusName;
public String getLabelCardStatusName() {
if (StringUtils.isNotBlank(carType)) {
return DictUtils.getDictLabel("car_label_status", labelCardStatus);
}
return null;
}
@ApiModelProperty(value = "单位id", example = "湖南壹润科技")
String orgId; String orgId;
@ApiModelProperty(value = "被访人id", example = "") @ApiModelProperty(value = "被访人id", example = "1")
String intervieweeId; String intervieweeId;
@ApiModelProperty(value = "来访原因", example = "") @ApiModelProperty(value = "来访原因", example = "装货")
String reason; String reason;
@ApiModelProperty(value = "收卡时间", example = "") @ApiModelProperty(value = "收卡时间", example = "2022-04-11 17:25:33")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime cardRecTime; LocalDateTime cardRecTime;
@ApiModelProperty(value = "创建时间", example = "") @ApiModelProperty(value = "创建时间", example = "2022-04-11 17:25:33")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime createTime; LocalDateTime createTime;
@ApiModelProperty(value = "发卡时间", example = "") @ApiModelProperty(value = "发卡时间", example = "2022-04-11 17:25:33")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime cardSendTime; LocalDateTime cardSendTime;
} }
...@@ -9,7 +9,7 @@ import com.yiring.app.vo.car.CarVo; ...@@ -9,7 +9,7 @@ import com.yiring.app.vo.car.CarVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.util.poi.ExcelUtil; import com.yiring.common.util.poi.ExcelUtils;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -88,7 +88,7 @@ public class CarController { ...@@ -88,7 +88,7 @@ public class CarController {
@PostMapping("exportCarInfo") @PostMapping("exportCarInfo")
public void exportCarInfo(HttpServletResponse response, @Valid CarQueryParam carParam) { public void exportCarInfo(HttpServletResponse response, @Valid CarQueryParam carParam) {
List<Car> export = carService.export(carParam); List<Car> export = carService.export(carParam);
ExcelUtil<Car> util = new ExcelUtil<>(Car.class); ExcelUtils<Car> util = new ExcelUtils<>(Car.class);
util.exportExcel(response, export, "车辆来访信息"); util.exportExcel(response, export, "车辆来访信息");
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.dict; package com.yiring.app.web.dict;
import com.yiring.common.dict.Dict; import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.app.service.dict.DictService; import com.yiring.app.service.dict.DictService;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.dict.Dict;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.ArrayList;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -18,10 +22,6 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -18,10 +22,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
/** /**
* 字典数据控制器 * 字典数据控制器
* @author tzl * @author tzl
...@@ -33,6 +33,7 @@ import java.util.ArrayList; ...@@ -33,6 +33,7 @@ import java.util.ArrayList;
@RestController @RestController
@RequestMapping("/Dict/") @RequestMapping("/Dict/")
public class DictController { public class DictController {
@Resource @Resource
DictService dictService; DictService dictService;
...@@ -48,14 +49,12 @@ public class DictController { ...@@ -48,14 +49,12 @@ public class DictController {
return dictService.updateDictInfo(dictParam, idParam); return dictService.updateDictInfo(dictParam, idParam);
} }
@ApiOperation(value = "删除字典信息") @ApiOperation(value = "删除字典信息")
@PostMapping("deleteDictById") @PostMapping("deleteDictById")
public Result<String> deleteDictById(@Valid IdParam idParam) { public Result<String> deleteDictById(@Valid IdParam idParam) {
return dictService.deleteDictById(idParam); return dictService.deleteDictById(idParam);
} }
@ApiOperation(value = "查看字典信息(分页)") @ApiOperation(value = "查看字典信息(分页)")
@GetMapping("pageDictInfo") @GetMapping("pageDictInfo")
public Result<PageVo<Dict>> pageDictInfo(@Valid DictQueryParam queryParam, @Valid PageParam param) { public Result<PageVo<Dict>> pageDictInfo(@Valid DictQueryParam queryParam, @Valid PageParam param) {
...@@ -74,5 +73,4 @@ public class DictController { ...@@ -74,5 +73,4 @@ public class DictController {
public Result<ArrayList<Dict>> selectDict(String dictType) { public Result<ArrayList<Dict>> selectDict(String dictType) {
return dictService.selectDict(dictType); return dictService.selectDict(dictType);
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.dict; package com.yiring.app.web.dict;
import com.yiring.app.param.dict.DictParam;
import com.yiring.app.param.dict.DictQueryParam;
import com.yiring.app.param.dict.DictTypeParam; import com.yiring.app.param.dict.DictTypeParam;
import com.yiring.app.param.dict.DictTypeQueryParam; import com.yiring.app.param.dict.DictTypeQueryParam;
import com.yiring.app.service.dict.DictService;
import com.yiring.app.service.dict.DictTypeService; import com.yiring.app.service.dict.DictTypeService;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.dict.Dict;
import com.yiring.common.dict.DictType; import com.yiring.common.dict.DictType;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -22,10 +20,6 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -22,10 +20,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
/** /**
* 字典类型控制器 * 字典类型控制器
* @author tzl * @author tzl
...@@ -37,6 +31,7 @@ import java.util.ArrayList; ...@@ -37,6 +31,7 @@ import java.util.ArrayList;
@RestController @RestController
@RequestMapping("/DictType/") @RequestMapping("/DictType/")
public class DictTypeController { public class DictTypeController {
@Resource @Resource
DictTypeService dictTypeService; DictTypeService dictTypeService;
...@@ -52,14 +47,12 @@ public class DictTypeController { ...@@ -52,14 +47,12 @@ public class DictTypeController {
return dictTypeService.updateDictTypeInfo(dictTypeParam, idParam); return dictTypeService.updateDictTypeInfo(dictTypeParam, idParam);
} }
@ApiOperation(value = "删除字典类型信息") @ApiOperation(value = "删除字典类型信息")
@PostMapping("delecteById") @PostMapping("delecteById")
public Result<String> delecteById(@Valid IdParam idParam) { public Result<String> delecteById(@Valid IdParam idParam) {
return dictTypeService.delecteById(idParam.getId()); return dictTypeService.delecteById(idParam.getId());
} }
@ApiOperation(value = "查看字典类型信息(分页)") @ApiOperation(value = "查看字典类型信息(分页)")
@GetMapping("pageDictTypeInfo") @GetMapping("pageDictTypeInfo")
public Result<PageVo<DictType>> pageDictInfo(@Valid DictTypeQueryParam queryParam, @Valid PageParam param) { public Result<PageVo<DictType>> pageDictInfo(@Valid DictTypeQueryParam queryParam, @Valid PageParam param) {
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.video;
import com.yiring.app.param.video.VideoParam;
import com.yiring.app.service.video.VideoService;
import com.yiring.common.core.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 监控点位控制器
* @author tzl
* 2022/4/8 16:51
*/
@Slf4j
@Validated
@Api(tags = "Video")
@RestController
@RequestMapping("/video/")
public class VideoController {
@Resource
VideoService videoService;
@ApiOperation(value = "新增监控点位")
@PostMapping("saveVideo")
public Result<String> findLatest(@Valid VideoParam videoParam) {
return videoService.saveVideo(videoParam);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.core.redis; package com.yiring.common.core.redis;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.HashOperations;
...@@ -7,12 +13,6 @@ import org.springframework.data.redis.core.RedisTemplate; ...@@ -7,12 +13,6 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/** /**
* redis缓存 工具类 * redis缓存 工具类
* *
...@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit; ...@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
*/ */
@Component @Component
public class RedisCache { public class RedisCache {
@Autowired @Autowired
public RedisTemplate redisTemplate; public RedisTemplate redisTemplate;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.dict; package com.yiring.common.dict;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
...@@ -8,13 +14,6 @@ import org.hibernate.annotaions.Comment; ...@@ -8,13 +14,6 @@ import org.hibernate.annotaions.Comment;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId; import org.hibernate.snowflake.SnowflakeId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* 字典表 * 字典表
* *
...@@ -30,7 +29,7 @@ import java.time.LocalDateTime; ...@@ -30,7 +29,7 @@ import java.time.LocalDateTime;
@FieldNameConstants @FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
@Entity @Entity
@Table(name ="SYS_DICT") @Table(name = "SYS_DICT")
@Comment("字典") @Comment("字典")
public class Dict implements Serializable { public class Dict implements Serializable {
...@@ -57,5 +56,4 @@ public class Dict implements Serializable { ...@@ -57,5 +56,4 @@ public class Dict implements Serializable {
@Comment("创建时间") @Comment("创建时间")
LocalDateTime createTime; LocalDateTime createTime;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.dict; package com.yiring.common.dict;
import java.io.Serializable;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
/** /**
* @author tzl * @author tzl
* 2022/4/13 15:32 * 2022/4/13 15:32
*/ */
public interface DictRepository extends JpaRepository<Dict, Serializable>, JpaSpecificationExecutor<Dict> { public interface DictRepository extends JpaRepository<Dict, Serializable>, JpaSpecificationExecutor<Dict> {
/** /**
* 根据字典类型和字典键值查询字典数据信息 * 根据字典类型和字典键值查询字典数据信息
* *
...@@ -37,6 +36,5 @@ public interface DictRepository extends JpaRepository<Dict, Serializable>, JpaSp ...@@ -37,6 +36,5 @@ public interface DictRepository extends JpaRepository<Dict, Serializable>, JpaSp
@Modifying @Modifying
@Transactional @Transactional
@Query("update Dict set dictType=?1 where dictType=?2") @Query("update Dict set dictType=?1 where dictType=?2")
boolean updateDictType(String param,String dictType); boolean updateDictType(String param, String dictType);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.dict; package com.yiring.common.dict;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
...@@ -7,13 +14,6 @@ import org.hibernate.annotaions.Comment; ...@@ -7,13 +14,6 @@ import org.hibernate.annotaions.Comment;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId; import org.hibernate.snowflake.SnowflakeId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* @author tzl * @author tzl
* 2022/4/14 14:07 * 2022/4/14 14:07
...@@ -27,7 +27,7 @@ import java.time.LocalDateTime; ...@@ -27,7 +27,7 @@ import java.time.LocalDateTime;
@FieldNameConstants @FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
@Entity @Entity
@Table(name ="SYS_DICT_TYPE") @Table(name = "SYS_DICT_TYPE")
@Comment("字典类型") @Comment("字典类型")
public class DictType implements Serializable { public class DictType implements Serializable {
...@@ -48,5 +48,4 @@ public class DictType implements Serializable { ...@@ -48,5 +48,4 @@ public class DictType implements Serializable {
@Comment("创建时间") @Comment("创建时间")
LocalDateTime createTime; LocalDateTime createTime;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.dict; package com.yiring.common.dict;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.io.Serializable;
import java.util.List;
/** /**
* @author tzl * @author tzl
* 2022/4/13 15:32 * 2022/4/13 15:32
*/ */
public interface DictTypeRepository extends JpaRepository<DictType, Serializable>, JpaSpecificationExecutor<DictType> { public interface DictTypeRepository extends JpaRepository<DictType, Serializable>, JpaSpecificationExecutor<DictType> {}
}
...@@ -15,113 +15,114 @@ import java.math.BigDecimal; ...@@ -15,113 +15,114 @@ import java.math.BigDecimal;
*/ */
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) @Target(ElementType.FIELD)
public @interface Excel { public @interface Excel {
/** /**
* 导出时在excel中排序 * 导出时在excel中排序
*/ */
public int sort() default Integer.MAX_VALUE; int sort() default Integer.MAX_VALUE;
/** /**
* 导出到Excel中的名字. * 导出到Excel中的名字.
*/ */
public String name() default ""; String name() default "";
/** /**
* 日期格式, 如: yyyy-MM-dd * 日期格式, 如: yyyy-MM-dd
*/ */
public String dateFormat() default ""; String dateFormat() default "";
/** /**
* 如果是字典类型,请设置字典的type值 (如: user_sex) * 如果是字典类型,请设置字典的type值 (如: user_sex)
*/ */
public String dictType() default ""; String dictType() default "";
/** /**
* 读取内容转表达式 (如: 0=男,1=女,2=未知) * 读取内容转表达式 (如: 0=男,1=女,2=未知)
*/ */
public String readConverterExp() default ""; String readConverterExp() default "";
/** /**
* 分隔符,读取字符串组内容 * 分隔符,读取字符串组内容
*/ */
public String separator() default ","; String separator() default ",";
/** /**
* BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)
*/ */
public int scale() default -1; int scale() default -1;
/** /**
* BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
*/ */
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
/** /**
* 导出类型(0数字 1字符串) * 导出类型(0数字 1字符串)
*/ */
public ColumnType cellType() default ColumnType.STRING; ColumnType cellType() default ColumnType.STRING;
/** /**
* 导出时在excel中每个列的高度 单位为字符 * 导出时在excel中每个列的高度 单位为字符
*/ */
public double height() default 14; double height() default 14;
/** /**
* 导出时在excel中每个列的宽 单位为字符 * 导出时在excel中每个列的宽 单位为字符
*/ */
public double width() default 16; double width() default 16;
/** /**
* 文字后缀,如% 90 变成90% * 文字后缀,如% 90 变成90%
*/ */
public String suffix() default ""; String suffix() default "";
/** /**
* 当值为空时,字段的默认值 * 当值为空时,字段的默认值
*/ */
public String defaultValue() default ""; String defaultValue() default "";
/** /**
* 提示信息 * 提示信息
*/ */
public String prompt() default ""; String prompt() default "";
/** /**
* 设置只能选择不能输入的列内容. * 设置只能选择不能输入的列内容.
*/ */
public String[] combo() default {}; String[] combo() default {};
/** /**
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.
*/ */
public boolean isExport() default true; boolean isExport() default true;
/** /**
* 另一个类中的属性名称,支持多级获取,以小数点隔开 * 另一个类中的属性名称,支持多级获取,以小数点隔开
*/ */
public String targetAttr() default ""; String targetAttr() default "";
/** /**
* 是否自动统计数据,在最后追加一行统计数据总和 * 是否自动统计数据,在最后追加一行统计数据总和
*/ */
public boolean isStatistics() default false; boolean isStatistics() default false;
/** /**
* 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右) * 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右)
*/ */
public Align align() default Align.AUTO; Align align() default Align.AUTO;
/** /**
* 自定义数据处理器 * 自定义数据处理器
*/ */
public Class<?> handler() default ExcelHandlerAdapter.class; Class<?> handler() default ExcelHandlerAdapter.class;
/** /**
* 自定义数据处理器参数 * 自定义数据处理器参数
*/ */
public String[] args() default {}; String[] args() default {};
public enum Align enum Align
{ {
AUTO(0), LEFT(1), CENTER(2), RIGHT(3); AUTO(0), LEFT(1), CENTER(2), RIGHT(3);
private final int value; private final int value;
...@@ -142,7 +143,7 @@ public @interface Excel { ...@@ -142,7 +143,7 @@ public @interface Excel {
*/ */
Type type() default Type.ALL; Type type() default Type.ALL;
public enum Type enum Type
{ {
ALL(0), EXPORT(1), IMPORT(2); ALL(0), EXPORT(1), IMPORT(2);
private final int value; private final int value;
...@@ -152,13 +153,13 @@ public @interface Excel { ...@@ -152,13 +153,13 @@ public @interface Excel {
this.value = value; this.value = value;
} }
public int value() int value()
{ {
return this.value; return this.value;
} }
} }
public enum ColumnType enum ColumnType
{ {
NUMERIC(0), STRING(1), IMAGE(2); NUMERIC(0), STRING(1), IMAGE(2);
private final int value; private final int value;
...@@ -168,7 +169,7 @@ public @interface Excel { ...@@ -168,7 +169,7 @@ public @interface Excel {
this.value = value; this.value = value;
} }
public int value() int value()
{ {
return this.value; return this.value;
} }
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.util; package com.yiring.common.util;
import com.yiring.common.core.redis.RedisCache; import com.yiring.common.core.redis.RedisCache;
import com.yiring.common.dict.Dict; import com.yiring.common.dict.Dict;
import com.yiring.common.util.spring.SpringUtil; import com.yiring.common.util.spring.SpringUtil;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -13,6 +13,7 @@ import java.util.List; ...@@ -13,6 +13,7 @@ import java.util.List;
* @author tzl * @author tzl
*/ */
public class DictUtils { public class DictUtils {
/** /**
* 分隔符 * 分隔符
*/ */
...@@ -41,6 +42,7 @@ public class DictUtils { ...@@ -41,6 +42,7 @@ public class DictUtils {
} }
return null; return null;
} }
/** /**
* 根据字典类型和字典值获取字典标签 * 根据字典类型和字典值获取字典标签
* *
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.util.spring; package com.yiring.common.util.spring;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
...@@ -13,24 +14,23 @@ import org.springframework.stereotype.Component; ...@@ -13,24 +14,23 @@ import org.springframework.stereotype.Component;
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public final class SpringUtil implements BeanFactoryPostProcessor, ApplicationContextAware public final class SpringUtil implements BeanFactoryPostProcessor, ApplicationContextAware {
{
/** Spring应用上下文环境 */ /** Spring应用上下文环境 */
private static ConfigurableListableBeanFactory beanFactory; private static ConfigurableListableBeanFactory beanFactory;
private static ApplicationContext applicationContext; private static ApplicationContext applicationContext;
@Override @Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
{
SpringUtil.beanFactory = beanFactory; SpringUtil.beanFactory = beanFactory;
} }
@Override @Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
{
SpringUtil.applicationContext = applicationContext; SpringUtil.applicationContext = applicationContext;
} }
/** /**
* 获取类型为requiredType的对象 * 获取类型为requiredType的对象
* *
...@@ -38,8 +38,7 @@ public final class SpringUtil implements BeanFactoryPostProcessor, ApplicationCo ...@@ -38,8 +38,7 @@ public final class SpringUtil implements BeanFactoryPostProcessor, ApplicationCo
* @return T * @return T
* *
*/ */
public static <T> T getBean(Class<T> clz) throws BeansException public static <T> T getBean(Class<T> clz) throws BeansException {
{
return (T) beanFactory.getBean(clz); return (T) beanFactory.getBean(clz);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论