zhubaomin
2024-08-16 3edcf811c7a4b5dc8de9117d88d199b0d74e81a6
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/block/BlockSv.java
@@ -1,14 +1,26 @@
package com.dy.pipIrrBase.block;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoBa.BaBlockMapper;
import com.dy.pipIrrGlobal.daoBa.BaMapCoordinatesMapper;
import com.dy.pipIrrGlobal.daoBa.BaMapGraphMapper;
import com.dy.pipIrrGlobal.pojoBa.BaBlock;
import com.dy.pipIrrGlobal.pojoBa.BaMapCoordinates;
import com.dy.pipIrrGlobal.pojoBa.BaMapGraph;
import com.dy.pipIrrGlobal.voBa.VoBlock;
import com.dy.pipIrrGlobal.voBa.VoMapCoordinates;
import com.dy.pipIrrGlobal.voBa.VoMapGraph;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@@ -21,6 +33,12 @@
        this.dao = dao;
    }
    @Autowired
    private BaMapGraphMapper baMapGraphMapper;
    @Autowired
    private BaMapCoordinatesMapper baMapCoordinatesMapper;
    /**
     * 得到一个片区
     * @param id 片区ID
@@ -30,6 +48,16 @@
        return this.dao.selectByPrimaryKey(id) ;
    }
    /**
     * 得到所有片区
     * @return 所有片区集合
     */
    public QueryResultVo<List<BaBlock>> selectAll(){
        QueryResultVo<List<BaBlock>> rsVo = new QueryResultVo<>() ;
        rsVo.obj = this.dao.selectAll() ;
        return rsVo ;
    }
    /**
     * 得到一个片区
     * @param vo 查询条件值对象
@@ -44,8 +72,71 @@
        rsVo.pageSize = vo.pageSize ;
        rsVo.pageCurr = vo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = this.dao.selectSome(params) ;
        return (QueryResultVo.<List<BaBlock>>builder().content(this.dao.selectSome(params))).build() ;
        return rsVo ;
    }
    /**
     * 根据指定条件获取片区,2024-08-14新增,替换原来的片区分页查询
     * @param vo
     * @return
     */
    public QueryResultVo<List<VoBlock>> getBlocks(QueryVo vo){
        vo.setPageCurr((vo.pageCurr -1) * vo.pageSize);
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
        Long itemTotal = this.dao.getBlocksCount(params) ;
        JSONArray array_blocks = null;
        JSONArray array_mapGraphs = null;
        // 获取片区列表
        List<VoBlock> list_blocks = this.dao.getBlocks(params);
        if(list_blocks != null && list_blocks.size() > 0) {
            array_blocks = (JSONArray) JSON.toJSON(list_blocks);
            for (int i = 0; i < array_blocks.size(); i++) {
                JSONObject job_block = array_blocks.getJSONObject(i);
                Long blockId = job_block.getLong("id");
                // 处理一个新的片区前清空graphs,避免上一个片区的graphs存留数据造成数据错误
                array_mapGraphs = null;
                // 根据片区ID获取地图图形列表
                List<VoMapGraph> list_mapGraphs = this.dao.gertMapGraphsByBlockId(blockId);
                if(list_mapGraphs != null && list_mapGraphs.size() > 0) {
                    array_mapGraphs = (JSONArray) JSON.toJSON(list_mapGraphs);
                    for (int j = 0; j < array_mapGraphs.size(); j++) {
                        JSONObject job_mapGraph = array_mapGraphs.getJSONObject(j);
                        job_mapGraph = array_mapGraphs.getJSONObject(j);
                        Long graphId = job_mapGraph.getLong("graphId");
                        String graphType = job_mapGraph.getString("type");
                        // 根据地图图形ID获取地图图形坐标列表,并添加到地图图形对象中
                        List<VoMapCoordinates> list_mapCoordinates = this.dao.getCoordinatesByGraphId(graphId);
                        if(list_mapCoordinates != null && list_mapCoordinates.size() > 0) {
                            JSONArray array_mapCoordinates = (JSONArray) JSON.toJSON(list_mapCoordinates);
                            JSONArray[] arrays = new JSONArray[1];
                            arrays[0] = array_mapCoordinates;
                            job_mapGraph.put("coordinates", arrays);
                        }
                    }
                }
                // 将地图图形数组添加到片区中
                if(array_mapGraphs != null && array_mapGraphs.size() > 0) {
                    job_block.put("graphs", array_mapGraphs);
                }
            }
        }
        QueryResultVo<List<VoBlock>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = vo.pageSize ;
        rsVo.pageCurr = vo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        //rsVo.obj = this.dao.getBlocks(params) ;
        rsVo.obj = array_blocks.toList(VoBlock.class);
        return rsVo ;
    }
    /**
@@ -53,8 +144,11 @@
     * @param po 实体
     * @return 数量
     */
    public int save(BaBlock po){
        return this.dao.insert(po) ;
    @Transactional
    public Long save(BaBlock po){
        //return this.dao.putin(po) ;
        this.dao.putin(po);
        return po.getId();
    }
    /**
@@ -62,6 +156,7 @@
     * @param po 实体
     * @return 数量
     */
    @Transactional
    public int update(BaBlock po){
        return this.dao.updateByPrimaryKeySelective(po) ;
    }
@@ -71,8 +166,47 @@
     * @param id 实体ID
     * @return 数量
     */
    @Transactional
    public int delete(Long id){
        return this.dao.deleteLogicById(id) ;
    }
    /**
     * 添加地图图形
     * @param po
     * @return
     */
    public Long addMapGraph(BaMapGraph po) {
        this.baMapGraphMapper.insert(po);
        return po.getId();
    }
    /**
     * 添加地图图形坐标
     * @param po
     * @return
     */
    public Long addMapCoordinate(BaMapCoordinates po) {
        this.baMapCoordinatesMapper.insert(po);
        return po.getId();
    };
    /**
     * 根据片区ID删除地图图形
     * @param blockId
     * @return
     */
    public int deleteMapGraph(Long blockId) {
        return this.baMapGraphMapper.deleteByBlockId(blockId);
    }
    /**
     * 根据片区ID删除该片区下的坐标点
     * @param blockId
     * @return
     */
    public int deleteMapCoordinates(Long blockId) {
        return this.baMapCoordinatesMapper.deleteByBlockId(blockId);
    }
}