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.BisInspAllObjDao; import cn.com.goldenwater.dcproj.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.dao.BisInspWtgtRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspWtgtRgstrDto; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 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.Date; import java.util.List; /** * @author lhc * @date 2020-9-18 */ @Service @Transactional public class BisInspWtgtRgstrServiceImpl extends AbstractCrudService implements BisInspWtgtRgstrService, BisInspObjStrategy { @Autowired private BisInspWtgtRgstrDao bisInspWtgtRgstrDao; @Autowired private BisInspWtgtRgstrPayService bisInspWtgtRgstrPayService; @Autowired private AttWtgtBaseService attWtgtBaseService; @Autowired private BisInspPblmDao bisInspPblmDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; public BisInspWtgtRgstrServiceImpl(BisInspWtgtRgstrDao bisInspWtgtRgstrDao) { super(bisInspWtgtRgstrDao); this.bisInspWtgtRgstrDao = bisInspWtgtRgstrDao; } @Override public int insert(BisInspWtgtRgstr bisInspWtgtRgstr) { // 生成uuid String uuid = UuidUtil.uuid(); bisInspWtgtRgstr.setId(uuid); bisInspWtgtRgstr.setIntm(new Date()); bisInspWtgtRgstr.setUptm(new Date()); bisInspWtgtRgstr.setDataStat("0"); return this.bisInspWtgtRgstrDao.insert(bisInspWtgtRgstr); } @Override public int update(BisInspWtgtRgstr bisInspWtgtRgstr) { bisInspWtgtRgstr.setUptm(new Date()); return this.bisInspWtgtRgstrDao.update(bisInspWtgtRgstr); } @Override public int delete(String id) { return this.bisInspWtgtRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspWtgtRgstr r = new BisInspWtgtRgstr(); AttWtgtBase base = attWtgtBaseService.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, r); // 统一字段 rgstrId, objId r.setId(UuidUtil.uuid()); r.setObjId(bisInspAllObj.getObjId()); // 日期 Date d = new Date(); r.setIntm(d); r.setUptm(d); // 数据状态 默认为 0 r.setDataStat(CommonLabel.INIT_DATA); // 督查状态(0:未督查;1:督查中;2:已督查) r.setState(CommonLabel.INIT_DATA); // 子表状态(0:未督查;1:督查中;2:已督查) r.setPayState(CommonLabel.INIT_DATA); r.setPlanState(CommonLabel.INIT_DATA); // 创建人 r.setPersId(persId); this.bisInspWtgtRgstrDao.insert(r); /* 创建子表 */ BisInspWtgtRgstrPay pay = new BisInspWtgtRgstrPay(); pay.setRgstrId(r.getId()); bisInspWtgtRgstrPayService.insert(pay); } @Override public String getType() { return BisInspEnum.WTGT.getValue(); } @Override public void cleanObjData(String objId) { BisInspWtgtRgstrParam rgstrParam = new BisInspWtgtRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspWtgtRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 BisInspWtgtRgstrPayParam payParam = new BisInspWtgtRgstrPayParam(); payParam.setRgstrId(id); bisInspWtgtRgstrPayService.deleteBy(payParam); // 删除登记表 this.bisInspWtgtRgstrDao.delete(id); } // 删除问题 BisInspPblmParam bisInspPblmParam = new BisInspPblmParam(); bisInspPblmParam.setObjId(objId); bisInspPblmParam.setObjType(BisInspEnum.WTGT.getValue()); bisInspPblmDao.deleteBy(bisInspPblmParam); // 删除对象名录表 BisInspAllObjParam bisInspAllObjParam = new BisInspAllObjParam(); bisInspAllObjParam.setObjId(objId); bisInspAllObjDao.deleteBy(bisInspAllObjParam); } @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.bisInspWtgtRgstrDao.findPageList(typeParam); return (PageInfo) new PageInfo(list); } @Override public Object findObjListByType(TypeParam typeParam) { return null; } @Override public BisInspWtgtRgstr save(BisInspWtgtRgstr bisInspWtgtRgstr) { if (StringUtils.isNotBlank(bisInspWtgtRgstr.getRgstrId())) { // rgstrId 不为 空 时,传给ID bisInspWtgtRgstr.setId(bisInspWtgtRgstr.getRgstrId()); } if (StringUtils.isBlank(bisInspWtgtRgstr.getId())) { if (StringUtils.isNotBlank(bisInspWtgtRgstr.getObjId())) { BisInspWtgtRgstrParam param = new BisInspWtgtRgstrParam(); param.setObjId(bisInspWtgtRgstr.getId()); BisInspWtgtRgstr rgstr = getBy(param); // 如果没有注册表,添加 if (null == rgstr) { insert(bisInspWtgtRgstr); } else { bisInspWtgtRgstr.setId(rgstr.getId()); bisInspWtgtRgstr.setUptm(new Date()); update(bisInspWtgtRgstr); // 跟新基础表 updateAttWtgtBase(bisInspWtgtRgstr); } } } else { if (StringUtils.isBlank(bisInspWtgtRgstr.getObjId())) { BisInspWtgtRgstr rgstr = get(bisInspWtgtRgstr.getId()); if (null != rgstr) { bisInspWtgtRgstr.setObjId(rgstr.getObjId()); } } bisInspWtgtRgstr.setUptm(new Date()); update(bisInspWtgtRgstr); // 跟新基础表 updateAttWtgtBase(bisInspWtgtRgstr); } return bisInspWtgtRgstr; } private void updateAttWtgtBase(BisInspWtgtRgstr bisInspWtgtRgstr) { if (StringUtils.isNotBlank(bisInspWtgtRgstr.getObjId())) { AttWtgtBase attWtgtBase = attWtgtBaseService.getObjId(bisInspWtgtRgstr.getObjId()); String attWtgtBaseId = attWtgtBase.getId(); BeanUtils.copyProperties(bisInspWtgtRgstr, attWtgtBase); attWtgtBase.setId(attWtgtBaseId); attWtgtBase.setIntm(null); attWtgtBase.setDataStat(null); attWtgtBaseService.update(attWtgtBase); } } }