|  |  | 
 |  |  | import com.dy.pipIrrGlobal.daoBa.BaBlockMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoBa.BaMapCoordinatesMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoBa.BaMapGraphMapper; | 
 |  |  | import com.dy.pipIrrGlobal.daoPr.PrDivideMapper; | 
 |  |  | 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 com.dy.pipIrrGlobal.voPr.VoSimpleDivide; | 
 |  |  | 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.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.Optional; | 
 |  |  |  | 
 |  |  | @Slf4j | 
 |  |  | @Service | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private BaMapCoordinatesMapper baMapCoordinatesMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private PrDivideMapper prDivideMapper; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 得到一个片区 | 
 |  |  | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public QueryResultVo<List<VoBlock>> getBlocks(QueryVo vo){ | 
 |  |  |         vo.setPageCurr((vo.pageCurr -1) * vo.pageSize); | 
 |  |  |         vo.setPageCurr((vo.getPageCurr() -1) * vo.getPageSize()); | 
 |  |  |         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ; | 
 |  |  |         Long itemTotal = this.dao.getBlocksCount(params) ; | 
 |  |  |  | 
 |  |  | 
 |  |  |         // 获取片区列表 | 
 |  |  |         List<VoBlock> list_blocks = this.dao.getBlocks(params); | 
 |  |  |         if(list_blocks != null && list_blocks.size() > 0) { | 
 |  |  |             //JSONArray array_blocks = (JSONArray) JSON.toJSON(list_blocks); | 
 |  |  |             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) { | 
 |  |  | 
 |  |  |                         List<VoMapCoordinates> list_mapCoordinates = this.dao.getCoordinatesByGraphId(graphId); | 
 |  |  |                         if(list_mapCoordinates != null && list_mapCoordinates.size() > 0) { | 
 |  |  |                             JSONArray array_mapCoordinates = (JSONArray) JSON.toJSON(list_mapCoordinates); | 
 |  |  |                             job_mapGraph.put("coordinates", array_mapCoordinates); | 
 |  |  |                             String cc= ""; | 
 |  |  |  | 
 |  |  |                             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("graph", array_mapGraphs); | 
 |  |  |                     job_block.put("graphs", array_mapGraphs); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }else {//增加健壮性 | 
 |  |  |             QueryResultVo<List<VoBlock>> rsVo = new QueryResultVo<>() ; | 
 |  |  |             return rsVo ; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         QueryResultVo<List<VoBlock>> rsVo = new QueryResultVo<>() ; | 
 |  |  | 
 |  |  |         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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取片区、分水房联动视图,添加农户时使用 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public JSONArray getBlockDivides() { | 
 |  |  |         JSONArray array_blocks = null; | 
 |  |  |         JSONArray array_divides = null; | 
 |  |  |         JSONArray array_result = new JSONArray(); | 
 |  |  |  | 
 |  |  |         List<BaBlock> list_blocks = dao.selectAll(); | 
 |  |  |         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); | 
 |  |  |                 JSONObject job_blockNew = new JSONObject(); | 
 |  |  |                 job_blockNew.put("value", job_block.getLong("id").toString()); | 
 |  |  |                 job_blockNew.put("label", job_block.getString("name")); | 
 |  |  |  | 
 |  |  |                 List<VoSimpleDivide> list_divides = Optional.ofNullable( prDivideMapper.getDividesByBlockId(job_block.getLong("id"))).orElse(new ArrayList<>()); | 
 |  |  |                 array_divides = (JSONArray) JSON.toJSON(list_divides); | 
 |  |  |                 job_blockNew.put("children", array_divides); | 
 |  |  |                 array_result.add(job_blockNew); | 
 |  |  |             } | 
 |  |  |             return array_result; | 
 |  |  |         }else { | 
 |  |  |             return new JSONArray(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |