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.AttAdXBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao; import cn.com.goldenwater.dcproj.dao.BisInspVill2021RgstrDao; import cn.com.goldenwater.dcproj.dto.AttCountryDto; import cn.com.goldenwater.dcproj.dto.BisInspVill2021RgstrDto; import cn.com.goldenwater.dcproj.model.AttAdXBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspVill2021Rgstr; import cn.com.goldenwater.dcproj.model.BisInspVill2021Usr; import cn.com.goldenwater.dcproj.param.BisInspAllRlationParam; import cn.com.goldenwater.dcproj.param.BisInspVill2021CwsParam; import cn.com.goldenwater.dcproj.param.BisInspVill2021MopoParam; import cn.com.goldenwater.dcproj.param.BisInspVill2021RgstrParam; import cn.com.goldenwater.dcproj.param.BisInspVill2021UsrParam; import cn.com.goldenwater.dcproj.param.BisInspVill2021VillParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.service.BisInspVill2021CwsService; import cn.com.goldenwater.dcproj.service.BisInspVill2021MopoService; import cn.com.goldenwater.dcproj.service.BisInspVill2021RgstrService; import cn.com.goldenwater.dcproj.service.BisInspVill2021UsrService; import cn.com.goldenwater.dcproj.service.BisInspVill2021VillService; 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 cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 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.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; /** * @author lhc * @date 2021-6-16 */ @Service @Transactional public class BisInspVill2021RgstrServiceImpl extends AbstractCrudService implements BisInspVill2021RgstrService, BisInspObjStrategy { @Autowired private BisInspVill2021RgstrDao bisInspVill2021RgstrDao; @Autowired private BisInspAllRlationDao bisInspAllRlationDao; @Autowired private AttAdXBaseDao attAdXBaseDao; @Autowired private BisInspVill2021VillService bisInspVill2021VillService; @Autowired private BisInspVill2021CwsService bisInspVill2021CwsService; @Autowired private BisInspVill2021MopoService bisInspVill2021MopoService; @Autowired private BisInspVill2021UsrService bisInspVill2021UsrService; public BisInspVill2021RgstrServiceImpl(BisInspVill2021RgstrDao bisInspVill2021RgstrDao) { super(bisInspVill2021RgstrDao); this.bisInspVill2021RgstrDao = bisInspVill2021RgstrDao; } @Override public int insert(BisInspVill2021Rgstr bisInspVill2021Rgstr) { String uuid = UuidUtil.uuid(); bisInspVill2021Rgstr.setId(uuid); bisInspVill2021Rgstr.setIntm(new Date()); bisInspVill2021Rgstr.setUptm(new Date()); bisInspVill2021Rgstr.setDataStat("0"); bisInspVill2021Rgstr.setState("0"); bisInspVill2021Rgstr.setPblmState("0"); bisInspVill2021Rgstr.setMopoState("0"); return this.bisInspVill2021RgstrDao.insert(bisInspVill2021Rgstr); } @Override public BisInspVill2021Rgstr get(String key) { BisInspVill2021Rgstr rgstr = super.get(key); Optional.ofNullable(rgstr).ifPresent(r -> { AttAdXBase attAdBase = attAdXBaseDao.get(r.getAdCode()); Optional.ofNullable(attAdBase).ifPresent(base -> r.setAdFullName(base.getAdFullName())); }); return rgstr; } @Override public int update(BisInspVill2021Rgstr bisInspVill2021Rgstr) { if (StringUtils.isBlank(bisInspVill2021Rgstr.getId()) || StringUtils.isNotBlank(bisInspVill2021Rgstr.getRgstrId())) { // rgstrId 不为 空 时,传给ID bisInspVill2021Rgstr.setId(bisInspVill2021Rgstr.getRgstrId()); } if (StringUtils.isBlank(bisInspVill2021Rgstr.getId())) { throw new CheckException("缺少登记表编码!"); } bisInspVill2021Rgstr.setUptm(new Date()); return this.bisInspVill2021RgstrDao.update(bisInspVill2021Rgstr); } @Override public int delete(String id) { return this.bisInspVill2021RgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspVill2021Rgstr b = new BisInspVill2021Rgstr(); AttAdXBase base = attAdXBaseDao.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.VILL2021.getValue(); } @Override public void cleanObjData(String objId) { BisInspVill2021RgstrParam rgstrParam = new BisInspVill2021RgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspVill2021RgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 bisInspVill2021VillService.deleteBy(Builder.of(BisInspVill2021VillParam::new) .with(BisInspVill2021VillParam::setRgstrId, id).build()); bisInspVill2021MopoService.deleteBy(Builder.of(BisInspVill2021MopoParam::new) .with(BisInspVill2021MopoParam::setRgstrId, id).build()); bisInspVill2021CwsService.deleteBy(Builder.of(BisInspVill2021CwsParam::new) .with(BisInspVill2021CwsParam::setRgstrId, id).build()); // 删除登记表 this.bisInspVill2021RgstrDao.delete(id); } } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspVill2021RgstrDao.findPageList(typeParam); } @Override public Map findNode(String code, String regstrId) { Map map = new HashMap<>(2); code = AdLevelUtil.getAddvcd(code); // 获取农牧民情况 BisInspVill2021UsrParam poorParam = Builder.of(BisInspVill2021UsrParam::new) .with(BisInspVill2021UsrParam::setRgstrId, regstrId) .with(BisInspVill2021UsrParam::setVillId, code) .build(); List poorList = bisInspVill2021UsrService.findList(poorParam); map.put("poor", poorList); return map; } @Override public List findCheckTree(String code, String regstrId) { // 获取镇信息 List zhenDtoList = attAdXBaseDao.findXZCZhenList(code); // 获取村信息 List countryDtoList = attAdXBaseDao.findXZCCunList(code, regstrId, BisInspEnum.VILL2021.getValue()); for (AttCountryDto attCountryDto : zhenDtoList) { String adCode = attCountryDto.getAdCode().replace("000", ""); List childList = new ArrayList<>(); for (AttCountryDto countryDto : countryDtoList) { if (countryDto.getAdCode().startsWith(adCode)) { childList.add(countryDto); } } attCountryDto.setAttCountryDtoList(childList); } return zhenDtoList; } @Override public void updateState(Map map) { BisInspVill2021Rgstr rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState()) && StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); switch (MapUtils.getString(map, "param")) { case "mopo": rgstr.setMopoState(MapUtils.getString(map, "state")); break; case "pblm": rgstr.setPblmState(MapUtils.getString(map, "state")); break; default: } 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))); } String[] groupIds = bisInspAllRlationDao.getIdByPersid(Builder .of(BisInspAllRlationParam::new) .with(BisInspAllRlationParam::setPersid, typeParam.getPresId()) .with(BisInspAllRlationParam::setpType, typeParam.getpType()) .build()); typeParam.setGroupIds(groupIds); // 分页插件 PageHelper.startPage(typeParam); List list = this.bisInspVill2021RgstrDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstr -> { AttAdXBase attAdBase = attAdXBaseDao.get(rgstr.getAdCode()); Optional.ofNullable(attAdBase).ifPresent(base -> { rgstr.setAdFullName(base.getAdFullName()); }); }); } return new PageInfo<>(list); } }