已完成:

①字典列表,配置编码移到配置内容前一列
    ②系统字典与业务字典的item_code字段int类型改为varchar(64)
    ③业务字典和系统字典表增加一个字段,level_no,层级(新增、修改已加入)
    ④完成条件分页查询(折叠逻辑与无条件查询一致,)
    ⑤优化分页查询代码(预留介入条件排序),
  
  待完善:修改、删除时下层级递归处理待添加事务性及测试(待手动抛异常重点测试)
                      生效范围测试尚未完毕,待处理
         jquery Validate验证层级关系受<sys:treeselect>影响,待处理
                      样式调整:分页样式(尚未调整),
This commit is contained in:
zhangshilin
2018-03-08 20:30:01 +08:00
parent fb383e8cf1
commit 67645d21ca
15 changed files with 717 additions and 185 deletions

View File

@@ -91,47 +91,172 @@ public class ServiceDictInfoService extends BaseService{
return list;
}
/**
* 查询字典分页(含条件查询)
* 查询条件查询顶层分页(含条件查询,考虑排序接入可行性)
* @param page
* @param serviceDictInfo
* @param itType
* @return
*/
public Page<ServiceDictInfo> findDictSearchList(Page<ServiceDictInfo> page, ServiceDictInfo serviceDictInfo, Integer[] itType) {
public Page<ServiceDictInfo> findDictTopSearchList(Page<ServiceDictInfo> page, ServiceDictInfo serviceDictInfo, Integer[] itType) {
// 设置分页参数
serviceDictInfo.setPage(page);
serviceDictInfo.setPage(page);
//根据条件查询符合数据
List<ServiceDictInfo> allList = Lists.newArrayList();
List<ServiceDictInfo> list = Lists.newArrayList();
Integer tempType = 0;
if(serviceDictInfo.getItemType()!=null){
tempType = serviceDictInfo.getItemType();
}
if(itType.length==1){
serviceDictInfo.setItemType(itType[0]);
allList = serviceDictInfoDao.findDictTopSearchList(serviceDictInfo);
}
if(itType.length==2){
if(tempType!=0){
allList = serviceDictInfoDao.findDictTopSearchList(serviceDictInfo);
}else{
List<Integer> tempIntegerList = Lists.newArrayList();
tempIntegerList.add(1);tempIntegerList.add(2);tempIntegerList.add(3);
//Map<String,String> map = DictUtils.getDictOption("SERVICE_DICT_ITM_TYPE");
if(tempIntegerList.contains(itType[0])){
tempIntegerList.remove(itType[0]);
}
if(tempIntegerList.contains(itType[1])){
tempIntegerList.remove(itType[1]);
}
serviceDictInfo.setItemType(tempIntegerList.get(0));
allList = serviceDictInfoDao.findDictTopSearchListN(serviceDictInfo);
}
}
ServiceDictInfo tempSe = new ServiceDictInfo();
tempSe.setServiceDictId(0);
for(ServiceDictInfo se:allList){
se.setParent(tempSe);
}
page.setList(allList);
/*//根据条件查询符合数据
List<ServiceDictInfo> allList = Lists.newArrayList();
List<Integer> tempList = Lists.newArrayList();
List<ServiceDictInfo> list = Lists.newArrayList();
List<ServiceDictInfo> listChild = Lists.newArrayList();
List<ServiceDictInfo> listParent = Lists.newArrayList();
Integer tempType = 0;
Integer total = 0;
Integer pageCount = 0;
Integer lostCount = 0;
if(serviceDictInfo.getItemType()!=null){
tempType = serviceDictInfo.getItemType();
}
if(itType.length==1){
serviceDictInfo.setItemType(itType[0]);
allList = serviceDictInfoDao.findDictSearchList(serviceDictInfo);
}
if(itType.length==2){
if(tempType!=0){
allList = serviceDictInfoDao.findDictSearchList(serviceDictInfo);
}else{
List<Integer> tempIntegerList = Lists.newArrayList();
tempIntegerList.add(1);tempIntegerList.add(2);tempIntegerList.add(3);
//Map<String,String> map = DictUtils.getDictOption("SERVICE_DICT_ITM_TYPE");
if(tempIntegerList.contains(itType[0])){
tempIntegerList.remove(itType[0]);
}
if(tempIntegerList.contains(itType[1])){
tempIntegerList.remove(itType[1]);
}
serviceDictInfo.setItemType(tempIntegerList.get(0));
allList = serviceDictInfoDao.findDictSearchListN(serviceDictInfo);
}
}
//处理数据
//page.list中有多少个不是page.list中的顶层(其上级在page.list)
ServiceDictInfo tempSe = new ServiceDictInfo();
tempSe.setServiceDictId(0);
//取出主键优化处理
for(ServiceDictInfo se:allList){
if(se!=null&&se.getServiceDictId()!=null){
tempList.add(se.getServiceDictId());
}
}
for(ServiceDictInfo se:allList){
if(se!=null&&se.getParent()!=null&&se.getParent().getServiceDictId()!=null){
//ServiceDictInfo temp = serviceDictInfoDao.getDictById(se.getParent().getServiceDictId());
if(tempList.contains(se.getParent().getServiceDictId())){
listChild.add(se);
lostCount+=lostCount;
}else{
se.setParent(tempSe);
listParent.add(se);
}
}
}
//确定总页数
total = allList.size() - lostCount;
pageCount = total%page.getPageSize()==0?total%page.getPageSize():(total%page.getPageSize()+1);
if(pageCount==0){
pageCount=1;
}
//取出所有的顶层
//获取分页 每页数量pageSize、、当前页数pageNo (排序,,,) 每页第一个(pageNo-1)*pageSize+1 最后一个pageNo*pageSize
List<ServiceDictInfo> parentShow = Lists.newArrayList();
for(int i=0;i<listParent.size();i++){
if(i>=((page.getPageNo()-1)*page.getPageSize())&&i<page.getPageNo()*page.getPageSize()){
parentShow.add(listParent.get(i));
}
}
parentShow.addAll(listChild);
ServiceDictInfo.sortList(list,parentShow,0,true);
page.setList(list);*/
return page;
}
/**
* 条件查询所有数据
* @param serviceDictInfo
* @param itType
* @return
*/
public List<ServiceDictInfo> findAllDictSearchList(ServiceDictInfo serviceDictInfo,Integer[] itType){
List<ServiceDictInfo> list = Lists.newArrayList();
Integer tempType = 0;
if(serviceDictInfo.getItemType()!=null){
tempType = serviceDictInfo.getItemType();
}
//查出分页
if(itType.length==1){
serviceDictInfo.setItemType(itType[0]);
list = serviceDictInfoDao.findDictSearchList(serviceDictInfo);
serviceDictInfo.setItemType(itType[0]);
list = serviceDictInfoDao.findAllDictSearchList(serviceDictInfo);
}
if(itType.length==2){
if(tempType!=0){
list = serviceDictInfoDao.findTopDictList(serviceDictInfo);
}else{
List<Integer> tempList = Lists.newArrayList();
tempList.add(1);tempList.add(2);tempList.add(3);
//Map<String,String> map = DictUtils.getDictOption("SERVICE_DICT_ITM_TYPE");
if(tempList.contains(itType[0])){
tempList.remove(itType[0]);
}
if(tempList.contains(itType[1])){
tempList.remove(itType[1]);
}
serviceDictInfo.setItemType(tempList.get(0));
list = serviceDictInfoDao.findDictSearchListN(serviceDictInfo);
}
if(tempType!=0){
list = serviceDictInfoDao.findAllDictSearchList(serviceDictInfo);
}else{
List<Integer> tempIntegerList = Lists.newArrayList();
tempIntegerList.add(1);tempIntegerList.add(2);tempIntegerList.add(3);
//Map<String,String> map = DictUtils.getDictOption("SERVICE_DICT_ITM_TYPE");
if(tempIntegerList.contains(itType[0])){
tempIntegerList.remove(itType[0]);
}
if(tempIntegerList.contains(itType[1])){
tempIntegerList.remove(itType[1]);
}
serviceDictInfo.setItemType(tempIntegerList.get(0));
list = serviceDictInfoDao.findAllDictSearchListN(serviceDictInfo);
}
}
if(tempType!=0){
serviceDictInfo.setItemType(tempType);
}else{
serviceDictInfo.setItemType(null);
}
page.setList(list);
return page;
return list;
}
@@ -157,7 +282,7 @@ public class ServiceDictInfoService extends BaseService{
}
/**
* 新增或修改业务字典表
* 新增或修改业务字典表(添加层级改变)
* @param serviceDictInfo
*/
public void saveOrUpdate(ServiceDictInfo serviceDictInfo) {
@@ -168,12 +293,16 @@ public class ServiceDictInfoService extends BaseService{
){
ServiceDictInfo parent = new ServiceDictInfo();
parent.setServiceDictId(0);
parent.setLevelNo(0);
serviceDictInfo.setParent(parent);
}
if(serviceDictInfo.getParent().getServiceDictId()!=0){
ServiceDictInfo parent = serviceDictInfoDao.getDictById(serviceDictInfo.getParent().getServiceDictId());
serviceDictInfo.setParent(parent);
}
SysUser user = UserUtils.getUser();
if(StringUtil.isEmpty(serviceDictInfo.getServiceDictId())) {//新增
Integer maxCode = serviceDictInfoDao.findMaxItemCode();
serviceDictInfo.setItemCode(maxCode==null?1:(maxCode+1));
serviceDictInfo.setLevelNo(serviceDictInfo.getParent().getLevelNo()+1);
serviceDictInfo.setIsValid(1);
serviceDictInfo.setServiceDictCreator(user);
serviceDictInfo.setCreateTime(new Date());
@@ -182,12 +311,41 @@ public class ServiceDictInfoService extends BaseService{
serviceDictInfoDao.insertDict(serviceDictInfo);
}
else {//修改
List<ServiceDictInfo> resultList = Lists.newArrayList();
List<ServiceDictInfo> list = serviceDictInfoDao.getDictByParentId(serviceDictInfo.getServiceDictId());
//处理层级
if(serviceDictInfo.getParent().getServiceDictId()==0){
serviceDictInfo.setLevelNo(1);
//处理子集
childLevel(serviceDictInfo,list,resultList);
}else{
serviceDictInfo.setLevelNo(serviceDictInfo.getParent().getLevelNo()+1);
//处理子集
childLevel(serviceDictInfo,list,resultList);
}
serviceDictInfo.setServiceDictEditor(user);
serviceDictInfo.setEditTime(new Date());
for(ServiceDictInfo sc:resultList){
serviceDictInfoDao.updateLevelNo(sc);
}
serviceDictInfoDao.update(serviceDictInfo);
}
}
//处理子集层级
public void childLevel(ServiceDictInfo serviceDictInfo, List<ServiceDictInfo> list,List<ServiceDictInfo> resultList){
for(ServiceDictInfo se:list){
se.setLevelNo(serviceDictInfo.getLevelNo()+1);
resultList.add(se);
List<ServiceDictInfo> newList = serviceDictInfoDao.getDictByParentId(se.getServiceDictId());
childLevel(se,newList,resultList);
}
}
/**
* 删除
@@ -209,7 +367,7 @@ public class ServiceDictInfoService extends BaseService{
/**
* 根据itemCode查出对象集合
*/
public List<ServiceDictInfo> findByItemCode(Integer itemCode){
public List<ServiceDictInfo> findByItemCode(String itemCode){
return serviceDictInfoDao.findByItemCode(itemCode);
}