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.SplitValue; import cn.com.goldenwater.dcproj.dao.BisInspRssfgdRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspRssfgdRgstrDto; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.AttRsBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspRssfgdRgstr; import cn.com.goldenwater.dcproj.param.BisInspRssfgdBaseParam; import cn.com.goldenwater.dcproj.param.BisInspRssfgdRgstrParam; 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.dcproj.utils.Constant; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.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.Date; import java.util.List; import java.util.Map; import java.util.Optional; /** * @author lhc * @date 2021-5-19 */ @Service @Transactional public class BisInspRssfgdRgstrServiceImpl extends AbstractCrudService implements BisInspRssfgdRgstrService, BisInspObjStrategy { @Autowired private BisInspRssfgdRgstrDao bisInspRssfgdRgstrDao; @Autowired private AttRsBaseService attRsBaseService; @Autowired private AttAdBaseService attAdBaseService; @Autowired private BisInspRssfgdBaseService bisInspRssfgdBaseService; @Autowired private BisInspPblmService bisInspPblmService; public BisInspRssfgdRgstrServiceImpl(BisInspRssfgdRgstrDao bisInspRssfgdRgstrDao) { super(bisInspRssfgdRgstrDao); this.bisInspRssfgdRgstrDao = bisInspRssfgdRgstrDao; } @Override public BisInspRssfgdRgstr get(String key) { BisInspRssfgdRgstr rgstr = super.get(key); Optional.ofNullable(rgstr).map(BisInspRssfgdRgstr::getAdCode).ifPresent(adCode -> { AttAdBase attAdBase = attAdBaseService.get(adCode); Optional.ofNullable(attAdBase).ifPresent(base -> { rgstr.setAdFullName(base.getAdFullName()); }); }); return rgstr; } @Override public int insert(BisInspRssfgdRgstr bisInspRssfgdRgstr) { bisInspRssfgdRgstr.setId(UuidUtil.uuid()); bisInspRssfgdRgstr.setIntm(new Date()); bisInspRssfgdRgstr.setUptm(new Date()); bisInspRssfgdRgstr.setDataStat("0"); bisInspRssfgdRgstr.setState("0"); bisInspRssfgdRgstr.setSfdrState("0"); /* 添加 登记表 */ int ret = bisInspRssfgdRgstrDao.insert(bisInspRssfgdRgstr); // 添加 子表 bisInspRssfgdBaseService.insert(Builder.of(BisInspRssfgdBaseParam::new) .with(BisInspRssfgdBaseParam::setRgstrId, bisInspRssfgdRgstr.getId()).build()); return ret; } @Override public int update(BisInspRssfgdRgstr bisInspRssfgdRgstr) { bisInspRssfgdRgstr.setUptm(new Date()); int ret = this.bisInspRssfgdRgstrDao.update(bisInspRssfgdRgstr); updatePblmState(bisInspRssfgdRgstr); return ret; } private void updatePblmState(BisInspRssfgdRgstr rgstr) { BisInspRssfgdRgstr r = get(rgstr.getId()); if (r == null) { return; } bisInspPblmService.updateStateByObjId(r.getObjId(), rgstr.getState()); } @Override public int delete(String id) { return this.bisInspRssfgdRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspRssfgdRgstr b = new BisInspRssfgdRgstr(); AttRsBase base = attRsBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setAdCode(base.getAdmDiv()); b.setAdName(base.getAdmDivName()); b.setDamRegCode(base.getRegCode()); b.setAddr(base.getLocation()); b.setResCreateTime(base.getCompDate()); if (StringUtils.isNotBlank(base.getRegCode())) { b.setHasDamRegCode("1"); } else { b.setHasDamRegCode("0"); } b.setObjId(bisInspAllObj.getObjId()); insert(b); } @Override public String getType() { return BisInspEnum.RSSFGD.getValue(); } @Override public void cleanObjData(String objId) { BisInspRssfgdRgstrParam rgstrParam = new BisInspRssfgdRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspRssfgdRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除登记表 this.bisInspRssfgdRgstrDao.delete(id); // 添加 子表 bisInspRssfgdBaseService.insert(Builder.of(BisInspRssfgdBaseParam::new) .with(BisInspRssfgdBaseParam::setRgstrId, id).build()); } } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspRssfgdRgstrDao.findPageList(typeParam); } @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.bisInspRssfgdRgstrDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstr -> { AttAdBase attAdBase = attAdBaseService.get(rgstr.getAdCode()); Optional.ofNullable(attAdBase).ifPresent(base -> { rgstr.setAdFullName(base.getAdFullName()); }); }); } return new PageInfo<>(list); } @Override public void updateState(Map map) { BisInspRssfgdRgstr rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState())) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { switch (MapUtils.getString(map, "param")) { case "base": rgstr.setSfdrState(MapUtils.getString(map, "state")); break; default: } } update(rgstr); } } }