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.CommonLabel; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao; import cn.com.goldenwater.dcproj.dao.BisInspMfdpqhRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspMfdpqhRgstrDto; import cn.com.goldenwater.dcproj.model.AttAdXBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspMfdpqhRgstr; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.*; 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.alibaba.fastjson.JSON; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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; /** * @author lhc * @date 2021-6-15 */ @Service @Transactional public class BisInspMfdpqhRgstrServiceImpl extends AbstractCrudService implements BisInspMfdpqhRgstrService, BisInspObjStrategy { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspMfdpqhRgstrDao bisInspMfdpqhRgstrDao; @Autowired private AttAdXBaseService attAdXBaseService; @Autowired private BisInspAllRlationDao bisInspAllRlationDao; @Autowired private BisInspMfdpqhCityService bisInspMfdpqhCityService; @Autowired private BisInspMfdpqhTownService bisInspMfdpqhTownService; public BisInspMfdpqhRgstrServiceImpl(BisInspMfdpqhRgstrDao bisInspMfdpqhRgstrDao) { super(bisInspMfdpqhRgstrDao); this.bisInspMfdpqhRgstrDao = bisInspMfdpqhRgstrDao; } @Override public int insert(BisInspMfdpqhRgstr bisInspMfdpqhRgstr) { String uuid = UuidUtil.uuid(); bisInspMfdpqhRgstr.setId(uuid); bisInspMfdpqhRgstr.setIntm(new Date()); bisInspMfdpqhRgstr.setUptm(new Date()); bisInspMfdpqhRgstr.setDataStat("0"); // 督查状态(0:未督查;1:督查中;2:已督查) bisInspMfdpqhRgstr.setState(CommonLabel.INIT_DATA); // 子表状态(0:未督查;1:督查中;2:已督查) bisInspMfdpqhRgstr.setCityState(CommonLabel.INIT_DATA); bisInspMfdpqhRgstr.setTownState(CommonLabel.INIT_DATA); return this.bisInspMfdpqhRgstrDao.insert(bisInspMfdpqhRgstr); } @Override public int update(BisInspMfdpqhRgstr bisInspMfdpqhRgstr) { bisInspMfdpqhRgstr.setUptm(new Date()); logger.info("==山洪更新:{}", JSON.toJSONString(bisInspMfdpqhRgstr)); return this.bisInspMfdpqhRgstrDao.update(bisInspMfdpqhRgstr); } @Override public int delete(String id) { return this.bisInspMfdpqhRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspMfdpqhRgstr b = new BisInspMfdpqhRgstr(); AttAdXBase base = attAdXBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); // 统一字段 rgstrId, objId b.setId(UuidUtil.uuid()); b.setObjId(bisInspAllObj.getObjId()); // 创建人 b.setPersId(persId); b.setLoc(base.getAdFullName()); /* 添加 登记表 */ insert(b); } @Override public String getType() { return BisInspEnum.MFDPQH.getValue(); } @Override public void cleanObjData(String objId) { BisInspMfdpqhRgstrParam rgstrParam = new BisInspMfdpqhRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspMfdpqhRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 bisInspMfdpqhCityService.deleteBy(Builder.of(BisInspMfdpqhCityParam::new) .with(BisInspMfdpqhCityParam::setRgstrId, id) .build()); bisInspMfdpqhTownService.deleteBy(Builder.of(BisInspMfdpqhTownParam::new) .with(BisInspMfdpqhTownParam::setRgstrId, id) .build()); // 删除登记表 this.bisInspMfdpqhRgstrDao.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); 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.bisInspMfdpqhRgstrDao.findPageList(typeParam); return (PageInfo) new PageInfo(list); } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspMfdpqhRgstrDao.findPageList(typeParam); } @Override public void updateState(Map map) { BisInspMfdpqhRgstr 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); if ("city".equals(MapUtils.getString(map, "param"))) { rgstr.setCityState(MapUtils.getString(map, "state")); } if ("town".equals(MapUtils.getString(map, "param"))) { rgstr.setTownState(MapUtils.getString(map, "state")); } update(rgstr); } } }