| 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 org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| @Slf4j | 
| @Service | 
| public class BlockSv { | 
|   | 
|     private BaBlockMapper dao; | 
|   | 
|     @Autowired | 
|     private void setDao(BaBlockMapper dao){ | 
|         this.dao = dao; | 
|     } | 
|   | 
|     @Autowired | 
|     private BaMapGraphMapper baMapGraphMapper; | 
|   | 
|     @Autowired | 
|     private BaMapCoordinatesMapper baMapCoordinatesMapper; | 
|   | 
|     /** | 
|      * 得到一个片区 | 
|      * @param id 片区ID | 
|      * @return 片区实体 | 
|      */ | 
|     public BaBlock selectById(Long id){ | 
|         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 查询条件值对象 | 
|      * @return 片区实体 | 
|      */ | 
|     @SuppressWarnings("unchecked") | 
|     public QueryResultVo<List<BaBlock>> selectSome(QueryVo vo){ | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ; | 
|         Long itemTotal = this.dao.selectTotal(params) ; | 
|   | 
|         QueryResultVo<List<BaBlock>> rsVo = new QueryResultVo<>() ; | 
|         rsVo.pageSize = vo.pageSize ; | 
|         rsVo.pageCurr = vo.pageCurr ; | 
|         rsVo.calculateAndSet(itemTotal, params); | 
|         rsVo.obj = this.dao.selectSome(params) ; | 
|   | 
|         return rsVo ; | 
|     } | 
|   | 
|     /** | 
|      * 根据指定条件获取片区,2024-08-14新增,替换原来的片区分页查询 | 
|      * @param vo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoBlock>> getBlocks(QueryVo vo){ | 
|         vo.setPageCurr((vo.getPageCurr() -1) * vo.getPageSize()); | 
|         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); | 
|                 } | 
|             } | 
|         }else {//增加健壮性 | 
|             QueryResultVo<List<VoBlock>> rsVo = new QueryResultVo<>() ; | 
|             return rsVo ; | 
|         } | 
|   | 
|         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 ; | 
|     } | 
|   | 
|     /** | 
|      * 保存实体 | 
|      * @param po 实体 | 
|      * @return 数量 | 
|      */ | 
|     @Transactional | 
|     public Long save(BaBlock po){ | 
|         //return this.dao.putin(po) ; | 
|         this.dao.putin(po); | 
|         return po.getId(); | 
|     } | 
|   | 
|     /** | 
|      * 保存修改实体 | 
|      * @param po 实体 | 
|      * @return 数量 | 
|      */ | 
|     @Transactional | 
|     public int update(BaBlock po){ | 
|         return this.dao.updateByPrimaryKeySelective(po) ; | 
|     } | 
|   | 
|     /** | 
|      * 保存修改实体 | 
|      * @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); | 
|     } | 
|   | 
| } |