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.BisInspGnrlRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspGnrlRgstrDto; import cn.com.goldenwater.dcproj.model.AttGnrlBase; import cn.com.goldenwater.dcproj.model.AttGnrlSectBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspGnrlRgstr; import cn.com.goldenwater.dcproj.param.AttGnrlSectBaseParam; import cn.com.goldenwater.dcproj.param.BisInspGnrlRgstrParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.AttGnrlBaseService; import cn.com.goldenwater.dcproj.service.AttGnrlSectBaseService; import cn.com.goldenwater.dcproj.service.BisInspGnrlRgstrService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.service.BisInspPblmService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.Builder; 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.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; import java.util.Optional; /** * @author * @date 2021-12-6 */ @Service @Transactional public class BisInspGnrlRgstrServiceImpl extends AbstractCrudService implements BisInspGnrlRgstrService, BisInspObjStrategy { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private AttGnrlBaseService attGnrlBaseService; private final BisInspGnrlRgstrDao bisInspGnrlRgstrDao; @Autowired private AttGnrlSectBaseService attGnrlSectBaseService; @Autowired private BisInspPblmService bisInspPblmService; public BisInspGnrlRgstrServiceImpl(BisInspGnrlRgstrDao bisInspGnrlRgstrDao) { super(bisInspGnrlRgstrDao); this.bisInspGnrlRgstrDao = bisInspGnrlRgstrDao; } @Override public int insert(BisInspGnrlRgstr bisInspGnrlRgstr) { bisInspGnrlRgstr.setId(UuidUtil.uuid()); bisInspGnrlRgstr.setIntm(new Date()); bisInspGnrlRgstr.setUptm(new Date()); // 督查状态(0:未督查;1:督查中;2:已督查) bisInspGnrlRgstr.setState(CommonLabel.INIT_DATA); bisInspGnrlRgstr.setDataStat(CommonLabel.INIT_DATA); return this.bisInspGnrlRgstrDao.insert(bisInspGnrlRgstr); } @Override public int update(BisInspGnrlRgstr bisInspGnrlRgstr) { Optional.of(bisInspGnrlRgstr).ifPresent(r -> { if (StringUtils.isBlank(r.getId()) && StringUtils.isNotBlank(r.getRgstrId())) { r.setId(r.getRgstrId()); } }); Optional.of(bisInspGnrlRgstr).map(BisInspGnrlRgstr::getId).orElseThrow(() -> new CheckException("id.no")); bisInspGnrlRgstr.setUptm(new Date()); //删除之前标段 AttGnrlSectBaseParam attGnrlSectBaseParam=new AttGnrlSectBaseParam(); attGnrlSectBaseParam.setGnrlId(bisInspGnrlRgstr.getId()); attGnrlSectBaseService.deleteBy(attGnrlSectBaseParam); //增加标段 if (null != bisInspGnrlRgstr.getAttGnrlSectBases()) { for (AttGnrlSectBase attGnrlSectBase : bisInspGnrlRgstr.getAttGnrlSectBases()) { attGnrlSectBase.setGnrlId(bisInspGnrlRgstr.getId()); attGnrlSectBaseService.insert(attGnrlSectBase); } } // 更新通用督查登记表 int rows = this.bisInspGnrlRgstrDao.update(bisInspGnrlRgstr); // 更新问题状态 updatePblmState(bisInspGnrlRgstr); return rows; } private void updatePblmState(BisInspGnrlRgstr rgstr) { BisInspGnrlRgstr r = get(rgstr.getRgstrId()); if (r == null) { return; } logger.info("BisInspGnrlRgstr:" + r.toString()); bisInspPblmService.updateStateByObjId(r.getObjId(), rgstr.getState()); } @Override public int delete(String id) { return this.bisInspGnrlRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspGnrlRgstr b = new BisInspGnrlRgstr(); AttGnrlBase base = attGnrlBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setType(base.getObjType()); // 统一字段 rgstrId, objId b.setObjId(bisInspAllObj.getObjId()); // 创建人 // b.setPersId(persId); /* 添加 登记表 */ insert(b); } @Override public String getType() { return BisInspEnum.GNRL.getValue(); } @Override public void cleanObjData(String objId) { List list = this.bisInspGnrlRgstrDao.findList(Builder.of(BisInspGnrlRgstrParam::new) .with(BisInspGnrlRgstrParam::setObjId, objId) .build()); if (list.size() > 0) { String id = list.get(0).getId(); // 删除登记表 this.bisInspGnrlRgstrDao.delete(id); } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } PageHelper.startPage(typeParam); List list = this.bisInspGnrlRgstrDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstr -> { if (StringUtils.isNotBlank(rgstr.getAdFullName())) { String[] adFullNames = rgstr.getAdFullName().split("-"); rgstr.setProvince(adFullNames[0]); if (adFullNames.length > 1) { rgstr.setCity(adFullNames[1]); } if (adFullNames.length > 2) { rgstr.setCountry(adFullNames[2]); } } }); } return new PageInfo<>(list); } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspGnrlRgstrDao.findPageList(typeParam); } @Override public BisInspGnrlRgstr get(String id) { BisInspGnrlRgstr bisInspGnrlRgstr = this.bisInspGnrlRgstrDao.get(id); AttGnrlSectBaseParam attGnrlSectBaseParam = new AttGnrlSectBaseParam(); attGnrlSectBaseParam.setGnrlId(id); List attGnrlSectBases = attGnrlSectBaseService.findList(attGnrlSectBaseParam); if(attGnrlSectBases !=null && bisInspGnrlRgstr!=null) { bisInspGnrlRgstr.setAttGnrlSectBases(attGnrlSectBases); } return bisInspGnrlRgstr; } }