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.AttAdBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao; import cn.com.goldenwater.dcproj.dao.BisInspXjvillDao; import cn.com.goldenwater.dcproj.dto.AttCountryDto; import cn.com.goldenwater.dcproj.dto.BisInspXjvillDto; import cn.com.goldenwater.dcproj.dto.BisNewDcuserRelVillDto; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.util.CheckUtil; 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.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.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.*; /** * @author lhc * @date 2021-9-9 */ @Service @Transactional public class BisInspXjvillServiceImpl extends AbstractCrudService implements BisInspXjvillService, BisInspObjStrategy { @Autowired private BisInspXjvillDao bisInspXjvillDao; @Autowired private AttAdBaseDao attAdBaseDao; @Autowired private BisInspXjvillRegmService bisInspXjvillRegmService; @Autowired private BisInspAllRlationDao bisInspAllRlationDao; @Autowired private BisInspXjvillRunService bisInspXjvillRunService; @Autowired private BisInspXjvillUsrService bisInspXjvillUsrService; @Autowired private BisInspXjvillDutyService bisInspXjvillDutyService; public BisInspXjvillServiceImpl(BisInspXjvillDao bisInspXjvillDao) { super(bisInspXjvillDao); this.bisInspXjvillDao = bisInspXjvillDao; } @Override public BisInspXjvill get(String key) { BisInspXjvill xjvill = super.get(key); Optional.ofNullable(xjvill).ifPresent(r -> { r.setRegmNum(bisInspXjvillRegmService.selectCount(Builder.of(BisInspXjvillRegm::new).with(BisInspXjvillRegm::setRgstrId, r.getId()).build())); r.setRunNum(bisInspXjvillRunService.selectCount(Builder.of(BisInspXjvillRun::new).with(BisInspXjvillRun::setRgstrId, r.getId()).build())); r.setUsrNum(bisInspXjvillUsrService.selectCount(Builder.of(BisInspXjvillUsr::new).with(BisInspXjvillUsr::setRgstrId, r.getId()).build())); }); return xjvill; } @Override public int insert(BisInspXjvill bisInspXjvill) { bisInspXjvill.setId(UuidUtil.uuid()); bisInspXjvill.setIntm(new Date()); bisInspXjvill.setUptm(new Date()); bisInspXjvill.setDataStat("0"); bisInspXjvill.setState("0"); return this.bisInspXjvillDao.insert(bisInspXjvill); } @Override public int update(BisInspXjvill bisInspXjvill) { if (StringUtils.isBlank(bisInspXjvill.getId()) && StringUtils.isNotBlank(bisInspXjvill.getRgstrId())) { bisInspXjvill.setId(bisInspXjvill.getRgstrId()); } CheckUtil.notNull(bisInspXjvill.getId(), "登记表ID为空"); bisInspXjvill.setUptm(new Date()); return this.bisInspXjvillDao.update(bisInspXjvill); } @Override public int delete(String id) { return this.bisInspXjvillDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspXjvill b = new BisInspXjvill(); AttAdBase base = attAdBaseDao.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setObjId(bisInspAllObj.getObjId()); b.setNm(base.getAdName()); // 创建人 b.setPersId(persId); /* 添加 登记表 */ insert(b); } @Override public String getType() { return BisInspEnum.XJVILL.getValue(); } @Override public void cleanObjData(String objId) { BisInspXjvillParam rgstrParam = new BisInspXjvillParam(); rgstrParam.setObjId(objId); List list = this.bisInspXjvillDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 bisInspXjvillRegmService.deleteBy(Builder.of(BisInspXjvillRegmParam::new).with(BisInspXjvillRegmParam::setRgstrId, id).build()); bisInspXjvillRunService.deleteBy(Builder.of(BisInspXjvillRunParam::new).with(BisInspXjvillRunParam::setRgstrId, id).build()); bisInspXjvillUsrService.deleteBy(Builder.of(BisInspXjvillUsrParam::new).with(BisInspXjvillUsrParam::setRgstrId, id).build()); bisInspXjvillDutyService.deleteBy(Builder.of(BisInspXjvillDutyParam::new).with(BisInspXjvillDutyParam::setRgstrId, id).build()); // 删除登记表 this.bisInspXjvillDao.delete(id); } } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspXjvillDao.findPageList(typeParam); } @Override public Map findNode(String code, String regstrId) { Map map = new HashMap<>(2); if ("null".equalsIgnoreCase(code)) { code = null; } // 获取工程暗访情况 BisInspXjvillRunParam feeParam = Builder.of(BisInspXjvillRunParam::new) .with(BisInspXjvillRunParam::setRgstrId, regstrId) .with(BisInspXjvillRunParam::setRegmId, code) .build(); List feeList = bisInspXjvillRunService.findList(feeParam); // 获取农牧民情况 BisInspXjvillUsrParam poorParam = Builder.of(BisInspXjvillUsrParam::new) .with(BisInspXjvillUsrParam::setRgstrId, regstrId) .with(BisInspXjvillUsrParam::setRegmId, code) .build(); List poorList = bisInspXjvillUsrService.findList(poorParam); map.put("poor", poorList); map.put("fee", feeList); return map; } @Override public List findCheckTree(String rgstrId) { BisInspXjvill xjvill = get(rgstrId); CheckUtil.notNull(xjvill, "登记表不为空"); return bisInspXjvillRegmService.findListNotIn(rgstrId, xjvill.getAdCode()); } @Override public List findTree(String rgstrId) { List ret = new ArrayList<>(); BisInspXjvill xjvill = get(rgstrId); CheckUtil.notNull(xjvill, "未查到登记表"); BisNewDcuserRelVillDto shi = new BisNewDcuserRelVillDto(); shi.setRgstrId(xjvill.getId()); shi.setObjId(xjvill.getObjId()); shi.setTownCode(xjvill.getAdCode()); shi.setTownName(xjvill.getAdName()); // 获取村信息 List bisInspXjvillRegmList = bisInspXjvillRegmService.findList(Builder.of(BisInspXjvillRegmParam::new).with(BisInspXjvillRegmParam::setRgstrId, xjvill.getId()).build()); if (CollectionUtils.isNotEmpty(bisInspXjvillRegmList)) { List children = new ArrayList<>(bisInspXjvillRegmList.size()); bisInspXjvillRegmList.forEach(bisInspXjvillRegm -> { BisZhejiangDcuserRelVill tuan = new BisZhejiangDcuserRelVill(); tuan.setId(bisInspXjvillRegm.getId()); tuan.setRgstrId(bisInspXjvillRegm.getRgstrId()); tuan.setRegstrId(bisInspXjvillRegm.getRgstrId()); tuan.setAdCode(bisInspXjvillRegm.getAdCode()); tuan.setAdName(bisInspXjvillRegm.getAdName()); tuan.setVillCode(bisInspXjvillRegm.getAdCode()); tuan.setVillageNm(bisInspXjvillRegm.getAdName()); children.add(tuan); }); shi.setDcuserRelVilles(children); } ret.add(shi); return ret; } @Override public void updateState(Map map) { BisInspXjvill rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState())) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); if ("duty".equals(MapUtils.getString(map, "param"))) { rgstr.setDutyState(MapUtils.getString(map, "state")); } update(rgstr); } } @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); String[] groupIds = bisInspAllRlationDao.getIdByPersid(Builder .of(BisInspAllRlationParam::new) .with(BisInspAllRlationParam::setPersid, typeParam.getPresId()) .with(BisInspAllRlationParam::setpType, typeParam.getpType()) .build()); typeParam.setGroupIds(groupIds); List list = this.bisInspXjvillDao.findPageList(typeParam); if (CollectionUtils.isNotEmpty(list)) { list.forEach(r -> { r.setRegmNum(bisInspXjvillRegmService.selectCount(Builder.of(BisInspXjvillRegm::new).with(BisInspXjvillRegm::setRgstrId, r.getId()).build())); r.setRunNum(bisInspXjvillRunService.selectCount(Builder.of(BisInspXjvillRun::new).with(BisInspXjvillRun::setRgstrId, r.getId()).build())); r.setUsrNum(bisInspXjvillUsrService.selectCount(Builder.of(BisInspXjvillUsr::new).with(BisInspXjvillUsr::setRgstrId, r.getId()).build())); }); } return new PageInfo<>(list); } }