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.BisInspUnwtRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspUnwtRgstrDto; import cn.com.goldenwater.dcproj.model.AttUnwtBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspUnwtRgstr; import cn.com.goldenwater.dcproj.param.BisInspUnwtRgstrParam; import cn.com.goldenwater.dcproj.param.BisInspUnwtSynParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.AttUnwtBaseService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.service.BisInspUnwtRgstrService; import cn.com.goldenwater.dcproj.service.BisInspUnwtSynService; 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; import static cn.com.goldenwater.dcproj.util.CheckUtil.check; /** * @author lhc * @date 2021-5-27 */ @Service @Transactional public class BisInspUnwtRgstrServiceImpl extends AbstractCrudService implements BisInspUnwtRgstrService, BisInspObjStrategy { @Autowired private BisInspUnwtRgstrDao bisInspUnwtRgstrDao; @Autowired private BisInspUnwtSynService bisInspUnwtSynService; @Autowired private AttUnwtBaseService attUnwtBaseService; public BisInspUnwtRgstrServiceImpl(BisInspUnwtRgstrDao bisInspUnwtRgstrDao) { super(bisInspUnwtRgstrDao); this.bisInspUnwtRgstrDao = bisInspUnwtRgstrDao; } @Override public int insert(BisInspUnwtRgstr bisInspUnwtRgstr) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspUnwtRgstr.setId(uuid); bisInspUnwtRgstr.setIntm(new Date()); bisInspUnwtRgstr.setUptm(new Date()); bisInspUnwtRgstr.setDataStat("0"); return this.bisInspUnwtRgstrDao.insert(bisInspUnwtRgstr); } @Override public int update(BisInspUnwtRgstr bisInspUnwtRgstr) { if (StringUtils.isBlank(bisInspUnwtRgstr.getId()) || StringUtils.isNotBlank(bisInspUnwtRgstr.getRgstrId())) { // rgstrId 不为 空 时,传给ID bisInspUnwtRgstr.setId(bisInspUnwtRgstr.getRgstrId()); } check(StringUtils.isNotBlank(bisInspUnwtRgstr.getId()), "rgstrId.no"); bisInspUnwtRgstr.setUptm(new Date()); int ret = bisInspUnwtRgstrDao.update(bisInspUnwtRgstr); // 更新基础表信息 updateAttBase(bisInspUnwtRgstr); return ret; } private void updateAttBase(BisInspUnwtRgstr rgstr) { BisInspUnwtRgstr r = get(rgstr.getId()); AttUnwtBase attUnwtBase = attUnwtBaseService.getObjId(r.getObjId()); Optional.ofNullable(attUnwtBase).ifPresent(base -> { base.setNm(rgstr.getNm()); base.setAdCode(rgstr.getAdCode()); base.setAdName(rgstr.getAdName()); base.setCenterX(rgstr.getCenterX()); base.setCenterY(rgstr.getCenterY()); base.setGdX(rgstr.getGdX()); base.setGdY(rgstr.getGdY()); base.setLoc(rgstr.getLoc()); attUnwtBaseService.update(base); }); } @Override public int delete(String id) { return this.bisInspUnwtRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspUnwtRgstr b = new BisInspUnwtRgstr(); AttUnwtBase base = attUnwtBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); b.setObjId(bisInspAllObj.getObjId()); b.setId(UuidUtil.uuid()); b.setIntm(new Date()); b.setUptm(new Date()); b.setDataStat("0"); b.setState("0"); b.setSynState("0"); /* 添加 登记表 */ bisInspUnwtRgstrDao.insert(b); // 添加 子表 bisInspUnwtSynService.insert(Builder.of(BisInspUnwtSynParam::new) .with(BisInspUnwtSynParam::setRgstrId, b.getId()) .with(BisInspUnwtSynParam::setPersId, persId) .build()); } @Override public String getType() { return BisInspEnum.UNWT.getValue(); } @Override public void cleanObjData(String objId) { BisInspUnwtRgstrParam rgstrParam = new BisInspUnwtRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspUnwtRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除登记表 this.bisInspUnwtRgstrDao.delete(id); // 添加 子表 bisInspUnwtSynService.deleteBy(Builder.of(BisInspUnwtSynParam::new).with(BisInspUnwtSynParam::setRgstrId, id).build()); } } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspUnwtRgstrDao.findPageList(typeParam); } @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.bisInspUnwtRgstrDao.findPageList(typeParam); return new PageInfo<>(list); } @Override public void updateState(Map map) { BisInspUnwtRgstr 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 ("syn".equals(MapUtils.getString(map, "param"))) { rgstr.setSynState(MapUtils.getString(map, "state")); } update(rgstr); } } }