提交 b5ee39c8 authored 作者: zjm's avatar zjm

fix(单位模块): 优化了单位和区域修改排序的方法

优化了单位和区域修改排序的方法
上级 4f2dd92c
...@@ -42,6 +42,20 @@ public class AreaExhibitionCache { ...@@ -42,6 +42,20 @@ public class AreaExhibitionCache {
return new ArrayList<>(idMap.values()); return new ArrayList<>(idMap.values());
} }
/**
* 查询大于等新序号,小于原序号
* @return
*/
public List<AreaExhibition> findListGeNewAndLtOriginal(Integer newOrder,Integer OriginalOrder){
return new ArrayList<>(idMap.values()).stream().filter(areaExhibition -> (areaExhibition.getOrders()>=newOrder) &&(areaExhibition.getOrders() < OriginalOrder)).collect(Collectors.toList());
}
/**
* 查询大于原序号,小于等于新序号
*/
public List<AreaExhibition> findListLgOriginalAndLeNew(Integer newOrder,Integer OriginalOrder){
return new ArrayList<>(idMap.values()).stream().filter(areaExhibition -> (areaExhibition.getOrders()<=newOrder) &&(areaExhibition.getOrders() > OriginalOrder)).collect(Collectors.toList());
}
/** /**
* 根据区域id查询下级以及 * 根据区域id查询下级以及
*/ */
......
...@@ -42,6 +42,19 @@ public class UnitsCache { ...@@ -42,6 +42,19 @@ public class UnitsCache {
return new ArrayList<>(idMap.values()).stream().filter(units -> units.getExhibitionId().equals(areaExhibitionId)).collect(Collectors.toList()); return new ArrayList<>(idMap.values()).stream().filter(units -> units.getExhibitionId().equals(areaExhibitionId)).collect(Collectors.toList());
} }
/**
* 查询大于等新序号,小于原序号
* @return
*/
public List<Units> findListGeNewAndLtOriginal(Integer newOrder,Integer OriginalOrder){
return new ArrayList<>(idMap.values()).stream().filter(units -> (units.getShowOrder()>=newOrder) &&(units.getShowOrder() < OriginalOrder)).collect(Collectors.toList());
}
/**
* 查询大于原序号,小于等于新序号
*/
public List<Units> findListLgOriginalAndLeNew(Integer newOrder,Integer OriginalOrder){
return new ArrayList<>(idMap.values()).stream().filter(units -> (units.getShowOrder()<=newOrder) &&(units.getShowOrder() > OriginalOrder)).collect(Collectors.toList());
}
public UnitsCache refresh(List<Units> unitsList){ public UnitsCache refresh(List<Units> unitsList){
this.idMap = unitsList.stream().collect(Collectors.toMap(Units::getUnitId, Function.identity())); this.idMap = unitsList.stream().collect(Collectors.toMap(Units::getUnitId, Function.identity()));
......
...@@ -4,6 +4,7 @@ import com.tykj.dev.device.user.cache.AreaExhibitionCache; ...@@ -4,6 +4,7 @@ import com.tykj.dev.device.user.cache.AreaExhibitionCache;
import com.tykj.dev.device.user.subject.dao.AreaExhibitionDao; import com.tykj.dev.device.user.subject.dao.AreaExhibitionDao;
import com.tykj.dev.device.user.subject.entity.Area; import com.tykj.dev.device.user.subject.entity.Area;
import com.tykj.dev.device.user.subject.entity.AreaExhibition; import com.tykj.dev.device.user.subject.entity.AreaExhibition;
import com.tykj.dev.device.user.subject.entity.Units;
import com.tykj.dev.device.user.subject.service.AreaExhibitionService; import com.tykj.dev.device.user.subject.service.AreaExhibitionService;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -55,11 +56,41 @@ public class AreaExhibitionServiceImpl implements AreaExhibitionService { ...@@ -55,11 +56,41 @@ public class AreaExhibitionServiceImpl implements AreaExhibitionService {
@Override @Override
public AreaExhibition save(AreaExhibition areaExhibition) { public AreaExhibition save(AreaExhibition areaExhibition) {
if (areaExhibition.getId()==null){
areaExhibition.setOrders(areaExhibitionCache.findAll().size()+1);
}else {
AreaExhibition oldAreaExhibition = areaExhibitionCache.findById(areaExhibition.getId());
int count=areaExhibitionCache.findAll().size();
if (!oldAreaExhibition.getOrders().equals(areaExhibition.getOrders())){
if (count<areaExhibition.getOrders()){
areaExhibition.setOrders(count+1);
}else {
sortingAreaExhibition(areaExhibition.getOrders(),oldAreaExhibition.getOrders());
}
}
}
AreaExhibition areaExhibition1= areaExhibitionDao.save(areaExhibition); AreaExhibition areaExhibition1= areaExhibitionDao.save(areaExhibition);
areaExhibitionCache.refresh(areaExhibitionDao.findAll()); areaExhibitionCache.refresh(areaExhibitionDao.findAll());
return areaExhibition1; return areaExhibition1;
} }
private void sortingAreaExhibition(Integer originalOrder,Integer newOrder){
List<AreaExhibition> areaExhibitions;
if (originalOrder>newOrder){
areaExhibitions=areaExhibitionCache.findListGeNewAndLtOriginal(newOrder,originalOrder);
areaExhibitions.forEach(
areaExhibition -> areaExhibition.setOrders(areaExhibition.getOrders()+1)
);
}else {
areaExhibitions=areaExhibitionCache.findListLgOriginalAndLeNew(newOrder,originalOrder);
areaExhibitions.forEach(
areaExhibition -> areaExhibition.setOrders(areaExhibition.getOrders()-1)
);
}
areaExhibitionCache.refresh(areaExhibitionDao.saveAll(areaExhibitions));
}
@Override @Override
public boolean delete(Integer id) { public boolean delete(Integer id) {
return false; return false;
......
...@@ -501,6 +501,7 @@ public class UnitsServiceImpl implements UnitsService { ...@@ -501,6 +501,7 @@ public class UnitsServiceImpl implements UnitsService {
//创建单位ub 区域id绑定为b //创建单位ub 区域id绑定为b
units.setAreaId(area.getId()); units.setAreaId(area.getId());
units.setType(levelToType(unitsAddVo.getLevel())); units.setType(levelToType(unitsAddVo.getLevel()));
units.setShowOrder(unitsCache.findAll().size()+1);
unitsDao.save(units); unitsDao.save(units);
unitsCache.refresh(unitsDao.findAll()); unitsCache.refresh(unitsDao.findAll());
areaCache.refresh(areaDao.findAll()); areaCache.refresh(areaDao.findAll());
...@@ -544,12 +545,38 @@ public class UnitsServiceImpl implements UnitsService { ...@@ -544,12 +545,38 @@ public class UnitsServiceImpl implements UnitsService {
areaDao.save(oldArea); areaDao.save(oldArea);
} }
} }
if (!unitsOld.getShowOrder().equals(units.getShowOrder())){
int count=unitsCache.findAll().size();
if (units.getShowOrder()>count){
units.setShowOrder(count+1);
}else {
sortingUnit(unitsOld.getShowOrder(),units.getShowOrder());
}
}
unitsDao.save(units); unitsDao.save(units);
unitsCache.refresh(unitsDao.findAll()); unitsCache.refresh(unitsDao.findAll());
areaCache.refresh(areaDao.findAll()); areaCache.refresh(areaDao.findAll());
return units; return units;
} }
private void sortingUnit(Integer originalOrder,Integer newOrder){
List<Units> unitsList;
if (originalOrder>newOrder){
unitsList=unitsCache.findListGeNewAndLtOriginal(newOrder,originalOrder);
unitsList.forEach(
units -> units.setShowOrder(units.getShowOrder()+1)
);
}else {
unitsList=unitsCache.findListLgOriginalAndLeNew(newOrder,originalOrder);
unitsList.forEach(
units -> units.setShowOrder(units.getShowOrder()-1)
);
}
unitsCache.refresh(unitsDao.saveAll(unitsList));
}
/** /**
* 工具类 * 工具类
* @return 单位类型 * @return 单位类型
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论