This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/service/basics/SysDictInfoService.java

326 lines
9.8 KiB
Java
Raw Normal View History

package com.nis.web.service.basics;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Lists;
import com.nis.domain.Page;
import com.nis.domain.SysUser;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.maat.EffectiveRangeCfg;
import com.nis.domain.maat.EffectiveRangeCfg.AreaIsp;
import com.nis.util.ConfigDictUtils;
import com.nis.util.Configurations;
import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.dao.basics.SysDictInfoDao;
import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
@Service
public class SysDictInfoService extends BaseService{
@Autowired
private SysDictInfoDao sysDictInfoDao;
/**
* 查询顶层分页()
* @param page
* @param sysDictInfo
* @param itType
* @return
*/
public Page<SysDictInfo> findTopDictList(Page<SysDictInfo> page, SysDictInfo sysDictInfo, List<Integer> itType) {
// 设置分页参数
sysDictInfo.setPage(page);
//根据条件查询符合数据
sysDictInfo.setConditionType(itType);
List<SysDictInfo> allList = sysDictInfoDao.findTopDictList(sysDictInfo);
SysDictInfo tempSe = new SysDictInfo();
tempSe.setSysDictId(0);
for(SysDictInfo se:allList){
se.setParent(tempSe);
}
page.setList(allList);
return page;
}
/**
* 根据条件查询所有数据
* @param page
* @param sysDictInfo
* @param intArr
* @return
*/
public List<SysDictInfo> findAllSysDictInfo(SysDictInfo sysDictInfo, List<Integer> itType,String orderBy) {
sysDictInfo.setConditionType(itType);
return sysDictInfoDao.findAllSysDictInfo(sysDictInfo,orderBy);
}
/**
* 查询所有有效字典配置
*/
public List<SysDictInfo> findAllDictList() {
return sysDictInfoDao.findAllDictList(new SysDictInfo());
}
/**
* 根据主键查询生效范围字典详细信息
* @param sysDictId
* @return
*/
public SysDictInfo getDictById(Integer sysDictId) {
return sysDictInfoDao.getDictById(sysDictId);
}
/**
* 新增或修改生效范围字典表
* @param sysDictInfo
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveOrUpdate(SysDictInfo sysDictInfo) {
if(sysDictInfo.getParent()==null
||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==null)
||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==-1)
||(sysDictInfo.getParent()!=null&&sysDictInfo.getParent().getSysDictId()==0)
){
SysDictInfo parent = new SysDictInfo();
parent.setSysDictId(0);
parent.setLevelNo(0);
sysDictInfo.setParent(parent);
}
if(sysDictInfo.getParent().getSysDictId()!=0){
SysDictInfo parent = sysDictInfoDao.getDictById(sysDictInfo.getParent().getSysDictId());
sysDictInfo.setParent(parent);
}
SysUser user = UserUtils.getUser();
if(StringUtil.isEmpty(sysDictInfo.getSysDictId())) {//新增
sysDictInfo.setLevelNo(sysDictInfo.getParent().getLevelNo()+1);
sysDictInfo.setIsValid(1);
sysDictInfo.setSysDictCreator(user);
sysDictInfo.setCreateTime(new Date());
sysDictInfo.setSysDictEditor(user);
sysDictInfo.setEditTime(sysDictInfo.getCreateTime());
sysDictInfo.setIsInitianlize(0);//是否为初始化数据默认为0
sysDictInfoDao.insertDict(sysDictInfo);
}
else {//修改
List<SysDictInfo> resultList = Lists.newArrayList();
List<SysDictInfo> list = sysDictInfoDao.getDictByParentId(sysDictInfo.getSysDictId());
//处理层级
if(sysDictInfo.getParent().getSysDictId()==0){
sysDictInfo.setLevelNo(1);
//处理子集
childLevel(sysDictInfo,list,resultList);
}else{
sysDictInfo.setLevelNo(sysDictInfo.getParent().getLevelNo()+1);
//处理子集
childLevel(sysDictInfo,list,resultList);
}
sysDictInfo.setSysDictEditor(user);
sysDictInfo.setEditTime(new Date());
for(SysDictInfo sc:resultList){
sysDictInfoDao.updateLevelNo(sc);
}
sysDictInfoDao.update(sysDictInfo);
}
}
//处理子集层级
public void childLevel(SysDictInfo sysDictInfo, List<SysDictInfo> list,List<SysDictInfo> resultList){
for(SysDictInfo se:list){
se.setLevelNo(sysDictInfo.getLevelNo()+1);
resultList.add(se);
List<SysDictInfo> newList = sysDictInfoDao.getDictByParentId(se.getSysDictId());
childLevel(se,newList,resultList);
}
}
/**
* 删除
* @param sysDictInfo
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void deleteDict(String mulitId) {
String[] ids = mulitId.split(",");
for(String id:ids){
if (!id.equals("")) {
List<SysDictInfo> list = Lists.newArrayList();
SysDictInfo sysDictInfo = sysDictInfoDao.getDictById(Integer.valueOf(id));
if(sysDictInfo!=null){
SysDictInfo.sortList(list, sysDictInfoDao.findAllDictList(new SysDictInfo()), sysDictInfo.getSysDictId(), true);
list.add(sysDictInfo);
for(SysDictInfo se:list){
se.setIsValid(0);
sysDictInfoDao.delete(se);
}
}
}
}
}
/**
* 查询该类型所有的非叶子配置
* @param itType
* @return
*/
public List<SysDictInfo> findAllNoLeafDictList(String itType) {
List<SysDictInfo> list = Lists.newArrayList();
List<Integer> intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SYS_DICT_ITM_TYPE", ""), itType);
for(Integer intType:intArr){
List<SysDictInfo> tempList = sysDictInfoDao.findAllNoLeafDictList(intType);
list.addAll(tempList);
}
return list;
}
/**
* 根据itemCode查出对象集合
* @param itemCode
* @return
*/
public List<SysDictInfo> findByItemCode(String itemCode) {
return sysDictInfoDao.findByItemCode(itemCode);
}
/**
* 根据上级id选出所有下级
* @param parent
* @return
*/
public List<SysDictInfo> getDictByParentId(Integer parentId) {
return sysDictInfoDao.getDictByParentId(parentId);
}
public List<SysDictInfo> getDistrictDict(String tableName){
return sysDictInfoDao.getDistrictDict(tableName);
}
// 组织区域、运营商配置下发格式
public String setEffectiveRange(String areaEffectiveIds){
EffectiveRangeCfg rangeCfg = new EffectiveRangeCfg();
2018-09-29 21:41:03 +08:00
List<List<AreaIsp>> effectiveRangeList = new ArrayList();
List<String> locaValueList = new ArrayList();
List<String> ispValueList = new ArrayList();
for (String areaEffectiveId : StringUtils.split(areaEffectiveIds, ",")) {
2018-09-29 21:41:03 +08:00
List<AreaIsp> areaIspList = new ArrayList();
AreaIsp area = new AreaIsp();
area.setTag(Constants.AREA_TAG);
AreaIsp isp = new AreaIsp();
isp.setTag(Constants.ISP_TAG);
String areaStr = "";
// 区域和运营商
if(areaEffectiveId.contains(":")) {
2018-09-29 21:41:03 +08:00
int index = areaEffectiveId.indexOf(":");
String areaCode = areaEffectiveId.substring(0, index);
String ispCode = areaEffectiveId.substring(index+1);
// 查询该区域信息及其所有父节点信息
List<SysDictInfo> list = sysDictInfoDao.getEffectiveArea(areaCode);
for (SysDictInfo sysDictInfo : list) {
2018-09-29 21:41:03 +08:00
areaStr += sysDictInfo.getItemValue();
while(sysDictInfo.getParent().getSysDictId() != 0) {
sysDictInfo = sysDictInfoDao.getDictById(sysDictInfo.getParent().getSysDictId());
2018-09-29 21:41:03 +08:00
areaStr += "/"+sysDictInfo.getItemValue();
}
}
2018-09-29 21:41:03 +08:00
String areaItemValue = StringUtils.revertStr(areaStr, "/");
if(!locaValueList.contains(areaItemValue)) {
2018-09-29 21:41:03 +08:00
locaValueList = new ArrayList();
ispValueList = new ArrayList();
locaValueList.add(areaItemValue);
2018-09-29 21:41:03 +08:00
}else {
// 区域相同就只加运营商信息
SysDictInfo ispStr = sysDictInfoDao.getDictByItemCode(ispCode);
if(!ispValueList.contains(ispStr.getItemValue())) {
ispValueList.add(ispStr.getItemValue());
if(ispValueList.size() < 2) {
isp.setValue(ispValueList);
areaIspList.add(isp);
effectiveRangeList.add(areaIspList);
}
}
continue;
}
// 查询运营商信息
2018-09-29 21:41:03 +08:00
SysDictInfo ispStr = sysDictInfoDao.getDictByItemCode(ispCode);
if(!ispValueList.contains(ispStr.getItemValue())) {
ispValueList.add(ispStr.getItemValue());
}
2018-09-29 21:41:03 +08:00
area.setValue(locaValueList);
isp.setValue(ispValueList);
areaIspList.add(area);
areaIspList.add(isp);
effectiveRangeList.add(areaIspList);
}else {
2018-09-29 21:41:03 +08:00
// 区域
SysDictInfo dict = sysDictInfoDao.getDictByItemCode(areaEffectiveId);
2018-09-29 21:41:03 +08:00
// 查询所有父节点区域信息
areaStr += dict.getItemValue();
while(dict.getParent().getSysDictId() != 0) {
dict = sysDictInfoDao.getDictById(dict.getParent().getSysDictId());
areaStr += "/"+dict.getItemValue();
}
String areaItemValue = StringUtils.revertStr(areaStr, "/");
if(!locaValueList.contains(areaItemValue)) {
locaValueList = new ArrayList();
locaValueList.add(areaItemValue);
area.setValue(locaValueList);
areaIspList.add(area);
effectiveRangeList.add(areaIspList);
}
}
}
rangeCfg.setEffectiveRangeList(effectiveRangeList);
return gsonToJson(rangeCfg);
}
2018-09-29 21:41:03 +08:00
public static void main(String[] args) {
SysDictInfoService service = new SysDictInfoService();
String json = service.setEffectiveRange("7182:4,7182:5");
System.err.println(json);
}
}