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.BisInspPrdqhRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspPrdqhRgstrDto; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.AttPrdCstrProjBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspPrdqhRgstr; import cn.com.goldenwater.dcproj.param.BisInspPrdqhRgstrParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; 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.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.Optional; /** * @author lhc * @date 2021-6-5 */ @Service @Transactional public class BisInspPrdqhRgstrServiceImpl extends AbstractCrudService implements BisInspPrdqhRgstrService, BisInspObjStrategy { @Autowired private BisInspPrdqhRgstrDao bisInspPrdqhRgstrDao; @Autowired private AttAdBaseService attAdBaseService; @Autowired private AttPrdCstrProjBaseService attPrdBaseService; @Autowired private BisInspPblmService bisInspPblmService; public BisInspPrdqhRgstrServiceImpl(BisInspPrdqhRgstrDao bisInspPrdqhRgstrDao) { super(bisInspPrdqhRgstrDao); this.bisInspPrdqhRgstrDao = bisInspPrdqhRgstrDao; } @Override public int insert(BisInspPrdqhRgstr bisInspPrdqhRgstr) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspPrdqhRgstr.setId(uuid); bisInspPrdqhRgstr.setIntm(new Date()); bisInspPrdqhRgstr.setUptm(new Date()); bisInspPrdqhRgstr.setDataStat("0"); bisInspPrdqhRgstr.setState("0"); return this.bisInspPrdqhRgstrDao.insert(bisInspPrdqhRgstr); } @Override public int update(BisInspPrdqhRgstr bisInspPrdqhRgstr) { if (StringUtils.isNotBlank(bisInspPrdqhRgstr.getRgstrId()) && StringUtils.isBlank(bisInspPrdqhRgstr.getId())) { // rgstrId 不为 空 时,传给ID bisInspPrdqhRgstr.setId(bisInspPrdqhRgstr.getRgstrId()); } if (StringUtils.isBlank(bisInspPrdqhRgstr.getId())) { throw new CheckException("缺少登记表编码"); } if (!"2".equals(bisInspPrdqhRgstr.getState())) { bisInspPrdqhRgstr.setState("1"); } bisInspPrdqhRgstr.setUptm(new Date()); int ret = this.bisInspPrdqhRgstrDao.update(bisInspPrdqhRgstr); updateBase(bisInspPrdqhRgstr); updatePblmState(bisInspPrdqhRgstr); return ret; } private void updatePblmState(BisInspPrdqhRgstr rgstr) { BisInspPrdqhRgstr r = get(rgstr.getId()); Optional.ofNullable(r).ifPresent(rr -> bisInspPblmService.updateStateByObjId(rr.getObjId(), rgstr.getState())); } private void updateBase(BisInspPrdqhRgstr rgstr) { AttPrdCstrProjBase base = attPrdBaseService.getObjId(rgstr.getObjId()); Optional.ofNullable(base).ifPresent(b -> { String id = b.getId(); BeanUtils.copyProperties(rgstr, b); b.setCode(rgstr.getPrjCode()); b.setType(rgstr.getPrjType()); b.setId(id); b.setIntm(null); attPrdBaseService.update(b); }); } @Override public BisInspPrdqhRgstr get(String key) { BisInspPrdqhRgstr rgstr = super.get(key); Optional.ofNullable(rgstr).map(BisInspPrdqhRgstr::getAdCode).ifPresent(adcode -> { AttAdBase base = attAdBaseService.get(adcode); rgstr.setAdFullName(base.getAdFullName()); }); return rgstr; } @Override public int delete(String id) { return this.bisInspPrdqhRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspPrdqhRgstr b = new BisInspPrdqhRgstr(); AttPrdCstrProjBase base = attPrdBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setPrjCode(base.getCode()); b.setPrjType(base.getType()); b.setObjId(bisInspAllObj.getObjId()); b.setPersId(persId); /* 添加 登记表 */ insert(b); } @Override public String getType() { return BisInspEnum.PRDQH.getValue(); } @Override public void cleanObjData(String objId) { BisInspPrdqhRgstrParam rgstrParam = new BisInspPrdqhRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspPrdqhRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除登记表 this.bisInspPrdqhRgstrDao.delete(id); } } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspPrdqhRgstrDao.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.bisInspPrdqhRgstrDao.findPageList(typeParam); return new PageInfo<>(list); } }