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

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

优化了单位和区域修改排序的方法
上级 4f2dd92c
......@@ -42,6 +42,20 @@ public class AreaExhibitionCache {
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查询下级以及
*/
......
......@@ -42,6 +42,19 @@ public class UnitsCache {
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){
this.idMap = unitsList.stream().collect(Collectors.toMap(Units::getUnitId, Function.identity()));
......
......@@ -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.entity.Area;
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.misc.exception.ApiException;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -55,11 +56,41 @@ public class AreaExhibitionServiceImpl implements AreaExhibitionService {
@Override
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);
areaExhibitionCache.refresh(areaExhibitionDao.findAll());
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
public boolean delete(Integer id) {
return false;
......
......@@ -501,6 +501,7 @@ public class UnitsServiceImpl implements UnitsService {
//创建单位ub 区域id绑定为b
units.setAreaId(area.getId());
units.setType(levelToType(unitsAddVo.getLevel()));
units.setShowOrder(unitsCache.findAll().size()+1);
unitsDao.save(units);
unitsCache.refresh(unitsDao.findAll());
areaCache.refresh(areaDao.findAll());
......@@ -544,12 +545,38 @@ public class UnitsServiceImpl implements UnitsService {
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);
unitsCache.refresh(unitsDao.findAll());
areaCache.refresh(areaDao.findAll());
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 单位类型
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论