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();
|
}
|
}
|
}
|