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.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.dao.BisInspVillqhPoorDao; import cn.com.goldenwater.dcproj.model.BisInspVillqhPoor; import cn.com.goldenwater.dcproj.model.BisInspVillqhRgstr; import cn.com.goldenwater.dcproj.param.BisInspPblmParam; import cn.com.goldenwater.dcproj.param.BisInspVillqhPoorParam; import cn.com.goldenwater.dcproj.service.BisInspVillqhPoorService; import cn.com.goldenwater.dcproj.service.BisInspVillqhRgstrService; import cn.com.goldenwater.dcproj.utils.Builder; import cn.com.goldenwater.dcproj.utils.Constant; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.HashMap; import java.util.Map; import java.util.Optional; /** * @author lhc * @date 2021-2-1 */ @Service @Transactional public class BisInspVillqhPoorServiceImpl extends AbstractCrudService implements BisInspVillqhPoorService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspVillqhPoorDao bisInspVillqhPoorDao; @Autowired private BisInspVillqhRgstrService bisInspVillqhRgstrService; @Autowired private BisInspPblmDao bisInspPblmDao; public BisInspVillqhPoorServiceImpl(BisInspVillqhPoorDao bisInspVillqhPoorDao) { super(bisInspVillqhPoorDao); this.bisInspVillqhPoorDao = bisInspVillqhPoorDao; } @Override public int insert(BisInspVillqhPoor bisInspVillqhPoor) { bisInspVillqhPoor.setId(UuidUtil.uuid()); Date now = new Date(); bisInspVillqhPoor.setVisitDate(now); bisInspVillqhPoor.setDataStat(Constant.STRING_ZERO); bisInspVillqhPoor.setIntm(now); bisInspVillqhPoor.setUptm(now); int ret = this.bisInspVillqhPoorDao.insert(bisInspVillqhPoor); updateRgstrState(bisInspVillqhPoor.getRgstrId()); return ret; } @Override public int update(BisInspVillqhPoor bisInspVillqhPoor) { // 获取子表 BisInspVillqhPoor child = get(bisInspVillqhPoor.getId()); Optional.ofNullable(child).orElseThrow(() -> new CheckException("未找到此登记表下的子表")); // 更新子表 bisInspVillqhPoor.setUptm(new Date()); int ret = bisInspVillqhPoorDao.update(bisInspVillqhPoor); // 更新登记表状态 Map map = new HashMap<>(3); map.put("rgstrId", child.getRegstrId()); map.put("param", "fee"); map.put("state", bisInspVillqhPoor.getState()); bisInspVillqhRgstrService.updateState(map); return ret; } @Override public int delete(String id) { BisInspVillqhPoor poor = get(id); BisInspVillqhRgstr rgstr = bisInspVillqhRgstrService.get(poor.getRegstrId()); BisInspPblmParam pblm = Builder.of(BisInspPblmParam::new) .with(BisInspPblmParam::setCwsCode, id) .with(BisInspPblmParam::setObjId, rgstr.getObjId()) .with(BisInspPblmParam::setObjType, BisInspEnum.VILLQH.getValue()) .build(); bisInspPblmDao.deleteBy(pblm); return this.bisInspVillqhPoorDao.delete(id); } void updateRgstrState(String rgstrId) { BisInspVillqhRgstr rgstr = bisInspVillqhRgstrService.get(rgstrId); Optional.ofNullable(rgstr).ifPresent(r -> { if (!Constant.STRING_TWO.equals(r.getState()) && !Constant.STRING_ONE.equals(r.getState())) { r.setUptm(new Date()); r.setState(Constant.STRING_ONE); // 更新登记表状态 bisInspVillqhRgstrService.update(r); } }); } }