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> selectAll(){ QueryResultVo> rsVo = new QueryResultVo<>() ; rsVo.obj = this.dao.selectAll() ; return rsVo ; } /** * 得到一个片区 * @param vo 查询条件值对象 * @return 片区实体 */ @SuppressWarnings("unchecked") public QueryResultVo> selectSome(QueryVo vo){ Map params = (Map) PojoUtils.generalize(vo) ; Long itemTotal = this.dao.selectTotal(params) ; QueryResultVo> 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> getBlocks(QueryVo vo){ vo.setPageCurr((vo.getPageCurr() -1) * vo.getPageSize()); Map params = (Map) PojoUtils.generalize(vo) ; Long itemTotal = this.dao.getBlocksCount(params) ; JSONArray array_blocks = null; JSONArray array_mapGraphs = null; // 获取片区列表 List 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 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 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> rsVo = new QueryResultVo<>() ; return rsVo ; } QueryResultVo> 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); } }