package cn.com.goldenwater.dcproj.service.impl.swhs; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.AttSwhsBaseDao; import cn.com.goldenwater.dcproj.model.AttSwhsBase; import cn.com.goldenwater.dcproj.param.AttSwhsBaseParam; import cn.com.goldenwater.dcproj.param.PersObjParam; import cn.com.goldenwater.dcproj.service.AttSwhsBaseService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.GeoUtil; 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.apache.commons.lang3.math.NumberUtils; 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; /** * @author lune * @date 2019-6-3 */ @Service @Transactional(rollbackFor = Exception.class) public class AttSwhsBaseServiceImpl extends AbstractCrudService implements AttSwhsBaseService { @Autowired private AttSwhsBaseDao attSwhsBaseDao; public AttSwhsBaseServiceImpl(AttSwhsBaseDao attSwhsBaseDao) { super(attSwhsBaseDao); this.attSwhsBaseDao = attSwhsBaseDao; } @Override public int modify(AttSwhsBase p) throws Exception { transferGeo(p); int ret = attSwhsBaseDao.update(p); return ret; } @Override public PageInfo queryListByPage(AttSwhsBaseParam p, HttpServletResponse response) { if ("1".equals(p.getIsExport())) { ExportUtil.exportExcel(attSwhsBaseDao.findList(p),response,"水源地列表"); } PageHelper.startPage(p.getPageNum(), p.getPageSize()); List list = attSwhsBaseDao.findList(p); return new PageInfo(list); } @Override public List findListBy(PersObjParam persObjParam) { if (StringUtils.isNotBlank(persObjParam.getAdCode())) { persObjParam.setAdCode(AdLevelUtil.SubAd(persObjParam.getAdCode()).get(SplitValue.SUBAD).toString()); } return this.attSwhsBaseDao.findListBy(persObjParam); } @Override public PageInfo findPageInfoBy(PersObjParam persObjParam) { if (StringUtils.isNotBlank(persObjParam.getAdCode())) { persObjParam.setAdCode(AdLevelUtil.SubAd(persObjParam.getAdCode()).get(SplitValue.SUBAD).toString()); } PageHelper.startPage(persObjParam); List list = this.attSwhsBaseDao.findListBy(persObjParam); PageInfo pageInfo = new PageInfo(list); return pageInfo; } @Override public List queryList(AttSwhsBaseParam p) { List list = attSwhsBaseDao.findList(p); return list; } @Override public AttSwhsBase getObjId(String objId) { return attSwhsBaseDao.getObjId(objId); } @Override public String add(AttSwhsBase p) throws Exception { String uuid = UuidUtil.uuid(); if (StringUtils.isNotBlank(p.getAdCode())) { String maxCwsCode = attSwhsBaseDao.getMaxCwsCode(p.getAdCode().substring(0, 6)); //根据最大code生成cwscode if (maxCwsCode != null) { Long mCcode = 0L; if (maxCwsCode == null) { mCcode = NumberUtils.createLong(p.getAdCode()); Long gwsCode = mCcode + 1; p.setSwhsCode(gwsCode + ""); } else { mCcode = NumberUtils.createLong(maxCwsCode); Long gwsCode = mCcode + 1; p.setSwhsCode(gwsCode + ""); } } else { Long mCcode = NumberUtils.createLong(p.getAdCode()); Long gwsCode = mCcode + 1; p.setSwhsCode(gwsCode+""); } } else { throw new Exception("adCode不能为空"); } transferGeo(p); p.setId(uuid); p.setEffDate(new Date()); attSwhsBaseDao.insert(p); return uuid; } public void transferGeo(AttSwhsBase p) { String src = p.getSrc(); if (StringUtils.isNotBlank(src)) { if ("PC".equalsIgnoreCase(src)) { if (p.getSwhsLat() != null && p.getSwhsLong() != null) { Map map = GeoUtil.wgs84togcj02(p.getSwhsLong(), p.getSwhsLat()); p.setSwhsLongGd(map.get("lon")); p.setSwhsLatGd(map.get("lat")); } } else if ("MOBILE".equalsIgnoreCase(src)) { if (p.getSwhsLatGd() != null && p.getSwhsLongGd() != null) { Map map = GeoUtil.gcj02towgs84(p.getSwhsLongGd(), p.getSwhsLatGd()); p.setSwhsLong(map.get("lon")); p.setSwhsLat(map.get("lat")); } } } else { if (p.getSwhsLat() != null && p.getSwhsLong() != null) { Map map = GeoUtil.wgs84togcj02(p.getSwhsLong(), p.getSwhsLat()); p.setSwhsLongGd(map.get("lon")); p.setSwhsLatGd(map.get("lat")); } else if (p.getSwhsLatGd() != null && p.getSwhsLongGd() != null) { Map map = GeoUtil.gcj02towgs84(p.getSwhsLongGd(), p.getSwhsLatGd()); p.setSwhsLong(map.get("lon")); p.setSwhsLat(map.get("lat")); } } } @Override public void exportAttSwhsBase(AttSwhsBaseParam attSwhsBaseParam, HttpServletResponse response) { if (StringUtils.isNotBlank(attSwhsBaseParam.getAdCode())){ attSwhsBaseParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(attSwhsBaseParam.getAdCode()).get("subAd"))); } List list = attSwhsBaseDao.findList(attSwhsBaseParam); if (list.size() > 0) { list.forEach(base -> { formatObj(base); }); List columns = new ArrayList<>(); columns.add("id"); columns.add("swhsCode"); columns.add("swhsLong"); columns.add("swhsLat"); columns.add("persId"); columns.add("effDate"); columns.add("exprDate"); columns.add("swhsLongGd"); columns.add("swhsLatGd"); columns.add("src"); columns.add("displayLevel"); columns.add("objId"); columns.add("state"); ExportUtil.exportExcel(list, response, "水源地列表", columns, AttSwhsBase.class); } } private void formatObj(AttSwhsBase base) { if (base == null) { return; } if (StringUtils.isNotBlank(base.getWainWasoType())) { formatWainWasoType(base); } if (StringUtils.isNotBlank(base.getWainUse())) { formatWainUse(base); } if (StringUtils.isNotBlank(base.getWaquGoal())) { base.setWaquGoal(formatGoal(base.getWaquGoal())); } if (StringUtils.isNotBlank(base.getWquaCat())){ base.setWquaCat(formatGoal(base.getWquaCat())); } if (StringUtils.isNotBlank(base.getIfMonWqua())){ base.setIfMonWqua(formatCommon(base.getIfMonWqua())); } if (StringUtils.isNotBlank(base.getIfWquaUptoSta())){ base.setIfWquaUptoSta(formatCommon(base.getIfWquaUptoSta())); } if (StringUtils.isNotBlank(base.getIfWsProt())) { base.setIfWsProt(formatCommon(base.getIfWsProt())); } } private String formatCommon(String ifMonWqua) { switch (ifMonWqua) { case "1": return "是"; case "2": return "否"; default: return ""; } } private String formatGoal(String value) { switch (value) { case "1": return "Ⅰ类水质"; case "2": return "Ⅱ类水质"; case "3": return "Ⅲ类水质"; case "4": return "Ⅳ类水质"; case "5": return "Ⅴ类水质"; case "6": return "劣Ⅴ类水质目标"; } return ""; } private void formatWainUse(AttSwhsBase base) { switch (base.getWainUse()) { case "1": base.setWainUse("城乡生活"); break; case "2": base.setWainUse("城镇生活"); break; case "3": base.setWainUse("乡村生活"); break; } } private void formatWainWasoType(AttSwhsBase base) { switch (base.getWainWasoType()) { case "1": base.setWainWasoType("水库"); break; case "2": base.setWainWasoType("湖泊"); break; case "3": base.setWainWasoType("河流"); break; case "9": base.setWainWasoType("其他"); break; } } }