package cn.com.goldenwater.dcproj.service.impl.rssfdr; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.constValue.StateEnum; import cn.com.goldenwater.dcproj.dao.*; import cn.com.goldenwater.dcproj.dto.BisInspRssfdrRgstrDto; import cn.com.goldenwater.dcproj.dto.BisNewDcuserRelVillDto; import cn.com.goldenwater.dcproj.model.AttRsBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspRssfdrRgstr; import cn.com.goldenwater.dcproj.model.BisZhejiangDcuserRelVill; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.service.BisInspRssfdrRgstrService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; 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.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.ArrayList; import java.util.Date; import java.util.List; /** * @author lune * @date 2020-9-11 */ @Service @Transactional(rollbackFor = Exception.class) public class BisInspRssfdrRgstrServiceImpl extends AbstractCrudService implements BisInspRssfdrRgstrService, BisInspObjStrategy { @Autowired private BisInspRssfdrRgstrDao bisInspRssfdrRgstrDao; @Autowired private BisInspPblmDao bisInspPblmDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; @Autowired private AttRsBaseDao attRsBaseDao; @Autowired private BisInspRssfdrRgstrBuildDao bisInspRssfdrRgstrBuildDao; @Autowired private BisInspRssfdrRgstrImplmtDao bisInspRssfdrRgstrImplmtDao; public BisInspRssfdrRgstrServiceImpl(BisInspRssfdrRgstrDao bisInspRssfdrRgstrDao) { super(bisInspRssfdrRgstrDao); this.bisInspRssfdrRgstrDao = bisInspRssfdrRgstrDao; } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { AttRsBase base = attRsBaseDao.get(bisInspAllObj.getCode()); BisInspRssfdrRgstr rgstr = new BisInspRssfdrRgstr(); BeanUtils.copyProperties(base, rgstr); rgstr.setId(UuidUtil.uuid()); rgstr.setObjId(bisInspAllObj.getObjId()); rgstr.setRsCode(bisInspAllObj.getCode()); rgstr.setRsName(bisInspAllObj.getNm()); rgstr.setAdCode(base.getAdmDiv()); rgstr.setAdName(base.getLocation()); rgstr.setGdX(Double.valueOf(base.getCenterXGd() == null ? "0" : base.getCenterXGd())); rgstr.setGdY(Double.valueOf(base.getCenterYGd() == null ? "0" : base.getCenterYGd())); rgstr.setAdCode(base.getAdmDiv()); rgstr.setAdName(base.getLocation()); rgstr.setAddr(base.getRsLoc()); rgstr.setResCreateTime(base.getCompDate()); rgstr.setDamType(base.getDamType()); rgstr.setDamRegCode(base.getRegCode()); rgstr.setState(StateEnum.NOWASTSTATE.getKey()); rgstr.setSfdrState(StateEnum.NOWASTSTATE.getKey()); rgstr.setIntm(new Date()); rgstr.setUptm(new Date()); bisInspRssfdrRgstrDao.insert(rgstr); } @Override public String getType() { return BisInspEnum.RSSFDR.getValue(); } @Override public void cleanObjData(String objId) { BisInspRssfdrRgstrParam rgstrParam = new BisInspRssfdrRgstrParam(); rgstrParam.setObjId(objId); List rgstrList = bisInspRssfdrRgstrDao.findList(rgstrParam); if (CollectionUtils.isNotEmpty(rgstrList)) { String id = rgstrList.get(0).getId(); //删除问题 BisInspPblmParam bisInspPblmParam = new BisInspPblmParam(); bisInspPblmParam.setObjId(objId); bisInspPblmParam.setObjType(BisInspEnum.WINTU.getValue()); this.bisInspPblmDao.deleteBy(bisInspPblmParam); //删除对象名录表 BisInspAllObjParam bisInspAllObjParam = new BisInspAllObjParam(); bisInspAllObjParam.setObjId(objId); this.bisInspAllObjDao.deleteBy(bisInspAllObjParam); BisInspRssfdrRgstrBuildParam buildParam = new BisInspRssfdrRgstrBuildParam(); buildParam.setRgstrId(id); bisInspRssfdrRgstrBuildDao.deleteBy(buildParam); BisInspRssfdrRgstrImplmtParam implmtParam = new BisInspRssfdrRgstrImplmtParam(); implmtParam.setRgstrId(id); bisInspRssfdrRgstrImplmtDao.deleteBy(implmtParam); bisInspRssfdrRgstrDao.delete(id); } } public String getAdCode(String regid) { BisInspRssfdrRgstr rgstr = bisInspRssfdrRgstrDao.get(regid); if (rgstr != null && StringUtils.isNotBlank(rgstr.getAdCode())) { return rgstr.getAdCode().substring(0, 2); } return null; } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { return this.findRssfdrPage(typeParam); } @Override public Object findObjListByType(TypeParam typeParam) { List list = bisInspRssfdrRgstrDao.findRssfdrList(typeParam); if (list.size() > 0) { for (BisInspRssfdrRgstrDto rgstrDto : list) { String adFullName = rgstrDto.getAdName(); if (StringUtils.isBlank(adFullName)) { continue; } if (adFullName.contains(SplitValue.HENG_SPLIT)) { String[] split = adFullName.split(SplitValue.HENG_SPLIT); if (split.length == 3) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(split[2]); } if (split.length == 2) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(""); } } else { rgstrDto.setProvince(adFullName); } } } return list; } @Override public PageInfo findRssfdrPage(TypeParam param) { if (StringUtils.isNotBlank(param.getAdCode())) { param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get(SplitValue.SUBAD))); } if (StringUtils.isNotBlank(param.getAdCodes())) { param.setAdCodes(AdLevelUtil.getListAddvcd(param.getAdCodes())); } PageHelper.startPage(param); List list = bisInspRssfdrRgstrDao.findRssfdrList(param); if (list.size() > 0) { for (BisInspRssfdrRgstrDto rgstrDto : list) { String adFullName = rgstrDto.getAdName(); if (StringUtils.isBlank(adFullName)) { continue; } if (adFullName.contains(SplitValue.HENG_SPLIT)) { String[] split = adFullName.split(SplitValue.HENG_SPLIT); if (split.length == 3) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(split[2]); } if (split.length == 2) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(""); } } else { rgstrDto.setProvince(adFullName); } } } return new PageInfo<>(list); } @Override public List findZhenListByType(String adCode, String regstrId, String type) { List dcuserRelVillList = bisInspRssfdrRgstrDao.findCunListByType(adCode, regstrId, type); List zhenList = new ArrayList<>(); for (BisZhejiangDcuserRelVill bisZhejiangDcuserRelVill : dcuserRelVillList) { String townName = bisZhejiangDcuserRelVill.getTownName(); if (!zhenList.contains(townName)) { zhenList.add(townName); } } List dcuserRelVillDtos = new ArrayList<>(); for (int i = 0; i < zhenList.size(); i++) { BisNewDcuserRelVillDto dcuserRelVillDto = new BisNewDcuserRelVillDto(); List cunList = new ArrayList<>(); String townCode = ""; for (int j = 0; j < dcuserRelVillList.size(); j++) { if (zhenList.get(i).equals(dcuserRelVillList.get(j).getTownName())) { cunList.add(dcuserRelVillList.get(j)); townCode = dcuserRelVillList.get(j).getAdCode(); townCode = townCode.substring(0, townCode.length() - 3); } } dcuserRelVillDto.setTownCode(townCode); dcuserRelVillDto.setTownName(zhenList.get(i)); dcuserRelVillDto.setDcuserRelVilles(cunList); dcuserRelVillDtos.add(dcuserRelVillDto); } return dcuserRelVillDtos; } }