package com.doumee.service.system.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.service.business.third.model.LoginUserInfo;
|
import com.doumee.service.business.third.model.PageData;
|
import com.doumee.service.business.third.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.dao.system.SystemDictDataMapper;
|
import com.doumee.dao.system.SystemDictMapper;
|
import com.doumee.dao.system.dto.PlatformConfigDTO;
|
import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
|
import com.doumee.dao.system.dto.VisitConfigDTO;
|
import com.doumee.dao.system.model.SystemDict;
|
import com.doumee.dao.system.model.SystemDictData;
|
import com.doumee.dao.system.vo.SystemDictDataListVO;
|
import com.doumee.service.system.SystemDictDataService;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.StringUtils;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 字典数据Service实现
|
* @author Eva.Caesar Liu
|
* @date 2023/03/21 14:49
|
*/
|
@Service
|
public class SystemDictDataServiceImpl implements SystemDictDataService {
|
|
@Autowired
|
private SystemDictDataMapper systemDictDataMapper;
|
|
@Autowired
|
private SystemDictMapper systemDictMapper;
|
@Override
|
public Integer create(SystemDictData systemDictData) {
|
systemDictDataMapper.insert(systemDictData);
|
return systemDictData.getId();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
SystemDictData systemDictData = new SystemDictData();
|
systemDictData.setId(id);
|
systemDictData.setDeleted(Boolean.TRUE);
|
this.updateById(systemDictData);
|
}
|
|
@Override
|
@Transactional
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
for (Integer id : ids) {
|
this.deleteById(id);
|
}
|
}
|
|
@Override
|
public void updateById(SystemDictData systemDictData) {
|
systemDictDataMapper.updateById(systemDictData);
|
}
|
|
@Override
|
@Transactional
|
public void updateByIdInBatch(List<SystemDictData> systemDictDatas) {
|
if (CollectionUtils.isEmpty(systemDictDatas)) {
|
return;
|
}
|
for (SystemDictData systemDictData: systemDictDatas) {
|
this.updateById(systemDictData);
|
}
|
}
|
|
@Override
|
public SystemDictData findById(Integer id) {
|
return systemDictDataMapper.selectById(id);
|
}
|
|
@Override
|
public SystemDictData findOne(SystemDictData systemDictData) {
|
Wrapper<SystemDictData> wrapper = new QueryWrapper<>(systemDictData);
|
return systemDictDataMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<SystemDictData> findList(SystemDictData systemDictData) {
|
Wrapper<SystemDictData> wrapper = new QueryWrapper<>(systemDictData);
|
return systemDictDataMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<SystemDictDataListVO> findPage(PageWrap<QuerySystemDictDataDTO> pageWrap) {
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
return PageData.from(new PageInfo<>(systemDictDataMapper.selectManageList(pageWrap.getModel())));
|
}
|
|
@Override
|
public long count(SystemDictData systemDictData) {
|
Wrapper<SystemDictData> wrapper = new QueryWrapper<>(systemDictData);
|
return systemDictDataMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public List<SystemDictData> findList(Integer dicId,List<String> codes) {
|
QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(Objects.nonNull(dicId),SystemDictData::getDictId,dicId)
|
.in(SystemDictData::getLabel,codes);
|
return systemDictDataMapper.selectList(wrapper);
|
}
|
|
|
|
private SystemDictData getSystemDictDataListVO(SystemDict systemDict) {
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
SystemDictData systemDictData = new SystemDictData();
|
systemDictData.setDictId(systemDict.getId());
|
systemDictData.setDisabled(true);
|
systemDictData.setSort(Constants.ONE);
|
systemDictData.setCreateTime(new Date());
|
systemDictData.setUpdateTime(new Date());
|
systemDictData.setCreateUser(loginUserInfo.getId());
|
systemDictData.setUpdateUser(loginUserInfo.getId());
|
|
return systemDictData;
|
}
|
|
|
@Override
|
public VisitConfigDTO getVisitConfigDTO() {
|
VisitConfigDTO visitConfigDTO = new VisitConfigDTO();
|
SystemDict systemDict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda().eq(SystemDict::getCode,Constants.SYSTEM));
|
if(Objects.isNull(systemDict)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典类不存在");
|
}
|
List<SystemDictData> systemDictList = systemDictDataMapper.selectList(
|
new QueryWrapper<SystemDictData>().lambda().eq(SystemDictData::getDictId,systemDict.getId()));
|
if(!com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictList)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
|
}
|
try {visitConfigDTO.setReservationWay(Integer.parseInt(setDataByLabel(systemDictList,Constants.MDJ_VISIT_REQUIRED))); }catch (Exception e){ }
|
try {visitConfigDTO.setCheckVisit(Integer.parseInt(setDataByLabel(systemDictList,Constants.BEVISITED_USER_VALID)));}catch (Exception e){}
|
try {visitConfigDTO.setHealthCard(Integer.parseInt(setDataByLabel(systemDictList,Constants.HEALTH_CARD)));}catch (Exception e){}
|
try {visitConfigDTO.setIsAnswer(Integer.parseInt(setDataByLabel(systemDictList,Constants.PROBLEM_VISIT_REQUIRED)));}catch (Exception e){}
|
visitConfigDTO.setTheme(setDataByLabel(systemDictList,Constants.THEME));
|
visitConfigDTO.setDescription(setDataByLabel(systemDictList,Constants.DESCRIPTION));
|
visitConfigDTO.setVisitNotice(setDataByLabel(systemDictList,Constants.VISIT_NOTICE));
|
try {visitConfigDTO.setDoorsVisitRequired(Integer.parseInt(setDataByLabel(systemDictList,Constants.SELECT_DOORS_VISIT_REQUIRED)));}catch (Exception e){}
|
try {visitConfigDTO.setFrezzDays(Integer.parseInt(setDataByLabel(systemDictList,Constants.TIMEOUT_FREEZE)));}catch (Exception e){}
|
visitConfigDTO.setVisitTips(setDataByLabel(systemDictList,Constants.VISIT_TIPS));
|
visitConfigDTO.setVisitMap(setDataByLabel(systemDictList,Constants.VISIT_GUIDEMAP));
|
return visitConfigDTO;
|
}
|
|
private String setDataByLabel(List<SystemDictData> systemDictList, String visitGuidemap) {
|
for(SystemDictData dictData : systemDictList){
|
if(org.apache.commons.lang3.StringUtils.equals(dictData.getLabel(),visitGuidemap)){
|
return (dictData!=null?dictData.getCode():"");
|
}
|
}
|
return "";
|
}
|
@Override
|
public PlatformConfigDTO getPlatformConfigDTO(){
|
PlatformConfigDTO visitConfigDTO = new PlatformConfigDTO();
|
SystemDict systemDict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda().eq(SystemDict::getCode,Constants.PLATFORM));
|
if(Objects.isNull(systemDict)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典类不存在");
|
}
|
List<SystemDictData> systemDictList = systemDictDataMapper.selectList(
|
new QueryWrapper<SystemDictData>().lambda().eq(SystemDictData::getDictId,systemDict.getId()));
|
if(!com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictList)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
|
}
|
visitConfigDTO.setBookTips( setDataByLabel(systemDictList,Constants.PLATFORM_BOOKING_TIPS));
|
visitConfigDTO.setTipsImg( setDataByLabel(systemDictList,Constants.PLATFORM_GUIDEMAP));
|
return visitConfigDTO;
|
}
|
@Override
|
@Transactional
|
public void updatePlatformConfig(PlatformConfigDTO visitConfigDTO) {
|
if(Objects.isNull(visitConfigDTO)
|
&& Objects.isNull(visitConfigDTO.getBookTips())
|
&& Objects.isNull(visitConfigDTO.getTipsImg())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(loginUserInfo == null){
|
loginUserInfo = visitConfigDTO.getLoginUserInfo();
|
}
|
SystemDict systemDict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda().eq(SystemDict::getCode,Constants.PLATFORM));
|
if(Objects.isNull(systemDict)){
|
systemDict = new SystemDict();
|
systemDict.setCreateUser(loginUserInfo.getId());
|
systemDict.setCreateTime(new Date());
|
systemDict.setUpdateUser(systemDict.getCreateUser());
|
systemDict.setUpdateTime(systemDict.getCreateTime());
|
systemDict.setCode(Constants.PLATFORM);
|
systemDict.setRemark("月台相关配置");
|
systemDict.setDeleted(Boolean.FALSE);
|
systemDictMapper.insert(systemDict);
|
}
|
List<SystemDictData> systemDictList = systemDictDataMapper.selectList(
|
new QueryWrapper<SystemDictData>().lambda().eq(SystemDictData::getDictId,systemDict.getId()));
|
if(!com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictList)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
|
}
|
dealDictData(systemDictList,systemDict.getId(),Constants.PLATFORM_GUIDEMAP,"物流车园区导览图",loginUserInfo, visitConfigDTO.getTipsImg()==null?"":visitConfigDTO.getTipsImg().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.PLATFORM_BOOKING_TIPS,"物流车预约指南",loginUserInfo, visitConfigDTO.getBookTips()==null?"":visitConfigDTO.getBookTips().toString());
|
}
|
|
@Override
|
@Transactional
|
public void updateVisitConfig(VisitConfigDTO visitConfigDTO) {
|
if(Objects.isNull(visitConfigDTO)
|
&& Objects.isNull(visitConfigDTO.getReservationWay())
|
&& Objects.isNull(visitConfigDTO.getCheckVisit())
|
&& Objects.isNull(visitConfigDTO.getHealthCard())
|
&& Objects.isNull(visitConfigDTO.getIsAnswer())
|
&& StringUtils.isEmpty(visitConfigDTO.getTheme())
|
&& StringUtils.isEmpty(visitConfigDTO.getDoorsVisitRequired())
|
&& StringUtils.isEmpty(visitConfigDTO.getVisitMap())
|
&& StringUtils.isEmpty(visitConfigDTO.getVisitTips())
|
&& StringUtils.isEmpty(visitConfigDTO.getDescription())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(loginUserInfo == null){
|
loginUserInfo = visitConfigDTO.getLoginUserInfo();
|
}
|
SystemDict systemDict = systemDictMapper.selectOne(new QueryWrapper<SystemDict>().lambda().eq(SystemDict::getCode,Constants.SYSTEM));
|
if(Objects.isNull(systemDict)){
|
systemDict = new SystemDict();
|
systemDict.setCreateUser(loginUserInfo.getId());
|
systemDict.setCreateTime(new Date());
|
systemDict.setUpdateUser(systemDict.getCreateUser());
|
systemDict.setUpdateTime(systemDict.getCreateTime());
|
systemDict.setCode(Constants.SYSTEM);
|
systemDict.setRemark("系统配置");
|
systemDict.setDeleted(Boolean.FALSE);
|
systemDictMapper.insert(systemDict);
|
}
|
List<SystemDictData> systemDictList = systemDictDataMapper.selectList(
|
new QueryWrapper<SystemDictData>().lambda().eq(SystemDictData::getDictId,systemDict.getId()));
|
if(!com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemDictList)){
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
|
}
|
dealDictData(systemDictList,systemDict.getId(),Constants.MDJ_VISIT_REQUIRED,"访客来访预约方式",loginUserInfo, visitConfigDTO.getReservationWay()==null?"":visitConfigDTO.getReservationWay().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.BEVISITED_USER_VALID,"访客被访人校验方式",loginUserInfo, visitConfigDTO.getCheckVisit()==null?"":visitConfigDTO.getCheckVisit().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.HEALTH_CARD,"访客健康证是否必填",loginUserInfo, visitConfigDTO.getHealthCard()==null?"":visitConfigDTO.getHealthCard().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.PROBLEM_VISIT_REQUIRED,"访客是否需要答题",loginUserInfo, visitConfigDTO.getIsAnswer()==null?"":visitConfigDTO.getIsAnswer().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.THEME,"访客答题主题",loginUserInfo, visitConfigDTO.getTheme()==null?"":visitConfigDTO.getTheme().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.DESCRIPTION,"访客答题说明",loginUserInfo, visitConfigDTO.getDescription()==null?"":visitConfigDTO.getDescription().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.VISIT_NOTICE,"入厂须知",loginUserInfo, visitConfigDTO.getVisitNotice()==null?"":visitConfigDTO.getVisitNotice().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.SELECT_DOORS_VISIT_REQUIRED,"自选门禁配置",loginUserInfo, visitConfigDTO.getDoorsVisitRequired()==null?"":visitConfigDTO.getDoorsVisitRequired().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.TIMEOUT_FREEZE,"人员门禁授权冻结天数配置",loginUserInfo, visitConfigDTO.getFrezzDays()==null?"":visitConfigDTO.getFrezzDays().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.VISIT_TIPS,"访客预约指南",loginUserInfo, visitConfigDTO.getVisitTips()==null?"":visitConfigDTO.getVisitTips().toString());
|
dealDictData(systemDictList,systemDict.getId(),Constants.VISIT_GUIDEMAP,"访客园区导览图",loginUserInfo, visitConfigDTO.getVisitMap()==null?"":visitConfigDTO.getVisitMap().toString());
|
}
|
|
private void dealDictData(List<SystemDictData> systemDictList,Integer dictId, String label, String remark, LoginUserInfo loginUserInfo, String code) {
|
SystemDictData reservationWay =null;
|
for(SystemDictData dictData : systemDictList){
|
if(org.apache.commons.lang3.StringUtils.equals(dictData.getLabel(),label)){
|
reservationWay = dictData;
|
break;
|
}
|
}
|
if(Objects.isNull(reservationWay)){
|
reservationWay = new SystemDictData();
|
reservationWay.setCreateUser(loginUserInfo.getId());
|
reservationWay.setCreateTime(new Date());
|
reservationWay.setUpdateUser(loginUserInfo.getId());
|
reservationWay.setUpdateTime(reservationWay.getCreateTime());
|
reservationWay.setLabel(label);
|
reservationWay.setCode(code);
|
reservationWay.setDictId(dictId);
|
reservationWay.setRemark(remark);
|
systemDictDataMapper.insert(reservationWay);
|
}else{
|
reservationWay.setCode(code);
|
reservationWay.setUpdateUser(loginUserInfo.getId());
|
reservationWay.setUpdateTime(new Date());
|
systemDictDataMapper.updateById(reservationWay);
|
}
|
}
|
}
|