package cn.com.goldenwater.dcproj.service.impl.vill; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.AttCwsBaseCrrctDao; import cn.com.goldenwater.dcproj.dao.AttCwsBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspManageResponsibilityDao; import cn.com.goldenwater.dcproj.dao.BisInspVlgdrinkProjManageDao; import cn.com.goldenwater.dcproj.dto.AttCwsBaseDto; import cn.com.goldenwater.dcproj.enums.RequestSourceEnum; import cn.com.goldenwater.dcproj.model.AttCwsBase; import cn.com.goldenwater.dcproj.model.AttCwsBaseCrrct; import cn.com.goldenwater.dcproj.model.BisInspVlgdrinkProjManage; import cn.com.goldenwater.dcproj.param.AttCwsBaseListParam; import cn.com.goldenwater.dcproj.param.AttCwsBaseListParamNew; import cn.com.goldenwater.dcproj.param.AttCwsBaseParam; import cn.com.goldenwater.dcproj.service.AttCwsBaseCrrctService; import cn.com.goldenwater.dcproj.service.AttCwsBaseService; import cn.com.goldenwater.dcproj.utils.BeanUtil; 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.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.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; import static cn.com.goldenwater.dcproj.util.CheckUtil.check; /** * @author zhengdafei * @date 2019-2-23 */ @Service @Transactional(rollbackFor = Exception.class) public class AttCwsBaseServiceImpl extends AbstractCrudService implements AttCwsBaseService { @Autowired private AttCwsBaseDao attCwsBaseDao; @Autowired private AttCwsBaseCrrctDao attCwsBaseCrrctDao; @Autowired private AttCwsBaseCrrctService attCwsBaseCrrctService; @Autowired private BisInspManageResponsibilityDao bisInspManageResponsibilityDao; @Autowired private BisInspVlgdrinkProjManageDao bisInspVlgdrinkProjManageDao; public AttCwsBaseServiceImpl(AttCwsBaseDao attCwsBaseDao) { super(attCwsBaseDao); this.attCwsBaseDao = attCwsBaseDao; } @Override public AttCwsBase add(AttCwsBase p) throws Exception { String uuid = UuidUtil.uuid(); String now = DateUtils.getTodayYMDHMS(); p.setUptm(now); p.setGuid(uuid); p.setEffDate(now); if (StringUtils.isBlank(p.getCwsCode())) { check(StringUtils.isNotBlank(p.getAddvcd()), "addvcd 不能为空,无法生成cwsCode"); // 根据最大code生成cwscode String maxCwsCode = attCwsBaseDao.getMaxCwsCode(p.getAddvcd()); if (maxCwsCode != null) { Long mCcode = 0L; mCcode = NumberUtils.createLong(maxCwsCode); Long cwsCode = mCcode + 1; p.setCwsCode(cwsCode + ""); } else { Long mCcode = 0L; mCcode = NumberUtils.createLong(p.getAddvcd()); Long cwsCode = mCcode + 1; p.setCwsCode(cwsCode + ""); } } else { AttCwsBaseParam ap = new AttCwsBaseParam(); ap.setCwsCode(p.getCwsCode()); List l = attCwsBaseDao.findList(ap); if (l != null && l.size() > 0) { throw new Exception("此工程代码已存在!" + p.getCwsCode()); } } if (StringUtils.isNotBlank(p.getCompYear())) { p.setCompDate(p.getCompYear() + "-01-01"); } transferGeo(p); attCwsBaseDao.insert(p); AttCwsBaseParam cwsBaseParam = new AttCwsBaseParam(); cwsBaseParam.setCwsCode(p.getCwsCode()); cwsBaseParam.setAddvcd(p.getAddvcd()); AttCwsBase attCwsBase = attCwsBaseDao.getBy(cwsBaseParam); return attCwsBase; } @Override public int modify(AttCwsBase p) throws Exception { String now = DateUtils.getTodayYMDHMS(); p.setUptm(now); transferGeo(p); if (StringUtils.isNotBlank(p.getCompYear())) { p.setCompDate(p.getCompYear() + "-01-01"); } int ret = attCwsBaseDao.update(p); return ret; } public void transferGeo(AttCwsBase p) { String src = p.getSrc(); if (StringUtils.isNotBlank(src)) { if (RequestSourceEnum.PC.getValue().equalsIgnoreCase(src)) { if (p.getCwsLong() != null && p.getCwsLat() != null) { Map map = GeoUtil.wgs84togcj02(p.getCwsLong(), p.getCwsLat()); p.setCenterXGd(map.get("lon")); p.setCenterYGd(map.get("lat")); } } else if (RequestSourceEnum.MOBILE.getValue().equalsIgnoreCase(src)) { if (p.getCenterXGd() != null && p.getCenterYGd() != null) { Map map = GeoUtil.gcj02towgs84(p.getCenterXGd(), p.getCenterYGd()); p.setCwsLong(map.get("lon")); p.setCwsLat(map.get("lat")); } } } else { if (p.getCwsLong() != null && p.getCwsLat() != null) { Map map = GeoUtil.wgs84togcj02(p.getCwsLong(), p.getCwsLat()); 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.setCwsLong(map.get("lon")); p.setCwsLat(map.get("lat")); } } } @Override public PageInfo queryListByPage(AttCwsBaseParam p) throws Exception { PageHelper.startPage(p.getPageNum(), p.getPageSize()); List list = attCwsBaseDao.findList(p); return new PageInfo(list); } @Override public List queryList(AttCwsBaseParam p) throws Exception { List list = attCwsBaseDao.findList(p); return list; } @Override public PageInfo queryListByObjId(AttCwsBaseListParam param) throws Exception { PageHelper.startPage(param.getPageNum(), param.getPageSize()); List list = attCwsBaseDao.queryListWithStatus(param.getObjId(), param.getEngId(), param.getName()); PageInfo page = new PageInfo<>(list); return page; } @Override public PageInfo queryListByObjId(AttCwsBaseListParamNew param) throws Exception { List list = new ArrayList<>(); if (param.isIfDc()) { PageHelper.startPage(param.getPageNum(), param.getPageSize()); list = attCwsBaseDao.queryListByObjId(param.getAdCode(), param.getEngId(), param.getName()); } else { PageHelper.startPage(param.getPageNum(), param.getPageSize()); list = attCwsBaseDao.queryListByObjIdNotDC(param.getAdCode(), param.getEngId(), param.getName()); } PageInfo page = new PageInfo<>(list); return page; } @Override public void correction(AttCwsBaseCrrct attCwsBase, String persId) throws Exception { AttCwsBase base = new AttCwsBase(); base.setGuid(attCwsBase.getGuid()); base.setCwsName(attCwsBase.getCwsName()); base.setCompDate(attCwsBase.getCompDate()); base.setCwsLoc(attCwsBase.getCwsLoc()); base.setDesWasuScal(attCwsBase.getDesWasuScal()); base.setDesWasuPop(attCwsBase.getDesWasuPop()); base.setCwsLong(attCwsBase.getCwsLong()); base.setCwsLat(attCwsBase.getCwsLat()); base.setCenterXGd(attCwsBase.getCenterXGd()); base.setCenterYGd(attCwsBase.getCenterYGd()); base.setSrc(attCwsBase.getSrc()); base.setCompYear(attCwsBase.getCompYear()); modify(base); attCwsBaseCrrctService.add(attCwsBase); BisInspVlgdrinkProjManage p = new BisInspVlgdrinkProjManage(); p.setCwsCode(attCwsBase.getCwsCode()); p.setPjnm(attCwsBase.getCwsName()); p.setVillageNm(attCwsBase.getCwsLoc()); if (StringUtils.isNotBlank(attCwsBase.getCompYear())) { p.setBuildYear(NumberUtils.toLong(attCwsBase.getCompYear())); } else { if (StringUtils.isNotBlank(attCwsBase.getCompDate())) { p.setBuildYear(NumberUtils.toLong(attCwsBase.getCompDate().split("-")[0])); } } p.setPlanSupplyScale(attCwsBase.getDesWasuScal()); if (attCwsBase.getDesWasuPop() != null) { BigDecimal despop = new BigDecimal(attCwsBase.getDesWasuPop().toString()); despop = despop.multiply(new BigDecimal(10000)); p.setPersonNum(despop.longValue()); } String now = DateUtils.getTodayYMDHMS(); p.setUpdateTime(now); p.setRecPersId(persId); bisInspVlgdrinkProjManageDao.updateByCwsCode(p); } @Override public void exportAttCwsBase(AttCwsBaseParam attCwsBaseParam, HttpServletResponse response) { List list = attCwsBaseDao.findList(attCwsBaseParam); List> mapList = new ArrayList<>(); for (AttCwsBase attCwsBase : list) { String engType = attCwsBase.getEngType(); if ("1".equals(engType)) { attCwsBase.setEngType("大(1)型"); } else if ("2".equals(engType)) { attCwsBase.setEngType("大(2)型"); } else if ("3".equals(engType)) { attCwsBase.setEngType("中型"); } else if ("4".equals(engType)) { attCwsBase.setEngType("小(1)型"); } else if ("5".equals(engType)) { attCwsBase.setEngType("小(2)型"); } else if ("9".equals(engType)) { attCwsBase.setEngType("其他"); } mapList.add(BeanUtil.transBean2Map(attCwsBase)); } 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("cwsCode[农村供水代码]"); cols.add("cwsName[农村供水名称]"); cols.add("cwsLoc[农村供水所在位置]"); cols.add("addvcd[行政区划编码]"); cols.add("engType[工程类型]"); cols.add("wasuRang[供水范围]"); cols.add("desWasuScal[设计供水规模(立方米/天)]"); 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 attCwsBaseParam * @return */ @Override public int updateBatchProvincial(AttCwsBaseParam attCwsBaseParam){ return attCwsBaseDao.updateBatchProvincial(attCwsBaseParam); } }