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.BisInspChmclsRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspChmclsRgstrDto; import cn.com.goldenwater.dcproj.model.AttAdXBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspChmclsRgstr; import cn.com.goldenwater.dcproj.param.BisInspChmclsDepwkParam; import cn.com.goldenwater.dcproj.param.BisInspChmclsRgstrParam; import cn.com.goldenwater.dcproj.param.BisInspChmclsUseunitwkParam; import cn.com.goldenwater.dcproj.param.TypeParam; 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.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 2021-5-13 */ @Service @Transactional public class BisInspChmclsRgstrServiceImpl extends AbstractCrudService implements BisInspChmclsRgstrService, BisInspObjStrategy { @Autowired private BisInspChmclsRgstrDao bisInspChmclsRgstrDao; @Autowired private BisInspChmclsDepwkService bisInspChmclsDepwkService; @Autowired private BisInspChmclsUseunitwkService bisInspChmclsUseunitwkService; @Autowired private AttAdXBaseService attAdXBaseService; public BisInspChmclsRgstrServiceImpl(BisInspChmclsRgstrDao bisInspChmclsRgstrDao) { super(bisInspChmclsRgstrDao); this.bisInspChmclsRgstrDao = bisInspChmclsRgstrDao; } @Override public int insert(BisInspChmclsRgstr bisInspChmclsRgstr) { String uuid = UuidUtil.uuid(); bisInspChmclsRgstr.setId(uuid); bisInspChmclsRgstr.setIntm(new Date()); bisInspChmclsRgstr.setUptm(new Date()); bisInspChmclsRgstr.setDataStat("0"); bisInspChmclsRgstr.setDepwkState("0"); bisInspChmclsRgstr.setState("0"); int ret = this.bisInspChmclsRgstrDao.insert(bisInspChmclsRgstr); /* 添加 子表 */ this.bisInspChmclsDepwkService.insert(Builder.of(BisInspChmclsDepwkParam::new).with(BisInspChmclsDepwkParam::setRgstrId, uuid).build()); return ret; } @Override public int update(BisInspChmclsRgstr bisInspChmclsRgstr) { bisInspChmclsRgstr.setUptm(new Date()); return this.bisInspChmclsRgstrDao.update(bisInspChmclsRgstr); } @Override public int delete(String id) { return this.bisInspChmclsRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspChmclsRgstr b = new BisInspChmclsRgstr(); AttAdXBase base = attAdXBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setObjId(bisInspAllObj.getObjId()); // b.setPersId(bisInspAllObj.getPersId()); // 添加 登记表 insert(b); } @Override public BisInspChmclsRgstr get(String key) { BisInspChmclsRgstr rgstr = super.get(key); Optional.ofNullable(rgstr).ifPresent(r -> r.setUseUnitNum(bisInspChmclsUseunitwkService .selectCount(Builder.of(BisInspChmclsUseunitwkParam::new) .with(BisInspChmclsUseunitwkParam::setRgstrId, key).build()))); Optional.ofNullable(rgstr).map(BisInspChmclsRgstr::getAdCode).ifPresent(adcode -> { AttAdXBase base = attAdXBaseService.get(adcode); rgstr.setAdFullName(base.getAdFullName()); }); return rgstr; } @Override public String getType() { return BisInspEnum.CHMCLS.getValue(); } @Override public void cleanObjData(String objId) { BisInspChmclsRgstrParam rgstrParam = new BisInspChmclsRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspChmclsRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 this.bisInspChmclsDepwkService.deleteBy(Builder.of(BisInspChmclsDepwkParam::new).with(BisInspChmclsDepwkParam::setRgstrId, id).build()); this.bisInspChmclsUseunitwkService.deleteBy(Builder.of(BisInspChmclsUseunitwkParam::new).with(BisInspChmclsUseunitwkParam::setRgstrId, id).build()); // 删除登记表 this.bisInspChmclsRgstrDao.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.bisInspChmclsRgstrDao.findPageList(typeParam); if (list != null && list.size() > 0) { list.forEach(rgstrDto -> { rgstrDto.setUseUnitNum(bisInspChmclsUseunitwkService .selectCount(Builder .of(BisInspChmclsUseunitwkParam::new) .with(BisInspChmclsUseunitwkParam::setRgstrId, rgstrDto.getRgstrId()) .build())); 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.bisInspChmclsRgstrDao.findPageList(typeParam); } @Override public void updateState(Map map) { BisInspChmclsRgstr rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState())) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); if ("depwk".equals(MapUtils.getString(map, "param"))) { if (StringUtils.isBlank(rgstr.getDepwkState()) && !"2".equals(MapUtils.getString(map, "state"))) { map.put("state", "1"); } if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setDepwkState(MapUtils.getString(map, "state")); } } update(rgstr); } } }