package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.RsvrEnum; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.constValue.StateEnum; import cn.com.goldenwater.dcproj.dao.AttRsBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.dao.BisInspRsvrynRgstrDao; import cn.com.goldenwater.dcproj.dao.GwComFileDao; import cn.com.goldenwater.dcproj.dto.BisInspRsvrynRgstrData; import cn.com.goldenwater.dcproj.dto.BisInspRsvrynRgstrDto; import cn.com.goldenwater.dcproj.dto.BisInspRsvrynRgstrPcDto; import cn.com.goldenwater.dcproj.dto.BisInspTaskTotal; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.Builder; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; 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.*; /** * @author lune * @date 2019-2-18 */ @Service @Transactional(rollbackFor = Exception.class) public class BisInspRsvrynRgstrServiceImpl extends AbstractCrudService implements BisInspRsvrynRgstrService, BisInspObjStrategy { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspRsvrynRgstrDao bisInspRsvrynRgstrDao; @Autowired private AttRsBaseDao attRsBaseDao; @Autowired private BisInspPblmDao bisInspPblmDao; @Autowired private GwComFileDao comFileDao; @Autowired private BisInspRsvrynPblmMendService bisInspRsvrynPblmMendService; @Autowired private BisInspRsvrynRgstrChkInfoService bisInspRsvrynRgstrChkInfoService; @Autowired private BisInspPblmService bisInspPblmService; public BisInspRsvrynRgstrServiceImpl(BisInspRsvrynRgstrDao bisInspRsvrynRgstrDao) { super(bisInspRsvrynRgstrDao); this.bisInspRsvrynRgstrDao = bisInspRsvrynRgstrDao; } @Override public int update(BisInspRsvrynRgstr entity) { entity.setUptm(new Date()); int ret = super.update(entity); updatePblmState(entity); return ret; } private void updatePblmState(BisInspRsvrynRgstr rgstr) { BisInspRsvrynRgstr r = get(rgstr.getRgstrId()); if (r == null) { return; } logger.info("BisInspRsvrynRgstr:" + r.toString()); bisInspPblmService.updateStateByObjId(r.getObjId(), rgstr.getState()); } @Override public BisInspRsvrynRgstr getBy(BisInspRsvrynRgstrParam param) { BisInspRsvrynRgstr rgstr = super.getBy(param); if (rgstr == null) { return rgstr; } rgstr.setRegCode(rgstr.getDamRegCode()); rgstr.setCenterX(rgstr.getRsvrLong() == null ? "" : String.valueOf(rgstr.getRsvrLong())); rgstr.setCenterY(rgstr.getRsvrLat() == null ? "" : String.valueOf(rgstr.getRsvrLat())); if (!"2".equals(rgstr.getRectStat())) { checkFinished(rgstr); } return rgstr; } @Override public BisInspRsvrynRgstr get(String key) { BisInspRsvrynRgstr rgstr = super.get(key); if (rgstr == null) { return rgstr; } rgstr.setRegCode(rgstr.getDamRegCode()); rgstr.setCenterX(rgstr.getRsvrLong() == null ? "" : String.valueOf(rgstr.getRsvrLong())); rgstr.setCenterY(rgstr.getRsvrLat() == null ? "" : String.valueOf(rgstr.getRsvrLat())); if (!"2".equals(rgstr.getRectStat())) { checkFinished(rgstr); } return rgstr; } /** * 更新整改问题状态 * 判断问题是否全部整改 * * @param rgstr */ private void checkFinished(BisInspRsvrynRgstr rgstr) { String rectStat = "0"; List pblmMendList = bisInspRsvrynPblmMendService.findList(Builder.of(BisInspRsvrynPblmMendParam::new).with(BisInspRsvrynPblmMendParam::setRsCode, rgstr.getRsCode()).build()); if (pblmMendList == null || pblmMendList.size() == 0) { rectStat = "2"; } else { long total = pblmMendList.size(); long revw = pblmMendList.stream().filter(p -> "2".equals(p.getRevwState())).count(); if (total == revw) { rectStat = "2"; } else if (total > revw && revw != 0) { rectStat = "1"; } } if (!rectStat.equals(rgstr.getRectStat())) { rgstr.setRectStat(rectStat); bisInspRsvrynRgstrDao.update(rgstr); } } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { AttRsBaseParam baseParam = new AttRsBaseParam(); baseParam.setRsCode(bisInspAllObj.getCode()); AttRsBase attRsBase = attRsBaseDao.getBy(baseParam); BisInspRsvrynRgstr b = new BisInspRsvrynRgstr(); BeanUtils.copyProperties(attRsBase, b); String registrId = UUID.randomUUID().toString().replace(SplitValue.HENG_SPLIT, ""); b.setRgstrId(registrId); b.setObjId(bisInspAllObj.getObjId()); b.setRsCode(attRsBase.getRsCode()); b.setRsvrNm(bisInspAllObj.getNm()); b.setAdCode(attRsBase.getAdmDiv()); b.setOrgId(bisInspAllObj.getOrgId()); b.setRsvrAdmName(attRsBase.getRsAdmName()); if (attRsBase.getDamSizeHig() == null) { b.setDamMaxHigh(null); } else { b.setDamMaxHigh(Double.toString(attRsBase.getDamSizeHig())); } b.setEngScal(attRsBase.getEngScal()); if (StringUtils.isNotBlank(attRsBase.getLocation())) { b.setHystSite(attRsBase.getLocation()); } else { b.setHystSite(attRsBase.getRsLoc()); } if (attRsBase.getCenterYGd() != null) { b.setRsvrLat(Double.parseDouble(attRsBase.getCenterYGd())); } if (attRsBase.getCenterXGd() != null) { b.setRsvrLong(Double.parseDouble(attRsBase.getCenterXGd())); } b.setResCreateTime(attRsBase.getCompDate()); b.setHystSite(attRsBase.getRsLoc()); b.setTotCap(attRsBase.getTotCap()); b.setLocation(attRsBase.getLocation()); b.setDamRegCode(attRsBase.getRegCode()); b.setDamType(attRsBase.getDamType()); b.setHasDamRegCode("1"); b.setState(StateEnum.NOWASTSTATE.getKey()); b.setCompDateStr(attRsBase.getCompDateStr()); b.setPresStat(StateEnum.NOWASTSTATE.getKey()); b.setBaseStat(StateEnum.NOWASTSTATE.getKey()); b.setResRunStat(StateEnum.NOWASTSTATE.getKey()); b.setViewStat(StateEnum.NOWASTSTATE.getKey()); b.setDataStat(StateEnum.NOWASTSTATE.getKey()); b.setSafeStat(StateEnum.NOWASTSTATE.getKey()); Date date = new Date(); b.setIntm(date); b.setUptm(date); bisInspRsvrynRgstrDao.insert(b); // TODO 导入去年的复查数据 //1. 获取去年问题数据 //2. 转换成复查数据,并保存 Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.add(Calendar.YEAR, -1); Date lastYearDate = c.getTime(); String lastYear = DateUtils.Date2Str(lastYearDate, "yyyy"); List pblmList = bisInspPblmDao.findList(Builder.of(BisInspPblmParam::new) .with(BisInspPblmParam::setYear, lastYear) .with(BisInspPblmParam::setObjType, "1") .with(BisInspPblmParam::setObjCode, attRsBase.getRsCode()) .build()); if (CollectionUtils.isEmpty(pblmList)) { return; } pblmList.forEach(pblm -> { BisInspRsvrynPblmMend pblmMend = new BisInspRsvrynPblmMend(); pblmMend.pblmConvert(pblm); pblmMend.setId(UuidUtil.uuid()); pblmMend.setYear(DateUtils.getToday("yyyy")); pblmMend.setRgstrId(b.getRgstrId()); pblmMend.setDamRegCode(attRsBase.getRegCode()); pblmMend.setEngScal(attRsBase.getEngScal()); pblmMend.setSafeComment(attRsBase.getWcEvltOld()); pblmMend.setUnit(attRsBase.getRsAdmName()); bisInspRsvrynPblmMendService.insert(pblmMend); }); } @Override public String getType() { return BisInspEnum.RSVRYN.getValue(); } @Override public void cleanObjData(String objId) { BisInspRsvrynRgstrParam bisInspRsvrynRgstrParam = new BisInspRsvrynRgstrParam(); bisInspRsvrynRgstrParam.setObjId(objId); List list = this.bisInspRsvrynRgstrDao.findList(bisInspRsvrynRgstrParam); if (list.size() > 0) { String id = list.get(0).getRgstrId(); bisInspRsvrynPblmMendService.deleteBy(Builder.of(BisInspRsvrynPblmMendParam::new) .with(BisInspRsvrynPblmMendParam::setRgstrId, id) .build()); bisInspRsvrynRgstrChkInfoService.deleteBy(Builder.of(BisInspRsvrynRgstrChkInfoParam::new) .with(BisInspRsvrynRgstrChkInfoParam::setRgstrId, id) .build()); this.bisInspRsvrynRgstrDao.delete(id);//删除水库登记表 } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { return this.findPageByType(typeParam); } @Override public Object findObjListByType(TypeParam typeParam) { return this.findListByType(typeParam); } @Override public BisInspRsvrynRgstr createCheckData(BisInspRsvrynRgstr rsvrRgstr, String flag, String currentPersId) { String regstrId = rsvrRgstr.getRgstrId(); String regstrId_flag = regstrId + "_" + flag; BisInspPblmParam pblmParam = new BisInspPblmParam(); pblmParam.setRegid(regstrId); List pblmList = bisInspPblmDao.findList(pblmParam); if (pblmList != null && !pblmList.isEmpty()) { for (BisInspPblm inspPblm : pblmList) { List comFiles = comFileDao.findFileByBiz(inspPblm.getPblmId()); String pblmId = UuidUtil.uuid(); inspPblm.setPblmId(pblmId); inspPblm.setDataStat(flag); inspPblm.setRegid(regstrId_flag); if (comFiles != null && !comFiles.isEmpty()) { for (GwComFile comFile : comFiles) { comFile.setBizId(pblmId); comFile.setId(UuidUtil.uuid()); comFileDao.insert(comFile); } } bisInspPblmDao.insert(inspPblm); } } rsvrRgstr.setState(flag); return rsvrRgstr; } /** * 根据行政 开始时间和结束时间统计小水库 督查对象的列表数据 * * @param adCode * @param stTm * @param enTm * @return */ @Override public BisInspTaskTotal getListByTm(String adCode, Date stTm, Date enTm) { return bisInspRsvrynRgstrDao.getListByTm(adCode, stTm, enTm); } @Override public void updateRsvr(String rgstrId, String status, String input) { if (StringUtils.isBlank(rgstrId)) { return; } BisInspRsvrynRgstr inspRsvrRgstr = bisInspRsvrynRgstrDao.get(rgstrId); if (StringUtils.isBlank(status)) { status = "2"; } RsvrEnum rsvrEnum = RsvrEnum.getByValue(input); if (rsvrEnum == null) { return; } switch (rsvrEnum) { case PERSSAFE: inspRsvrRgstr.setSafeStat(status); break; case REIN: inspRsvrRgstr.setReinStat(status); break; case DAM: inspRsvrRgstr.setDamStat(status); break; case FITS: inspRsvrRgstr.setBenefitStat(status); break; case PROJECT: inspRsvrRgstr.setReverStat(status); break; case PRES: inspRsvrRgstr.setPresStat(status); break; case VIEW: inspRsvrRgstr.setViewStat("2"); break; case EXT: inspRsvrRgstr.setBaseStat(status); break; case SAFE: inspRsvrRgstr.setResRunStat(status); break; default: } if (StringUtils.isBlank(inspRsvrRgstr.getState()) || StateEnum.NOWASTSTATE.getKey().equals(inspRsvrRgstr.getState())) { inspRsvrRgstr.setState(StateEnum.EXWASTSTATE.getKey()); } else { inspRsvrRgstr.setState(inspRsvrRgstr.getState()); } bisInspRsvrynRgstrDao.update(inspRsvrRgstr); } @Override public int deleteRsvrRgstr(String id) { return bisInspRsvrynRgstrDao.deleteInFlag(id); } @Override public int add(BisInspRsvrynRgstrData bisInspRsvrynRgstrData) { Date date = new Date(); BisInspRsvrynRgstr bisInspRsvrynRgstr = bisInspRsvrynRgstrData.getRsvrRgstr(); bisInspRsvrynRgstr.setState(StateEnum.EXWASTSTATE.getKey()); bisInspRsvrynRgstr.setDataStat("0"); bisInspRsvrynRgstr.setUptm(date); bisInspRsvrynRgstr.setIntm(date); this.insert(bisInspRsvrynRgstr); return 1; } @Override public void updateRG(BisInspRsvrynRgstr rsvrRgstr) { Date date = new Date(); //提交督查表,更新问题状态 BisInspPblm bisInspPblm = new BisInspPblm(); bisInspPblm.setPblmStat("1"); bisInspPblm.setRegid(rsvrRgstr.getRgstrId()); if (StringUtils.isNotBlank(rsvrRgstr.getRgstrId())) { bisInspPblmDao.updatePblmStatus(bisInspPblm); } bisInspRsvrynRgstrDao.update(rsvrRgstr); } @Override public PageInfo findPageByType(TypeParam typeParam) { if (StringUtils.isNotBlank(typeParam.getCode())) { typeParam.setCode(AdLevelUtil.SubAd(typeParam.getCode()).get(SplitValue.SUBAD).toString()); } PageHelper.startPage(typeParam); List list = bisInspRsvrynRgstrDao.findPageByType(typeParam); PageInfo pageInfo = new PageInfo(list); return pageInfo; } @Override public List findListByType(TypeParam typeParam) { if (StringUtils.isNotBlank(typeParam.getCode())) { typeParam.setCode(AdLevelUtil.SubAd(typeParam.getCode()).get(SplitValue.SUBAD).toString()); } List list = bisInspRsvrynRgstrDao.findPageByType(typeParam); if (list == null) { return new ArrayList<>(); } return list; } @Override public PageInfo findAttBaseInfo(AttRsBaseParam attRsBaseParam) { PageHelper.startPage(attRsBaseParam); List list = attRsBaseDao.findList(attRsBaseParam); return new PageInfo<>(list); } @Override public PageInfo findPcPage(TypeParam typeParam) { PageHelper.startPage(typeParam); List list = bisInspRsvrynRgstrDao.findPcPage(typeParam); if (list.size() > 0) { for (BisInspRsvrynRgstrPcDto b : list) { if (b.getAdFullName() != null) { if (b.getAdFullName().contains(SplitValue.HENG_SPLIT)) { String[] split = b.getAdFullName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { b.setProvince(split[0]); b.setCity(split[1]); b.setCounty(split[2]); } if (split.length == 2) { b.setProvince(split[0]); b.setCity(split[1]); b.setCounty(""); } } else { b.setProvince(b.getAdFullName()); } } } } return new PageInfo<>(list); } @Override public BisInspRsvrynRgstr getByRsvrRgstr(BisInspRsvrynRgstrParam inspRsvrRgstrParam) { String state = StateEnum.NOWASTSTATE.getKey(); String persId = inspRsvrRgstrParam.getRecPersId(); inspRsvrRgstrParam.setRecPersId(""); BisInspRsvrynRgstr bisInspRsvrynRgstr = bisInspRsvrynRgstrDao.getBy(inspRsvrRgstrParam); if (bisInspRsvrynRgstr != null) { if (bisInspRsvrynRgstr.getIntm() == null) { bisInspRsvrynRgstr.setIntm(new Date()); bisInspRsvrynRgstrDao.update(bisInspRsvrynRgstr); } return bisInspRsvrynRgstr; } bisInspRsvrynRgstr = new BisInspRsvrynRgstr(); AttRsBaseParam baseParam = new AttRsBaseParam(); baseParam.setRsCode(inspRsvrRgstrParam.getRsCode()); AttRsBase attRsBase = attRsBaseDao.getBy(baseParam); if (attRsBase == null) { return new BisInspRsvrynRgstr(); } bisInspRsvrynRgstr.setRgstrId(UuidUtil.uuid()); bisInspRsvrynRgstr.setAdCode(attRsBase.getAdmDiv()); bisInspRsvrynRgstr.setRsvrAdmName(attRsBase.getRsAdmName()); if (attRsBase.getDamSizeHig() == null) { bisInspRsvrynRgstr.setDamMaxHigh(null); } else { bisInspRsvrynRgstr.setDamMaxHigh(Double.toString(attRsBase.getDamSizeHig())); } bisInspRsvrynRgstr.setDamType(attRsBase.getDamType()); bisInspRsvrynRgstr.setDamRegCode(attRsBase.getRegCode()); bisInspRsvrynRgstr.setEngScal(attRsBase.getEngScal()); bisInspRsvrynRgstr.setObjId(inspRsvrRgstrParam.getObjId()); bisInspRsvrynRgstr.setHystSite(attRsBase.getRsLoc()); bisInspRsvrynRgstr.setLocation(attRsBase.getLocation()); bisInspRsvrynRgstr.setState(state); bisInspRsvrynRgstr.setRsCode(inspRsvrRgstrParam.getRsCode()); bisInspRsvrynRgstr.setTotCap(attRsBase.getTotCap()); if (attRsBase.getCenterYGd() != null) { bisInspRsvrynRgstr.setRsvrLat(Double.parseDouble(attRsBase.getCenterYGd())); } if (attRsBase.getCenterXGd() != null) { bisInspRsvrynRgstr.setRsvrLong(Double.parseDouble(attRsBase.getCenterXGd())); } bisInspRsvrynRgstr.setDataStat(state); Date date = new Date(); bisInspRsvrynRgstr.setIntm(date); bisInspRsvrynRgstr.setUptm(date); bisInspRsvrynRgstr.setPresStat(state); bisInspRsvrynRgstr.setRecPersId(persId); bisInspRsvrynRgstr.setResCreateTime(attRsBase.getCompDate()); bisInspRsvrynRgstr.setHasDamRegCode("1"); bisInspRsvrynRgstr.setCompDateStr(attRsBase.getCompDateStr()); bisInspRsvrynRgstr.setViewStat(state); bisInspRsvrynRgstr.setRsvrNm(attRsBase.getRsName()); bisInspRsvrynRgstr.setBaseStat(state); bisInspRsvrynRgstr.setReverStat(state); bisInspRsvrynRgstr.setResRunStat(state); bisInspRsvrynRgstr.setIsSaf(attRsBase.getIsSaf()); bisInspRsvrynRgstr.setIsAction(attRsBase.getIsAction()); bisInspRsvrynRgstr.setInspType(attRsBase.getInspType()); this.insert(bisInspRsvrynRgstr); return bisInspRsvrynRgstr; } @Override public int insert(BisInspRsvrynRgstr b) { int ret = 1; String objId = b.getObjId(); BisInspRsvrynRgstrParam bisInspRsvrynRgstrParam = new BisInspRsvrynRgstrParam(); bisInspRsvrynRgstrParam.setObjId(objId); List list = bisInspRsvrynRgstrDao.findList(bisInspRsvrynRgstrParam); if (list == null || list.size() == 0) { ret = bisInspRsvrynRgstrDao.insert(b); } return ret; } }