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.AttAdBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspFjwtenfDao; import cn.com.goldenwater.dcproj.dto.BisInspFjwtenfDto; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspFjwtenf; import cn.com.goldenwater.dcproj.param.BisInspFjwtenfKeyParam; import cn.com.goldenwater.dcproj.param.BisInspFjwtenfParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.BisInspFjwtenfKeyService; import cn.com.goldenwater.dcproj.service.BisInspFjwtenfService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; 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 lhc * @date 2021-10-9 */ @Service @Transactional public class BisInspFjwtenfServiceImpl extends AbstractCrudService implements BisInspFjwtenfService, BisInspObjStrategy { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspFjwtenfDao bisInspFjwtenfDao; @Autowired private AttAdBaseDao attAdBaseDao; @Autowired private BisInspFjwtenfKeyService bisInspFjwtenfKeyService; public BisInspFjwtenfServiceImpl(BisInspFjwtenfDao bisInspFjwtenfDao) { super(bisInspFjwtenfDao); this.bisInspFjwtenfDao = bisInspFjwtenfDao; } @Override public BisInspFjwtenf get(String key) { BisInspFjwtenf rgstr = super.get(key); Optional.ofNullable(rgstr).ifPresent(r -> { AttAdBase attAdBase = attAdBaseDao.get(r.getAdCode()); Optional.ofNullable(attAdBase).map(AttAdBase::getAdFullName).ifPresent(r::setAdFullName); }); return rgstr; } @Override public int insert(BisInspFjwtenf bisInspFjwtenf) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspFjwtenf.setId(uuid); // 日期 Date d = new Date(); bisInspFjwtenf.setIntm(d); bisInspFjwtenf.setUptm(d); // 数据状态 默认为 0 bisInspFjwtenf.setDataStat(CommonLabel.INIT_DATA); // 督查状态(0:未督查;1:督查中;2:已督查) bisInspFjwtenf.setState(CommonLabel.INIT_DATA); // 子表状态(0:未督查;1:督查中;2:已督查) bisInspFjwtenf.setKeyState(CommonLabel.INIT_DATA); bisInspFjwtenfKeyService.insert(Builder.of(BisInspFjwtenfKeyParam::new) .with(BisInspFjwtenfKeyParam::setRgstrId, uuid) .build()); return this.bisInspFjwtenfDao.insert(bisInspFjwtenf); } @Override public int update(BisInspFjwtenf bisInspFjwtenf) { if (StringUtils.isBlank(bisInspFjwtenf.getId()) || StringUtils.isNotBlank(bisInspFjwtenf.getRgstrId())) { // rgstrId 不为 空 时,传给ID bisInspFjwtenf.setId(bisInspFjwtenf.getRgstrId()); } if (StringUtils.isBlank(bisInspFjwtenf.getId())) { throw new CheckException("缺少登记表编码!"); } bisInspFjwtenf.setUptm(new Date()); return this.bisInspFjwtenfDao.update(bisInspFjwtenf); } @Override public int delete(String id) { return this.bisInspFjwtenfDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspFjwtenf b = new BisInspFjwtenf(); AttAdBase base = attAdBaseDao.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); // 统一字段 rgstrId, objId b.setNm(base.getAdName()); b.setObjId(bisInspAllObj.getObjId()); // 创建人 b.setPersId(persId); /* 添加 登记表 */ insert(b); } @Override public String getType() { return BisInspEnum.FJWTENF.getValue(); } @Override public void cleanObjData(String objId) { List list = this.bisInspFjwtenfDao.findList(Builder.of(BisInspFjwtenfParam::new).with(BisInspFjwtenfParam::setObjId, objId).build()); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 bisInspFjwtenfKeyService.deleteBy(Builder.of(BisInspFjwtenfKeyParam::new).with(BisInspFjwtenfKeyParam::setRgstrId, id).build()); // 删除登记表 this.bisInspFjwtenfDao.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.bisInspFjwtenfDao.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.bisInspFjwtenfDao.findPageList(typeParam); } }