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.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.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 lombok.extern.java.Log; 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 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 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 wrapper = new QueryWrapper<>(systemDictData); return systemDictDataMapper.selectOne(wrapper); } @Override public List findList(SystemDictData systemDictData) { Wrapper wrapper = new QueryWrapper<>(systemDictData); return systemDictDataMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); return PageData.from(new PageInfo<>(systemDictDataMapper.selectManageList(pageWrap.getModel()))); } @Override public long count(SystemDictData systemDictData) { Wrapper wrapper = new QueryWrapper<>(systemDictData); return systemDictDataMapper.selectCount(wrapper); } @Override public List findList(Integer dicId,List codes) { QueryWrapper 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().lambda().eq(SystemDict::getCode,Constants.SYSTEM)); if(Objects.isNull(systemDict)){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典类不存在"); } List systemDictList = systemDictDataMapper.selectList( new QueryWrapper().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 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().lambda().eq(SystemDict::getCode,Constants.PLATFORM)); if(Objects.isNull(systemDict)){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典类不存在"); } List systemDictList = systemDictDataMapper.selectList( new QueryWrapper().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().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 systemDictList = systemDictDataMapper.selectList( new QueryWrapper().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().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 systemDictList = systemDictDataMapper.selectList( new QueryWrapper().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 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); } } }