package cn.com.goldenwater.dcproj.service.impl.rsvr; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.AttRsBaseDao; import cn.com.goldenwater.dcproj.dto.RsCountDto; import cn.com.goldenwater.dcproj.model.AttRsBase; import cn.com.goldenwater.dcproj.param.AttRsBaseParam; import cn.com.goldenwater.dcproj.service.AttRsBaseService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.BeanUtil; import cn.com.goldenwater.dcproj.utils.GeoUtil; import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport; import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author lune * @date 2019-2-25 */ @Service @Transactional(rollbackFor = Exception.class) public class AttRsBaseServiceImpl extends AbstractCrudService implements AttRsBaseService { @Autowired private AttRsBaseDao attRsBaseDao; private Logger logger = LoggerFactory.getLogger(getClass()); public AttRsBaseServiceImpl(AttRsBaseDao attRsBaseDao) { super(attRsBaseDao); this.attRsBaseDao = attRsBaseDao; } @Override public String findMax(String location) { return attRsBaseDao.findMax(location); } @Override public AttRsBase getObjId(String objId) { return attRsBaseDao.getObjId(objId); } @Override public int selectCount(AttRsBase attRsBase) { return attRsBaseDao.selectCount(attRsBase); } @Override public List getRsCountByAdCode(String adCode, String adGrad, String objType) { Map map = AdLevelUtil.subAdByGrad(adGrad); if ("000000000000".equals(adCode)) { adCode = ""; } List rsAllList = this.attRsBaseDao.getRsCountByGrad(map.get("sub").toString(), map.get("con").toString(), adGrad, adCode, objType); return rsAllList; } @Override public List getRsListByNodeIdsAndAdCodes(String nodeIds, String adCodes, String persGuid, String pType) { if (StringUtils.isNotBlank(nodeIds)) { String[] nodes = nodeIds.split(SplitValue.DOUHAO_SPLIT); if (StringUtils.isNotBlank(adCodes)) { String[] ads = adCodes.split(SplitValue.DOUHAO_SPLIT); //处理ads中的参数 ArrayList adss = new ArrayList<>(); for (String ad : ads) { String delAd = AdLevelUtil.getAllLowerLevelAdCode(ad); adss.add(delAd); } return attRsBaseDao.getRsListByNodeIdsAndAdCodes(nodes, adss.toArray(), persGuid, pType); } else { return attRsBaseDao.getRsListByNodeIdsAndAdCodes(nodes, null, persGuid, pType); } } else { if (StringUtils.isNotBlank(adCodes)) { String[] ads = adCodes.split(SplitValue.DOUHAO_SPLIT); //处理ads中的参数 ArrayList adss = new ArrayList<>(); for (String ad : ads) { String delAd = AdLevelUtil.getAllLowerLevelAdCode(ad); adss.add(delAd); } return attRsBaseDao.getRsListByNodeIdsAndAdCodes(null, adss.toArray(), persGuid, pType); } else { return attRsBaseDao.getRsListByNodeIdsAndAdCodes(null, null, persGuid, pType); } } } @Override public List findRsList(AttRsBaseParam rsBaseParam) { return attRsBaseDao.findRsList(rsBaseParam); } @Override public void exportAttRsBase(AttRsBaseParam attRsBaseParam, HttpServletResponse response) { List list = attRsBaseDao.findRsList(attRsBaseParam); List> mapList = new ArrayList<>(); for (AttRsBase attRsBase : list) { if ("1".equals(attRsBase.getRsType())) { attRsBase.setRsType("山丘水库"); } else if ("2".equals(attRsBase.getRsType())) { attRsBase.setRsType("平原水库"); } else if ("3".equals(attRsBase.getRsType())) { attRsBase.setRsType("地下水库"); } else { attRsBase.setRsType("其他"); } if ("1".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("大(1)型"); } else if ("2".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("大(2)型"); } else if ("3".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("中型"); } else if ("4".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("小(1)型"); } else if ("5".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("小(2)型"); } else if ("9".equals(attRsBase.getEngScal())) { attRsBase.setEngScal("其他"); } mapList.add(BeanUtil.transBean2Map(attRsBase)); } ExportAbstract export = new ExcelExport(); export.setFileName("水库信息列表"); export.setExport_ps_export(true); export.setExport_ps_type(ExportAbstract.XLS); export.setExport_bzip(false); export.setTitle("水库信息列表"); ArrayList cols = new ArrayList(); cols.add("rsCode[水库编码]"); cols.add("rsName[水库名称]"); cols.add("rsType[水库类型]"); cols.add("rsAdmCode[管理单位代码]"); cols.add("rsAdmName[管理单位名称]"); cols.add("admDiv[行政区划]"); cols.add("engScal[工程规模]"); cols.add("limStag[防洪限制水位(米)]"); cols.add("totCap[总库容(万立方米)]"); cols.add("damSizeHig[主坝尺寸坝高(米)]"); cols.add("wiunWaoLegPers[行政责任人姓名]"); cols.add("wiunWaoLegPersTel[行政责任人电话]"); cols.add("wiunWaoLegPersDuty[行政责任人职务]"); cols.add("techPers[技术责任人姓名]"); cols.add("techPersTel[技术责任人电话]"); cols.add("techPersDuty[技术责任人职务]"); cols.add("patrolPers[巡查责任人姓名]"); cols.add("patrolPersTel[巡查责任人电话]"); cols.add("patrolPersDuty[巡查责任人职务]"); export.setCols(cols); export.setGroupable(false); // 设置视图指标 export.setLevel(1); export.setLocksize(0); try { export.Export(response); export.ExportHeadForCustom(response);//导出表头 export.ContinueExport(mapList); export.EndExport(); } catch (Exception e) { e.printStackTrace(); } } @Override public List findEqRsList(AttRsBaseParam rsBaseParam) { return attRsBaseDao.findEqRsList(rsBaseParam); } @Override public void updateCenteXToGd() { //获取经 经纬度不为空 另外的高德纬度为空 的水库基本信息 List attRsBases = attRsBaseDao.findGdIsNull(); //循环转换 for (AttRsBase item : attRsBases ) { if (null != item.getCenterX() && null != item.getCenterY() && null == item.getCenterXGd() && null == item.getCenterYGd()) { //执行转换 Map map = GeoUtil.wgs84togcj02(Double.parseDouble(item.getCenterX()), Double.parseDouble(item.getCenterY())); //更新字段 AttRsBase attRsBase = new AttRsBase(); attRsBase.setCenterXGd(map.get("lon").toString()); attRsBase.setCenterYGd(map.get("lat").toString()); attRsBase.setRsCode(item.getRsCode()); attRsBaseDao.update(attRsBase); logger.info("---更新经纬--" + item.getRsCode() + " " + item.getRsName()); } } } }