|  |  |  | 
|---|
|  |  |  | 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.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.Map; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.Optional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | 
|---|
|  |  |  | private void setDao(BaBlockMapper dao){ | 
|---|
|  |  |  | this.dao = dao; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BaMapGraphMapper baMapGraphMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BaMapCoordinatesMapper baMapCoordinatesMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PrDivideMapper prDivideMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到一个片区 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据指定条件获取片区,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 int save(BaBlock po){ | 
|---|
|  |  |  | return this.dao.insert(po) ; | 
|---|
|  |  |  | public Long save(BaBlock po){ | 
|---|
|  |  |  | //return this.dao.putin(po) ; | 
|---|
|  |  |  | this.dao.putin(po); | 
|---|
|  |  |  | return po.getId(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取片区、分水房联动视图,添加农户时使用 | 
|---|
|  |  |  | * @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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|