package com.kym.service.miniapp.impl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.kym.common.utils.CommUtil;
import com.kym.entity.miniapp.DataDict;
import com.kym.mapper.miniapp.DataDictMapper;
import com.kym.service.miniapp.DataDictService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 数据字典 服务实现类
*
*
* @author zuy
* @since 2023-08-13
*/
@Service
public class DataDictServiceImpl extends MPJBaseServiceImpl implements DataDictService {
@Override
public Object list(DataDict query) {
var list = lambdaQuery()
.like(CommUtil.isNotEmptyAndNull(query.getCode()), DataDict::getCode, query.getCode())
.like(CommUtil.isNotEmptyAndNull(query.getName()), DataDict::getName, query.getName())
.list();
return list;
}
/*
@Override
public Object listV2(IQuery query) {
QueryChainWrapper wrapper = getWrapper(query.query, DataDict.class);
wrapper.select("distinct(code)");
Long count = wrapper.count();
PageHelper.startPage(query.pageNum, query.pageSize);
List list = wrapper.list();
if (CommUtil.isNotEmptyAndNull(list)) {
List list1 = lambdaQuery().in(CommUtil.isNotEmptyAndNull(list), DataDict::getCode, list.stream().map(DataDict::getCode).collect(Collectors.toList())).list();
return IQuery.newPageBean(count, list1.stream().filter(CommUtil.distinctByKey(DataDict::getCode)).toList());
} else {
return IQuery.newPageBean(0, Collections.emptyList());
}
}*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveOrUpdate(List dictList) {
List list = lambdaQuery().list();
if (CommUtil.isNotEmptyAndNull(list)) {
Map> dbDictMap = list.stream().collect(Collectors.groupingBy(DataDict::getCode));
//校验重名和重复值
dictList.forEach(dict -> {
List dataDicts = dbDictMap.get(dict.getCode());
if (CommUtil.isNotEmptyAndNull(dataDicts)) {
CommUtil.asserts(dataDicts.stream().noneMatch(k-> !Objects.equals(k.getId(), dict.getId()) &&(k.getName().equalsIgnoreCase(dict.getName())||k.getValue().equalsIgnoreCase(dict.getValue()))),String.format("字典%s取值异常,请核对",dict.getCode()));
}
});
}
saveOrUpdateBatch(dictList);
}
}