package cn.com.goldenwater.dcproj.service.impl.wdtst; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.dao.BisInspWtdstDao; import cn.com.goldenwater.dcproj.dto.BisInspWtdstDetailDto; import cn.com.goldenwater.dcproj.model.BisInspPblm; import cn.com.goldenwater.dcproj.model.BisInspWtdst; import cn.com.goldenwater.dcproj.param.BisInspPblmParam; import cn.com.goldenwater.dcproj.param.BisInspWtdstDtoListParam; import cn.com.goldenwater.dcproj.param.BisInspWtdstParam; import cn.com.goldenwater.dcproj.service.BisInspWtdstService; import cn.com.goldenwater.dcproj.utils.BeanUtil; import cn.com.goldenwater.dcproj.utils.Builder; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.dcproj.utils.GeoUtil; import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport; import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract; import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; 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.Date; import java.util.List; import java.util.Map; /** * <<<<<<< .mine * * @author lune * @author lune * @author zhengdafei * @date 2019-2-21 * ||||||| .r1149 * @date 2019-2-18 * ======= * @date 2019-2-21 * >>>>>>> .r1206 */ @Service @Transactional(rollbackFor = Exception.class) public class BisInspWtdstServiceImpl extends AbstractCrudService implements BisInspWtdstService { @Autowired private BisInspWtdstDao bisInspWtdstDao; @Autowired BisInspPblmDao bisInspPblmDao; public BisInspWtdstServiceImpl(BisInspWtdstDao bisInspWtdstDao) { super(bisInspWtdstDao); this.bisInspWtdstDao = bisInspWtdstDao; } @Override public String add(BisInspWtdst p) throws Exception { String uuid = UuidUtil.uuid(); String now = DateUtils.getTodayYMDHMS(); p.setIntm(new Date()); p.setUptm(new Date()); p.setWtdstId(uuid); transferGeo(p); bisInspWtdstDao.insert(p); return uuid; } @Override public int modify(BisInspWtdst p) throws Exception { String now = DateUtils.getTodayYMDHMS(); p.setUptm(new Date()); transferGeo(p); int ret = bisInspWtdstDao.update(p); return ret; } public void transferGeo(BisInspWtdst p) { String src = p.getSrc(); if (StringUtils.isNotBlank(src)) { if ("PC".equalsIgnoreCase(src)) { if (p.getWtdstLgtd() != null && p.getWtdstLttd() != null) { Map map = GeoUtil.wgs84togcj02(p.getWtdstLgtd(), p.getWtdstLttd()); p.setCenterXGd(map.get("lon")); p.setCenterYGd(map.get("lat")); } } else if ("MOBILE".equalsIgnoreCase(src)) { if (p.getCenterXGd() != null && p.getCenterYGd() != null) { Map map = GeoUtil.gcj02towgs84(p.getCenterXGd(), p.getCenterYGd()); p.setWtdstLgtd(map.get("lon")); p.setWtdstLttd(map.get("lat")); } } } else { if (p.getWtdstLgtd() != null && p.getWtdstLttd() != null) { Map map = GeoUtil.wgs84togcj02(p.getWtdstLgtd(), p.getWtdstLttd()); p.setCenterXGd(map.get("lon")); p.setCenterYGd(map.get("lat")); } else if (p.getCenterXGd() != null && p.getCenterYGd() != null) { Map map = GeoUtil.gcj02towgs84(p.getCenterXGd(), p.getCenterYGd()); p.setWtdstLgtd(map.get("lon")); p.setWtdstLttd(map.get("lat")); } } } @Override public PageInfo queryListByPage(BisInspWtdstParam p) { PageHelper.startPage(p.getPageNum(), p.getPageSize()); List list = bisInspWtdstDao.findList(p); return new PageInfo(list); } @Override public List queryList(BisInspWtdstParam p) { return bisInspWtdstDao.findList(p); } @Override public PageInfo queryListWithPblm(BisInspWtdstDtoListParam p) { if (StringUtils.isNotBlank(p.getLocAd())) { p.setLocAd(p.getLocAd().substring(0, 2)); } PageHelper.startPage(p.getPageNum(), p.getPageSize()); List list = bisInspWtdstDao.findDtoList(p); for (BisInspWtdstDetailDto dto : list) { List pblms = bisInspPblmDao.findList(Builder.of(BisInspPblmParam::new).with(BisInspPblmParam::setObjId, dto.getObjId()).build()); dto.setList(pblms); dto.setProblmNum(pblms.size()); String adFullName = dto.getAdFullName(); if (StringUtils.isBlank(adFullName)) { continue; } if (adFullName.contains(SplitValue.HENG_SPLIT)) { String[] split = adFullName.split(SplitValue.HENG_SPLIT); if (split.length == 3) { dto.setProvince(split[0]); dto.setCity(split[1]); dto.setCounty(split[2]); } if (split.length == 2) { dto.setProvince(split[0]); dto.setCity(split[1]); dto.setCounty(""); } } else { dto.setProvince(adFullName); } } return new PageInfo<>(list); } @Override public void queryListWithPblmExport(BisInspWtdstDtoListParam p, HttpServletResponse response) { if (StringUtils.isNotBlank(p.getLocAd())) { p.setLocAd(p.getLocAd().substring(0, 2)); } List list = bisInspWtdstDao.findDtoList(p); list.forEach(x -> { List pblms = bisInspPblmDao.findList(Builder.of(BisInspPblmParam::new).with(BisInspPblmParam::setObjId, x.getObjId()).build()); x.setList(pblms); x.setProblmNum(pblms.size()); }); List columns = new ArrayList<>(); columns.add("province"); columns.add("city"); columns.add("county"); columns.add("chkCom"); columns.add("groupNm"); columns.add("intm"); columns.add("wtdstNm"); columns.add("state"); columns.add("wtdstType"); columns.add("locNm"); columns.add("wtdstWrkam"); columns.add("wkstate"); columns.add("planTm"); columns.add("problmNum"); columns.add("note"); ExportUtil.exportExcel(list, response, "水毁修复项目暗访情况表", columns, BisInspWtdstDetailDto.class); } @Override public PageInfo getListBy(BisInspWtdstParam param) { return null; } @Override public void exportBisInspWtdst(BisInspWtdstParam bisInspWtdstParam, HttpServletResponse response) { List list = new ArrayList<>(); list = bisInspWtdstDao.findList(bisInspWtdstParam); List> mapList = new ArrayList<>(); for (BisInspWtdst bisInspWtdst : list) { String wtdstState = bisInspWtdst.getWtdstState(); if ("0".equals(wtdstState) || "2".equals(wtdstState)) { bisInspWtdst.setWtdstState("未修复"); } else if ("1".equals(wtdstState)) { bisInspWtdst.setWtdstState("已修复"); } mapList.add(BeanUtil.transBean2Map(bisInspWtdst)); } 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("wtdstNm[项目名称]"); cols.add("locNm[项目所在位置]"); cols.add("objType[水毁类别]"); cols.add("wtdstDtle[水毁情况]"); cols.add("wtdstState[修复状态]"); cols.add("wtdstWrkam[主要工作量]"); cols.add("planRcvrTm[计划修复日期]"); cols.add("uptm[最后更新时间]"); cols.add("note[备注]"); 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(); } } /** * 批量设置是否省属 1是2否 * * @param bisInspWtdstParam * @return */ @Override public int updateBatchProvincial(BisInspWtdstParam bisInspWtdstParam) { return bisInspWtdstDao.updateBatchProvincial(bisInspWtdstParam); } }