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.BisInspJspwiuDao; import cn.com.goldenwater.dcproj.dto.BisInspJspwiuDto; import cn.com.goldenwater.dcproj.model.AttJspwiuBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspJspwiu; import cn.com.goldenwater.dcproj.model.BisInspJspwiuUnit; import cn.com.goldenwater.dcproj.model.BisInspJspwiuWtru; import cn.com.goldenwater.dcproj.param.BisInspJspwiuParam; import cn.com.goldenwater.dcproj.param.BisInspJspwiuUnitParam; import cn.com.goldenwater.dcproj.param.BisInspJspwiuWtruParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.AttJspwiuBaseService; import cn.com.goldenwater.dcproj.service.BisInspJspwiuService; import cn.com.goldenwater.dcproj.service.BisInspJspwiuUnitService; import cn.com.goldenwater.dcproj.service.BisInspJspwiuWtruService; 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 2023年3月20日 */ @Service @Transactional public class BisInspJspwiuServiceImpl extends AbstractCrudService implements BisInspJspwiuService { @Autowired private BisInspJspwiuDao bisInspJspwiuDao; @Autowired private AttJspwiuBaseService attJspwiuBaseService; @Autowired private BisInspJspwiuWtruService bisInspJspwiuWtruService; @Autowired private BisInspJspwiuUnitService bisInspJspwiuUnitService; public BisInspJspwiuServiceImpl(BisInspJspwiuDao bisInspJspwiuDao) { super(bisInspJspwiuDao); this.bisInspJspwiuDao = bisInspJspwiuDao; } @Override public int insert(BisInspJspwiu bisInspJspwiu) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspJspwiu.setId(uuid); bisInspJspwiu.setIntm(new Date()); bisInspJspwiu.setUptm(new Date()); bisInspJspwiu.setDataStat("0"); // 督查状态 bisInspJspwiu.setState("0"); // 填报项 计划用水户节约用水情况 状态 bisInspJspwiu.setWtruStat("0"); // 填报项 取水口及监管情况 状态 bisInspJspwiu.setUnitStat("0"); // 子表 计划用水户 this.bisInspJspwiuWtruService.insert(Builder.of(BisInspJspwiuWtru::new) .with(BisInspJspwiuWtru::setRgstrId, uuid) .build()); // 子表 取水口 this.bisInspJspwiuUnitService.insert(Builder.of(BisInspJspwiuUnit::new) .with(BisInspJspwiuUnit::setRgstrId, uuid) .build()); return this.bisInspJspwiuDao.insert(bisInspJspwiu); } @Override public int update(BisInspJspwiu bisInspJspwiu) { if(StringUtils.isNotBlank(bisInspJspwiu.getObjId())){ updateBase(bisInspJspwiu); } bisInspJspwiu.setUptm(new Date()); return this.bisInspJspwiuDao.update(bisInspJspwiu); } /** * 更新基础表 */ void updateBase(BisInspJspwiu bisInspJspwiu) { AttJspwiuBase base = attJspwiuBaseService.getObjId(bisInspJspwiu.getObjId()); Optional.ofNullable(base).ifPresent(b -> { String id = b.getId(); BeanUtils.copyProperties(bisInspJspwiu, b); b.setId(id); b.setIntm(null); attJspwiuBaseService.update(b); }); } @Override public int delete(String id) { return this.bisInspJspwiuDao.delete(id); } @Override public void updateState(Map map) { BisInspJspwiu rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState())) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); if ("wtru".equals(MapUtils.getString(map, "param"))) { if (StringUtils.isBlank(rgstr.getWtruStat()) && !"2".equals(MapUtils.getString(map, "state"))) { map.put("state", "1"); } if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setWtruStat(MapUtils.getString(map, "state")); } } if ("unit".equals(MapUtils.getString(map, "param"))) { if (StringUtils.isBlank(rgstr.getUnitStat()) && !"2".equals(MapUtils.getString(map, "state"))) { map.put("state", "1"); } if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setUnitStat(MapUtils.getString(map, "state")); } } update(rgstr); } } // 实现 BisInspObjStrategy @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspJspwiu bisInspJspwiu = new BisInspJspwiu(); AttJspwiuBase attJspwiuBase = attJspwiuBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(attJspwiuBase, bisInspJspwiu); bisInspJspwiu.setObjId(bisInspAllObj.getObjId()); // 添加 登记表 insert(bisInspJspwiu); } @Override public String getType() { return BisInspEnum.JSPWIU.getValue(); } @Override public void cleanObjData(String objId) { BisInspJspwiuParam jspwiuParam = new BisInspJspwiuParam(); jspwiuParam.setObjId(objId); List list = this.bisInspJspwiuDao.findList(jspwiuParam); if(null != list && list.size()>0){ String id = list.get(0).getId(); // 删除子表 -- 计划用水户节约用水情况 bisInspJspwiuWtruService.deleteBy(Builder.of(BisInspJspwiuWtruParam::new).with(BisInspJspwiuWtruParam::setRgstrId, id).build()); // 删除子表 -- 取水口及监管情况 bisInspJspwiuUnitService.deleteBy(Builder.of(BisInspJspwiuUnitParam::new).with(BisInspJspwiuUnitParam::setRgstrId, id).build()); // 删除主表 this.bisInspJspwiuDao.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.bisInspJspwiuDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstrDto -> { if (StringUtils.isNotBlank(rgstrDto.getAdFullName())) { String[] adFullNames = rgstrDto.getAdFullName().split("-"); rgstrDto.setProName(adFullNames[0]); if (adFullNames.length > 1) { rgstrDto.setCityName(adFullNames[1]); } if (adFullNames.length > 2) { rgstrDto.setCountyName(adFullNames[2]); } } }); } return new PageInfo<>(list); } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspJspwiuDao.findPageList(typeParam); } }