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.BisInspWiujsRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspWiujsRgstrDto; import cn.com.goldenwater.dcproj.model.AttWiuBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspWiujsRgstr; 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.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.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; import java.util.Optional; /** * @author * @date 2022-2-21 */ @Service @Transactional public class BisInspWiujsRgstrServiceImpl extends AbstractCrudService implements BisInspWiujsRgstrService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private BisInspWiujsRgstrDao bisInspWiujsRgstrDao; @Autowired private BisInspWiujsWtrcrService bisInspWiujsWtrcrService; @Autowired private BisInspWiujsWtruService bisInspWiujsWtruService; @Autowired private BisInspWiujsUnitService bisInspWiujsUnitService; @Autowired private AttWiuBaseService attWiuBaseService; public BisInspWiujsRgstrServiceImpl(BisInspWiujsRgstrDao bisInspWiujsRgstrDao) { super(bisInspWiujsRgstrDao); this.bisInspWiujsRgstrDao = bisInspWiujsRgstrDao; } @Override public int insert(BisInspWiujsRgstr bisInspWiujsRgstr) { String id = UuidUtil.uuid(); bisInspWiujsRgstr.setId(id); bisInspWiujsRgstr.setIntm(new Date()); bisInspWiujsRgstr.setUptm(new Date()); bisInspWiujsRgstr.setDataStat("0"); bisInspWiujsRgstr.setIsUnit("0"); bisInspWiujsRgstr.setUnitStat("0"); bisInspWiujsRgstr.setWtrcrStat("0"); bisInspWiujsRgstr.setWtruStat("0"); bisInspWiujsRgstr.setState("0"); bisInspWiujsWtrcrService.insert(Builder.of(BisInspWiujsWtrcrParam::new).with(BisInspWiujsWtrcrParam::setRgstrId, id).build()); bisInspWiujsWtruService.insert(Builder.of(BisInspWiujsWtruParam::new).with(BisInspWiujsWtruParam::setRgstrId, id).build()); bisInspWiujsUnitService.insert(Builder.of(BisInspWiujsUnitParam::new).with(BisInspWiujsUnitParam::setRgstrId, id).build()); return this.bisInspWiujsRgstrDao.insert(bisInspWiujsRgstr); } @Override public int update(BisInspWiujsRgstr bisInspWiujsRgstr) { bisInspWiujsRgstr.setUptm(new Date()); updateBase(bisInspWiujsRgstr); return this.bisInspWiujsRgstrDao.update(bisInspWiujsRgstr); } /** * 更新基础表 */ void updateBase(BisInspWiujsRgstr rgstr) { AttWiuBase base = attWiuBaseService.getObjId(rgstr.getObjId()); Optional.ofNullable(base).ifPresent(b -> { String id = b.getId(); BeanUtils.copyProperties(rgstr, b); b.setId(id); b.setInTm(null); attWiuBaseService.update(b); }); } @Override public int delete(String id) { return this.bisInspWiujsRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspWiujsRgstr b = new BisInspWiujsRgstr(); AttWiuBase base = attWiuBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setObjId(bisInspAllObj.getObjId()); b.setWiuId(base.getId()); // b.setPersId(bisInspAllObj.getPersId()); // 添加 登记表 insert(b); } @Override public String getType() { return BisInspEnum.WIUJS.getValue(); } @Override public void cleanObjData(String objId) { BisInspWiujsRgstrParam rgstrParam = new BisInspWiujsRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspWiujsRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 bisInspWiujsWtrcrService.deleteBy(Builder.of(BisInspWiujsWtrcrParam::new).with(BisInspWiujsWtrcrParam::setRgstrId, id).build()); bisInspWiujsWtruService.deleteBy(Builder.of(BisInspWiujsWtruParam::new).with(BisInspWiujsWtruParam::setRgstrId, id).build()); bisInspWiujsUnitService.deleteBy(Builder.of(BisInspWiujsUnitParam::new).with(BisInspWiujsUnitParam::setRgstrId, id).build()); this.bisInspWiujsRgstrDao.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.bisInspWiujsRgstrDao.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.bisInspWiujsRgstrDao.findPageList(typeParam); } @Override public void updateState(Map map) { BisInspWiujsRgstr rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState())) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); switch (MapUtils.getString(map, "param")) { case "unit": 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")); } break; case "wtru": 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")); } break; case "wtrcr": if (StringUtils.isBlank(rgstr.getWtrcrStat()) && !"2".equals(MapUtils.getString(map, "state"))) { map.put("state", "1"); } if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setWtrcrStat(MapUtils.getString(map, "state")); } break; } update(rgstr); } } }