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.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Optional; 
 | 
  
 | 
@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; 
 | 
  
 | 
    @Autowired 
 | 
    private PrDivideMapper prDivideMapper; 
 | 
  
 | 
    /** 
 | 
     * 得到一个片区 
 | 
     * @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); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取片区、分水房联动视图,添加农户时使用 
 | 
     * @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(); 
 | 
        } 
 | 
    } 
 | 
} 
 |