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.CommonLabel; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.BisInspRslkbkRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspRslkbkRgstrDto; import cn.com.goldenwater.dcproj.model.AttRsBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspRslkbkPblm; import cn.com.goldenwater.dcproj.model.BisInspRslkbkRgstr; import cn.com.goldenwater.dcproj.param.BisInspRslkbkPblmParam; import cn.com.goldenwater.dcproj.param.BisInspRslkbkRgstrParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.Builder; 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.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.Date; import java.util.List; /** * @author lhc * @date 2021-4-26 */ @Service @Transactional public class BisInspRslkbkRgstrServiceImpl extends AbstractCrudService implements BisInspRslkbkRgstrService, BisInspObjStrategy { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspRslkbkRgstrDao bisInspRslkbkRgstrDao; @Autowired private AttRsBaseService attRsBaseService; @Autowired private BisInspRslkbkPblmService bisInspRslkbkPblmService; @Autowired private BisInspPblmService bisInspPblmService; public BisInspRslkbkRgstrServiceImpl(BisInspRslkbkRgstrDao bisInspRslkbkRgstrDao) { super(bisInspRslkbkRgstrDao); this.bisInspRslkbkRgstrDao = bisInspRslkbkRgstrDao; } @Override public int insert(BisInspRslkbkRgstr bisInspRslkbkRgstr) { String uuid = UuidUtil.uuid(); bisInspRslkbkRgstr.setId(uuid); bisInspRslkbkRgstr.setIntm(new Date()); bisInspRslkbkRgstr.setUptm(new Date()); bisInspRslkbkRgstr.setDataStat("0"); return this.bisInspRslkbkRgstrDao.insert(bisInspRslkbkRgstr); } @Override public BisInspRslkbkRgstr get(String key) { BisInspRslkbkRgstr rgstr = super.get(key); if (!"2".equals(rgstr.getRectStat())) { checkFinished(rgstr); } return rgstr; } /** * 更新整改问题状态 * 判断问题是否全部整改 * * @param rgstr */ private void checkFinished(BisInspRslkbkRgstr rgstr) { String rectStat = "0"; List pblmMendList = bisInspRslkbkPblmService.findList(Builder.of(BisInspRslkbkPblmParam::new).with(BisInspRslkbkPblmParam::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); // bisInspRslkbkRgstrDao.update(rgstr); } } @Override public int update(BisInspRslkbkRgstr bisInspRslkbkRgstr) { bisInspRslkbkRgstr.setUptm(new Date()); int ret = this.bisInspRslkbkRgstrDao.update(bisInspRslkbkRgstr); // 更新基础表信息 updateAttBase(bisInspRslkbkRgstr); updatePblmState(bisInspRslkbkRgstr); return ret; } private void updateAttBase(BisInspRslkbkRgstr rgstr) { BisInspRslkbkRgstr r = get(rgstr.getId()); AttRsBase attWiuqhBase = attRsBaseService.getObjId(r.getObjId()); attWiuqhBase.setRegCode(rgstr.getDamRegCode()); attWiuqhBase.setRsName(rgstr.getRsName()); attWiuqhBase.setAdmDiv(rgstr.getAdCode()); attWiuqhBase.setCenterX(rgstr.getCenterX() != null ? String.valueOf(rgstr.getCenterX()) : ""); attWiuqhBase.setCenterY(rgstr.getCenterY() != null ? String.valueOf(rgstr.getCenterY()) : ""); attWiuqhBase.setRsAdmCode(rgstr.getRsAdmCode()); attWiuqhBase.setRsAdmName(rgstr.getRsAdmName()); attWiuqhBase.setEngScal(rgstr.getEngScal()); attWiuqhBase.setRsClass(rgstr.getRsClass()); attWiuqhBase.setDamType(rgstr.getDamType()); attWiuqhBase.setTotCap(rgstr.getTotCap()); attWiuqhBase.setLocation(rgstr.getLocation()); attWiuqhBase.setDamSizeHig(rgstr.getDamSizeHig()); attWiuqhBase.setDesFlStag(rgstr.getDesFlStag()); attWiuqhBase.setFlConTopStag(rgstr.getFlConTopStag()); attWiuqhBase.setImpdDt(rgstr.getImpdDt()); attWiuqhBase.setRnfcImpdDt(rgstr.getRnfcImpdDt()); attWiuqhBase.setIsAction(rgstr.getIsAction()); attWiuqhBase.setIsSaf(rgstr.getIsSaf()); attWiuqhBase.setNormz(rgstr.getNormz()); attWiuqhBase.setFsltdz(rgstr.getFsltdz()); attRsBaseService.update(attWiuqhBase); } private void updatePblmState(BisInspRslkbkRgstr rgstr) { BisInspRslkbkRgstr r = get(rgstr.getId()); if (r == null) { return; } bisInspPblmService.updateStateByObjId(r.getObjId(), rgstr.getState()); } @Override public int delete(String id) { return this.bisInspRslkbkRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspRslkbkRgstr b = new BisInspRslkbkRgstr(); AttRsBase base = attRsBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setDamRegCode(base.getRegCode()); b.setHasDamRegCode(StringUtils.isBlank(base.getRegCode()) ? "2" : "1"); b.setAdCode(base.getAdmDiv()); // 统一字段 rgstrId, objId b.setId(UuidUtil.uuid()); b.setObjId(bisInspAllObj.getObjId()); // 日期 Date d = new Date(); b.setIntm(d); b.setUptm(d); // 数据状态 默认为 0 b.setDataStat(CommonLabel.INIT_DATA); // 督查状态(0:未督查;1:督查中;2:已督查) b.setState(CommonLabel.INIT_DATA); // 创建人 // b.setPersId(persId); /* 添加 登记表 */ this.bisInspRslkbkRgstrDao.insert(b); } @Override public String getType() { return BisInspEnum.RSLKBK.getValue(); } @Override public void cleanObjData(String objId) { BisInspRslkbkRgstrParam rgstrParam = new BisInspRslkbkRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspRslkbkRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除登记表 this.bisInspRslkbkRgstrDao.delete(id); } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { logger.info("zxsk cs:"+typeParam); if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } PageHelper.startPage(typeParam); List list = this.bisInspRslkbkRgstrDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstrDto -> { if (StringUtils.isNotBlank(rgstrDto.getAdFullName())) { String[] adFullNames = rgstrDto.getAdFullName().split("-"); rgstrDto.setProName(adFullNames[0]); if (adFullNames.length > 1) { rgstrDto.setCityName(adFullNames[1]); } if (adFullNames.length > 2) { rgstrDto.setCountyName(adFullNames[2]); } } }); } return new PageInfo<>(list); } @Override public Object findObjListByType(TypeParam typeParam) { logger.info("zxsk cs:"+typeParam); return this.bisInspRslkbkRgstrDao.findPageList(typeParam); } }