package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.BisInspRslkbkPblmDao; import cn.com.goldenwater.dcproj.model.BisInspRslkbkPblm; import cn.com.goldenwater.dcproj.model.BisInspRslkbkRgstr; import cn.com.goldenwater.dcproj.model.GwComFile; import cn.com.goldenwater.dcproj.param.BisInspRslkbkPblmParam; import cn.com.goldenwater.dcproj.param.BisInspRslkbkRgstrParam; import cn.com.goldenwater.dcproj.param.GwComFileParam; import cn.com.goldenwater.dcproj.service.BisInspRslkbkPblmService; import cn.com.goldenwater.dcproj.service.BisInspRslkbkRgstrService; import cn.com.goldenwater.dcproj.service.GwComFileService; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * @author lhc * @date 2021-4-26 */ @Service @Transactional public class BisInspRslkbkPblmServiceImpl extends AbstractCrudService implements BisInspRslkbkPblmService { @Autowired private BisInspRslkbkPblmDao bisInspRslkbkPblmDao; @Autowired private BisInspRslkbkRgstrService bisInspRslkbkRgstrService; @Autowired private GwComFileService gwComFileService; public BisInspRslkbkPblmServiceImpl(BisInspRslkbkPblmDao bisInspRslkbkPblmDao) { super(bisInspRslkbkPblmDao); this.bisInspRslkbkPblmDao = bisInspRslkbkPblmDao; } @Override public int insert(BisInspRslkbkPblm bisInspRslkbkPblm) { bisInspRslkbkPblm.setId(UuidUtil.uuid()); bisInspRslkbkPblm.setIntm(new Date()); bisInspRslkbkPblm.setUptm(new Date()); bisInspRslkbkPblm.setDataStat("0"); List rslkbkRgstrList = bisInspRslkbkRgstrService.findList(Builder .of(BisInspRslkbkRgstrParam::new) .with(BisInspRslkbkRgstrParam::setId, bisInspRslkbkPblm.getRgstrId()) .with(BisInspRslkbkRgstrParam::setRsCode, bisInspRslkbkPblm.getRsCode()) .build()); if (rslkbkRgstrList != null && rslkbkRgstrList.size() > 0) { bisInspRslkbkPblm.setRsCode(rslkbkRgstrList.get(0).getRsCode()); bisInspRslkbkPblm.setRsName(rslkbkRgstrList.get(0).getRsName()); bisInspRslkbkPblm.setAdCode(rslkbkRgstrList.get(0).getAdCode()); bisInspRslkbkPblm.setDamRegCode(rslkbkRgstrList.get(0).getDamRegCode()); bisInspRslkbkPblm.setEngScal(rslkbkRgstrList.get(0).getEngScal()); rslkbkRgstrList.forEach(this::updateRgtsr); } int ret = this.bisInspRslkbkPblmDao.insert(bisInspRslkbkPblm); updateFiles(bisInspRslkbkPblm); BisInspRslkbkRgstr rgstr = bisInspRslkbkRgstrService.get(bisInspRslkbkPblm.getRgstrId()); updateRgtsr(rgstr); return ret; } private void updateFiles(BisInspRslkbkPblm bisInspRslkbkPblm) { GwComFileParam param = new GwComFileParam(); param.setBizId(bisInspRslkbkPblm.getId()); param.setBizType("MEND_PROV"); List prov = gwComFileService.findList(param); if (bisInspRslkbkPblm.getGwComFiles() != null && bisInspRslkbkPblm.getGwComFiles().size() > 0) { if (prov != null) bisInspRslkbkPblm.getGwComFiles().addAll(prov); gwComFileService.updateBiz(bisInspRslkbkPblm.getGwComFiles(), bisInspRslkbkPblm.getId()); } } private void updateRgtsr(BisInspRslkbkRgstr rslkbkRgstr) { if (!"2".equals(rslkbkRgstr.getState()) || !"1".equals(rslkbkRgstr.getState())) { rslkbkRgstr.setState("1"); bisInspRslkbkRgstrService.update(rslkbkRgstr); } } @Override public BisInspRslkbkPblm get(String key) { BisInspRslkbkPblm pblm = super.get(key); Optional.ofNullable(pblm).ifPresent(p -> { List list = gwComFileService.findList(Builder.of(GwComFileParam::new).with(GwComFileParam::setBizId, p.getId()).build()); p.setGwComFiles(list); }); return pblm; } @Override public int update(BisInspRslkbkPblm bisInspRslkbkPblm) { bisInspRslkbkPblm.setUptm(new Date()); int ret = this.bisInspRslkbkPblmDao.update(bisInspRslkbkPblm); List rslkbkRgstrList = bisInspRslkbkRgstrService.findList(Builder .of(BisInspRslkbkRgstrParam::new) .with(BisInspRslkbkRgstrParam::setId, bisInspRslkbkPblm.getRgstrId()) .with(BisInspRslkbkRgstrParam::setRsCode, bisInspRslkbkPblm.getRsCode()) .build()); if (rslkbkRgstrList != null && rslkbkRgstrList.size() > 0) { rslkbkRgstrList.forEach(this::updateRgtsr); } updateFiles(bisInspRslkbkPblm); return ret; } @Override public int delete(String id) { return this.bisInspRslkbkPblmDao.delete(id); } @Override public PageInfo findPageInfo(BisInspRslkbkPblmParam param) { PageHelper.startPage(param); List list = this.bisInspRslkbkPblmDao.findList(param); if (list != null && list.size() > 0) { for (BisInspRslkbkPblm pblm : list) { List gwComFileList = gwComFileService.findList(Builder.of(GwComFileParam::new).with(GwComFileParam::setBizId, pblm.getId()).build()); if (gwComFileList != null && gwComFileList.size() > 0) { gwComFileList = gwComFileList.stream().filter(file -> "MEND_EXTRA".equals(file.getBizType())).collect(Collectors.toList()); } pblm.setGwComFiles(gwComFileList); } } PageInfo pageInfo = new PageInfo(list); return pageInfo; } }