package cn.com.goldenwater.dcproj.service.impl.grw; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.CommonLabel; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.*; import cn.com.goldenwater.dcproj.dto.*; import cn.com.goldenwater.dcproj.enums.*; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.AttGrwBaseService; import cn.com.goldenwater.dcproj.service.BisInspAllObjService; import cn.com.goldenwater.dcproj.service.BisInspGrwService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.dcproj.utils.GrwScoreRule; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; 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.text.SimpleDateFormat; import java.util.Date; import java.util.List; /** * @author zhengdafei * @date 2019-3-29 */ @Service @Transactional(rollbackFor = Exception.class) public class BisInspGrwServiceImpl extends AbstractCrudService implements BisInspGrwService, BisInspObjStrategy { @Autowired private BisInspFscRgstrDao bisInspFscRgstrDao; @Autowired private BisInspGrwDao bisInspGrwDao; @Autowired private AttGrwBaseDao attGrwBaseDao; @Autowired BisInspPblmDao bisInspPblmDao; @Autowired private BisInspBaseDao bisInspBaseDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; @Autowired private AttGrwBaseService attGrwBaseService; @Autowired private BisInspAllObjService bisInspAllObjService; public BisInspGrwServiceImpl(BisInspGrwDao bisInspGrwDao) { super(bisInspGrwDao); this.bisInspGrwDao = bisInspGrwDao; } @Override public BisInspGrw add(BisInspGrw p) throws Exception { String uuid = UuidUtil.uuid(); String now = DateUtils.getTodayYMDHMS(); p.setInTm(now); p.setUpTm(now); if (StringUtils.isBlank(p.getId())) { p.setId(uuid); } int ret = this.insert(p); if (ret != -2147482646) { throw new Exception("插入失败"); } return bisInspGrwDao.get(uuid); } @Override public BisInspGrw modify(BisInspGrw p) throws Exception { if (StringUtils.isBlank(p.getId())) { throw new Exception("id 不能为空!"); } BisInspGrw bisInspGrw = bisInspGrwDao.get(p.getId()); if (bisInspGrw == null) { throw new Exception("该记录不存在,请刷新页面重试!"); } String now = DateUtils.getTodayYMDHMS(); p.setUpTm(now); int ret = bisInspGrwDao.update(p); if (ret != -2147482646) { throw new Exception("更新失败"); } BisInspGrw bean = bisInspGrwDao.get(p.getId()); return bean; } @Override public void remove(String id) throws Exception { if (StringUtils.isBlank(id)) { throw new Exception("id 不能为空!"); } BisInspGrw bisInspGrw = bisInspGrwDao.get(id); if (bisInspGrw == null) { throw new Exception("该记录不存在,请刷新页面重试"); } int ret = bisInspGrwDao.delete(id); if (ret != -2147482646) { throw new Exception("删除失败"); } } @Override public BisInspGrwDataQualityDto getDataQuality(String id) throws Exception { BisInspGrwDataQualityDto dto = new BisInspGrwDataQualityDto(); BisInspGrw bisInspGrw = bisInspGrwDao.get(id); if (bisInspGrw == null) { throw new Exception("此数据不存在"); } if (StringUtils.isBlank(bisInspGrw.getSttp())) { throw new Exception("测站类型不存在"); } dto.setHandScore(bisInspGrw.getHandScore()); dto.setId(bisInspGrw.getId()); dto.setPercentage(bisInspGrw.getPercentage()); dto.setRepeatability(bisInspGrw.getRepeatability()); dto.setRepeatabilityScore(bisInspGrw.getRepeatabilityScore()); dto.setSttp(bisInspGrw.getSttp()); dto.setPercentageScore(bisInspGrw.getPercentageScore()); Long score = 0L; score = GrwScoreRule.calDataQuality(bisInspGrw); dto.setScore(score); return dto; } @Override public BisInspGrw addDCst(AddDCstParam param) throws Exception { AttGrwBase base = attGrwBaseDao.get(param.getStcd()); if (base == null) { throw new CheckException("此测站:" + param.getStcd() + " 不存在"); } // 基础数据只有84但无高德,添加到督查表同时转换成高德存储 attGrwBaseService.transferGeo(base, RequestSourceEnum.PC.getValue()); attGrwBaseService.modify(base); //判断是否已经插入 BisInspAllObjDto bisInspAllObjDto = new BisInspAllObjDto(); bisInspAllObjDto.setCode(param.getStcd()); bisInspAllObjDto.setId(param.getId()); bisInspAllObjDto.setPtype(PtypeEnum.GRW.getValue()); Integer count = bisInspAllObjService.selectCount(bisInspAllObjDto); if (count > 0) { throw new Exception("重复添加"); } bisInspAllObjDto.setNm(base.getStnm()); bisInspAllObjDto.setLgtd(base.getLgtd()); bisInspAllObjDto.setLttd(base.getLttd()); bisInspAllObjDto.setLgtdpc(base.getLgtdPc()); bisInspAllObjDto.setLttdpc(base.getLttdPc()); bisInspAllObjDto.setAdCode(param.getProvince()); bisInspAllObjDto.setOrgId(param.getOrgId()); String guid = UuidUtil.uuid(); bisInspAllObjDto.setObjId(guid); Integer i = bisInspAllObjService.insertObj(bisInspAllObjDto); // 添加登记表 BisInspGrw p = new BisInspGrw(); p.setStnm(base.getStnm()); p.setStlc(base.getStlc()); p.setCheckPid(param.getCheckPid()); p.setCheckPname(param.getCheckPname()); p.setStcd(param.getStcd()); p.setObjId(guid); p.setSttp(StringUtils.isNotBlank(base.getSttp()) ? base.getSttp() : GrwSttpEnum.PROV.getValue()); p.setMaintainStatus(NormalEnum.NO.getValue()); p.setPercentageStatus(NormalEnum.NO.getValue()); p.setInspState(GrwStateEnum.YET.getValue()); return add(p); } @Override public BisInspGrw updateDataQuality(BisInspGrwDataQualityDto p) throws Exception { if (StringUtils.isBlank(p.getId())) { throw new Exception("id不能为空"); } if (StringUtils.isBlank(p.getSttp())) { throw new Exception("测站类型不能为空"); } BisInspGrw bisInspGrw = bisInspGrwDao.get(p.getId()); if (bisInspGrw == null) { throw new Exception("此数据不存在" + p.getId()); } bisInspGrw.setCheckPid(p.getCheckPid()); bisInspGrw.setCheckPname(p.getCheckPname()); bisInspGrw.setRepeatability(p.getRepeatability()); bisInspGrw.setRepeatabilityScore(p.getRepeatabilityScore()); bisInspGrw.setPercentage(p.getPercentage()); bisInspGrw.setPercentageScore(p.getPercentageScore()); bisInspGrw.setHandScore(p.getHandScore()); GrwScoreRule.calTotalScore(bisInspGrw); bisInspGrw.setPercentageStatus(p.getPercentageStatus()); bisInspGrw.setInspState(GrwStateEnum.ING.getValue()); BisInspGrw one = modify(bisInspGrw); return one; } @Override public BisInspGrwMainTainDataDto getMainTainData(String id) throws Exception { BisInspGrwMainTainDataDto dto = new BisInspGrwMainTainDataDto(); BisInspGrw bisInspGrw = bisInspGrwDao.get(id); if (bisInspGrw == null) { throw new Exception("此数据不存在" + id); } dto.setId(id); dto.setExactScore(bisInspGrw.getExactScore()); dto.setFlagExact(bisInspGrw.getFlagExact()); dto.setFlagMark(bisInspGrw.getFlagMark()); dto.setMarkScore(bisInspGrw.getMarkScore()); dto.setFlagSign(bisInspGrw.getFlagSign()); dto.setSignScore(bisInspGrw.getSignScore()); dto.setFlagSafeguard(bisInspGrw.getFlagSafeguard()); dto.setSafeguardScore(bisInspGrw.getSafeguardScore()); dto.setFlagTool(bisInspGrw.getFlagTool()); dto.setToolScore(bisInspGrw.getToolScore()); dto.setFlagTrain(bisInspGrw.getFlagTrain()); dto.setTrainScore(bisInspGrw.getTrainScore()); dto.setSttp(bisInspGrw.getSttp()); dto.setToolProfScore(bisInspGrw.getToolProfScore()); dto.setToolTsoScore(bisInspGrw.getToolTsoScore()); dto.setWellProtScore(bisInspGrw.getWellProtScore()); dto.setCheckPid(bisInspGrw.getCheckPid()); dto.setCheckPname(bisInspGrw.getCheckPname()); Long score = GrwScoreRule.calMainTainScore(bisInspGrw); dto.setScore(score); return dto; } @Override public BisInspGrw updateMainTainData(BisInspGrwMainTainDataDto p) throws Exception { BisInspGrw one = new BisInspGrw(); if (StringUtils.isBlank(p.getId())) { throw new Exception("id不能为空"); } if (StringUtils.isBlank(p.getSttp())) { throw new Exception("测站类型不能为空"); } BisInspGrw bisInspGrw = bisInspGrwDao.get(p.getId()); if (bisInspGrw == null) { throw new Exception("此数据不存在"); } bisInspGrw.setCheckPid(p.getCheckPid()); bisInspGrw.setCheckPname(p.getCheckPname()); bisInspGrw.setFlagSign(p.getFlagSign()); bisInspGrw.setSignScore(p.getSignScore()); bisInspGrw.setFlagMark(p.getFlagMark()); bisInspGrw.setMarkScore(p.getMarkScore()); bisInspGrw.setFlagExact(p.getFlagExact()); bisInspGrw.setExactScore(p.getExactScore()); bisInspGrw.setFlagSafeguard(p.getFlagSafeguard()); bisInspGrw.setSafeguardScore(p.getSafeguardScore()); bisInspGrw.setFlagTool(p.getFlagTool()); bisInspGrw.setToolScore(p.getToolScore()); bisInspGrw.setToolProfScore(p.getToolProfScore()); bisInspGrw.setToolTsoScore(p.getToolTsoScore()); bisInspGrw.setWellProtScore(p.getWellProtScore()); bisInspGrw.setFlagTrain(p.getFlagTrain()); bisInspGrw.setTrainScore(p.getTrainScore()); GrwScoreRule.calTotalScore(bisInspGrw); bisInspGrw.setMaintainStatus(p.getMaintainStatus()); bisInspGrw.setInspState(GrwStateEnum.ING.getValue()); one = modify(bisInspGrw); return one; } @Override public BisInspGrw submitData(GrwSubmitParam p) throws Exception { if (StringUtils.isBlank(p.getId())) { throw new Exception("id不能为空"); } if (StringUtils.isBlank(p.getSttp())) { throw new Exception("测站类型不能为空"); } BisInspGrw bisInspGrw = bisInspGrwDao.get(p.getId()); if (bisInspGrw == null) { throw new Exception("此数据不存在"); } bisInspGrw.setSttp(p.getSttp()); bisInspGrw.setMonitorRate(p.getMonitorRate()); bisInspGrw.setCheckPid(p.getCheckPid()); bisInspGrw.setCheckPname(p.getCheckPname()); bisInspGrw.setMaintainStatus(p.getMaintainStatus()); bisInspGrw.setPercentageStatus(p.getPercentageStatus()); bisInspGrw.setInspState(GrwStateEnum.END.getValue()); BisInspGrw one = modify(bisInspGrw); return one; } @Override public BisInspGrwNormalDto getNormalData(String id) throws Exception { BisInspGrwNormalDto dto = new BisInspGrwNormalDto(); BisInspGrw bisInspGrw = bisInspGrwDao.get(id); if (bisInspGrw == null) { throw new Exception("登记表没有此数据,请先添加到登记表" + id); } if (StringUtils.isBlank(bisInspGrw.getStcd())) { throw new Exception("后台数据缺少测站编码,请联系管理员"); } AttGrwBase attGrwBase = attGrwBaseDao.get(bisInspGrw.getStcd()); if (attGrwBase == null) { throw new Exception("基础表中无此测站" + bisInspGrw.getStcd()); } dto.setStcd(attGrwBase.getStcd()); dto.setStnm(attGrwBase.getStnm()); dto.setLgtd(attGrwBase.getLgtd()); dto.setLttd(attGrwBase.getLttd()); dto.setLgtdPc(attGrwBase.getLgtdPc()); dto.setLttdPc(attGrwBase.getLttdPc()); dto.setMaintainStatus(bisInspGrw.getMaintainStatus()); dto.setPercentageStatus(bisInspGrw.getPercentageStatus()); dto.setAllScore(bisInspGrw.getAllScore()); dto.setId(bisInspGrw.getId()); dto.setInspState(bisInspGrw.getInspState()); dto.setSttp(bisInspGrw.getSttp()); dto.setStlc(bisInspGrw.getStlc()); dto.setMonitorRate(bisInspGrw.getMonitorRate()); if (GrwSttpEnum.PROVAUTO.getValue().equals(bisInspGrw.getSttp()) || GrwSttpEnum.PROVHAND.getValue().equals(bisInspGrw.getSttp()) || GrwSttpEnum.NATIONAL.getValue().equals(bisInspGrw.getSttp()) || GrwSttpEnum.PROV.getValue().equals(bisInspGrw.getSttp())) { dto.setMaintainScore(GrwScoreRule.calMainTainScore(bisInspGrw)); dto.setPercentScore(GrwScoreRule.calDataQuality(bisInspGrw)); } else { dto.setMaintainScore(0L); dto.setPercentScore(0L); } if (StringUtils.isNotBlank(bisInspGrw.getCheckComment())) { dto.setChkCommentStatus(NormalEnum.YES.getValue()); } else { dto.setChkCommentStatus(NormalEnum.NO.getValue()); } return dto; } @Override public PageInfo findPageByType(TypeParam typeParam) throws Exception { if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } PageHelper.startPage(typeParam); List list = bisInspGrwDao.findPageByType(typeParam); return new PageInfo(list); } @Override public List findListByType(TypeParam typeParam) throws Exception { List list = bisInspGrwDao.findPageByType(typeParam); return list; } @Override public PageInfo queryDetailListWithPblm(GetPageByNodeIdParam param) throws Exception { PageHelper.startPage(param.getPageNum(), param.getPageSize()); List list = bisInspGrwDao.queryDetailListWithPblm(param); for (BisInspGrwDetailDto dto : list) { dto.setSttpNm(GrwSttpEnum.getName(dto.getSttp())); BisInspPblmParam p = new BisInspPblmParam(); p.setRegid(dto.getId()); p.setObjId(dto.getObjId()); List pblms = bisInspPblmDao.findList(p); dto.setList(pblms); dto.setProblmNum(pblms.size()); } return new PageInfo(list); } @Override public BisInspGrw setProvSttp(BisInspGrwSetSttpParam param) throws Exception { if (StringUtils.isBlank(param.getId())) { throw new Exception("登记表id不能为空"); } if (StringUtils.isBlank(param.getSttp())) { throw new Exception("测站类型不能为空"); } if (!GrwSttpEnum.PROVHAND.getValue().equals(param.getSttp()) && !GrwSttpEnum.PROVAUTO.getValue().equals(param.getSttp())) { throw new Exception("测站类型不正确:" + param.getSttp()); } BisInspGrw bisInspGrw = bisInspGrwDao.get(param.getId()); if (bisInspGrw == null) { throw new Exception("此数据不存在:" + param.getId()); } bisInspGrw.setId(param.getId()); bisInspGrw.setSttp(param.getSttp()); bisInspGrw.setCheckPid(param.getCheckPid()); bisInspGrw.setCheckPname(param.getCheckPname()); BisInspGrw one = modify(bisInspGrw); return one; } @Override public int insert(BisInspGrw b) { int ret = 1; BisInspGrwParam bisInspGrwParam = new BisInspGrwParam(); bisInspGrwParam.setObjId(b.getObjId()); List list = bisInspGrwDao.findList(bisInspGrwParam); if (list == null || list.size() == 0) { ret = bisInspGrwDao.insert(b); } return ret; } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { AttGrwBase attGrwBase = this.bisInspBaseDao.getGroundWaterByCode(bisInspAllObj.getCode()); BisInspGrw b = new BisInspGrw(); b.setId(UuidUtil.uuid()); b.setObjId(bisInspAllObj.getObjId()); b.setStcd(bisInspAllObj.getCode()); b.setStnm(bisInspAllObj.getNm()); b.setSttp(attGrwBase.getSttp()); b.setStlc(attGrwBase.getStlc()); Date d = new Date(); SimpleDateFormat df = new SimpleDateFormat(SplitValue.TIME_SPLIT_SEC);//设置日期格式 String format = df.format(d); b.setInTm(format); b.setUpTm(format); b.setFlagValid("1"); b.setInspState(CommonLabel.INIT_DATA); bisInspGrwDao.insert(b); } @Override public String getType() { return BisInspEnum.GRW.getValue(); } @Override public void cleanObjData(String objId) { BisInspFscRgstrParam bisInspFscRgstrParam = new BisInspFscRgstrParam(); bisInspFscRgstrParam.setObjId(objId); List list = bisInspFscRgstrDao.findList(bisInspFscRgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); BisInspPblmParam bisInspPblmParam = new BisInspPblmParam(); bisInspPblmParam.setRegid(id); bisInspPblmParam.setObjType(BisInspEnum.FSC.getValue()); this.bisInspPblmDao.deleteBy(bisInspPblmParam); BisInspFscRgstr rgstr = bisInspFscRgstrDao.get(id); bisInspFscRgstrDao.delete(id); if (rgstr != null) { //删除督查对象 BisInspAllObjParam bisInspAllObjParam = new BisInspAllObjParam(); bisInspAllObjParam.setObjId(objId); this.bisInspAllObjDao.deleteBy(bisInspAllObjParam); } } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { try { return findPageByType(typeParam); } catch (Exception e) { e.printStackTrace(); } return null; } @Override public Object findObjListByType(TypeParam typeParam) { if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } List list = bisInspGrwDao.findPageByType(typeParam); return list; } }