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.AttBidBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspAllObjDao; import cn.com.goldenwater.dcproj.dao.BisInspBidRgstrDao; import cn.com.goldenwater.dcproj.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.dto.BisInspBidRgstrDto; import cn.com.goldenwater.dcproj.model.AttBidBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspBidPro; import cn.com.goldenwater.dcproj.model.BisInspBidRgstr; import cn.com.goldenwater.dcproj.param.*; import cn.com.goldenwater.dcproj.service.AttBidBaseService; import cn.com.goldenwater.dcproj.service.BisInspBidProService; import cn.com.goldenwater.dcproj.service.BisInspBidRgstrService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.Constant; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; 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; /** * @author lhc * @date 2020-12-25 */ @Service @Transactional public class BisInspBidRgstrServiceImpl extends AbstractCrudService implements BisInspBidRgstrService, BisInspObjStrategy { @Autowired private BisInspBidRgstrDao bisInspBidRgstrDao; @Autowired private AttBidBaseDao attBidBaseDao; @Autowired private BisInspBidRgstrService bisInspBidRgstrService; @Autowired private BisInspBidProService bisInspBidProService; @Autowired private BisInspPblmDao bisInspPblmDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; @Autowired private AttBidBaseService attBidBaseService; public BisInspBidRgstrServiceImpl(BisInspBidRgstrDao bisInspBidRgstrDao) { super(bisInspBidRgstrDao); this.bisInspBidRgstrDao = bisInspBidRgstrDao; } @Override public int insert(BisInspBidRgstr bisInspBidRgstr) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspBidRgstr.setId(uuid); bisInspBidRgstr.setIntm(new Date()); bisInspBidRgstr.setUptm(new Date()); bisInspBidRgstr.setDataStat("0"); return this.bisInspBidRgstrDao.insert(bisInspBidRgstr); } @Override public int update(BisInspBidRgstr bisInspBidRgstr) { bisInspBidRgstr.setUptm(new Date()); return this.bisInspBidRgstrDao.update(bisInspBidRgstr); } @Override public int delete(String id) { return this.bisInspBidRgstrDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { BisInspBidRgstr b = new BisInspBidRgstr(); AttBidBase base = attBidBaseDao.get(bisInspAllObj.getCode()); BeanUtils.copyProperties(base, b); // 统一字段 rgstrId, objId b.setId(UuidUtil.uuid()); b.setObjId(bisInspAllObj.getObjId()); // 日期 Date d = new Date(); b.setIntm(d); b.setUptm(d); b.setBidName(base.getBidName()); b.setBidCode(base.getBidCode()); // 数据状态 默认为 0 b.setDataStat(CommonLabel.INIT_DATA); // 督查状态(0:未督查;1:督查中;2:已督查) b.setState(CommonLabel.INIT_DATA); // 子表状态(0:未督查;1:督查中;2:已督查) b.setBidproState(CommonLabel.INIT_DATA); // 创建人 b.setPersId(persId); /* 添加 登记表 */ this.bisInspBidRgstrDao.insert(b); /* 添加 子表 */ BisInspBidPro bisInspBidPro = new BisInspBidPro(); bisInspBidPro.setRgstrId(b.getId()); bisInspBidProService.insert(bisInspBidPro); } @Override public String getType() { return BisInspEnum.BID.getValue(); } @Override public void cleanObjData(String objId) { BisInspBidRgstrParam rgstrParam = new BisInspBidRgstrParam(); rgstrParam.setObjId(objId); List list = this.bisInspBidRgstrDao.findList(rgstrParam); if (list.size() > 0) { String id = list.get(0).getId(); // 删除子表 BisInspBidProParam bisInspBidProParam = new BisInspBidProParam(); bisInspBidProParam.setRgstrId(id); bisInspBidProService.deleteBy(bisInspBidProParam); // 删除登记表 this.bisInspBidRgstrDao.delete(id); } // 删除问题 BisInspPblmParam bisInspPblmParam = new BisInspPblmParam(); bisInspPblmParam.setObjId(objId); bisInspPblmParam.setObjType(getType()); 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.bisInspBidRgstrDao.findPageList(typeParam); return (PageInfo) new PageInfo(list); } @Override public Object findObjListByType(TypeParam typeParam) { return this.bisInspBidRgstrDao.findPageList(typeParam); } @Override public BisInspBidRgstr save(BisInspBidRgstr bisInspBidRgstr) { // 根据有无主键,来新增、更新信息 int ret = 0; if (StringUtils.isNotBlank(bisInspBidRgstr.getRgstrId())) { // rgstrId 不为 空 时,传给ID bisInspBidRgstr.setId(bisInspBidRgstr.getRgstrId()); } if (StringUtils.isBlank(bisInspBidRgstr.getId())) { if (StringUtils.isNotBlank(bisInspBidRgstr.getObjId())) { BisInspBidRgstrParam param = new BisInspBidRgstrParam(); param.setObjId(bisInspBidRgstr.getId()); BisInspBidRgstr rgstr = getBy(param); // 如果没有注册表,添加 if (null == rgstr) { ret = insert(bisInspBidRgstr); } else { bisInspBidRgstr.setId(rgstr.getId()); bisInspBidRgstr.setUptm(new Date()); update(bisInspBidRgstr); // 更新基础表 updateAttBidBase(bisInspBidRgstr); } } } else { if (StringUtils.isBlank(bisInspBidRgstr.getObjId())) { BisInspBidRgstr rgstr = get(bisInspBidRgstr.getId()); if (null != rgstr) { bisInspBidRgstr.setObjId(rgstr.getObjId()); } } bisInspBidRgstr.setUptm(new Date()); update(bisInspBidRgstr); // 更新基础表 updateAttBidBase(bisInspBidRgstr); } return bisInspBidRgstr; } private void updateAttBidBase(BisInspBidRgstr bisInspBidRgstr) { // 清空特殊数据 AttBidBase attBidBase = attBidBaseService.getObjId(bisInspBidRgstr.getObjId()); // 转换基础表ID String attBidBaseId = attBidBase.getId(); BeanUtils.copyProperties(bisInspBidRgstr, attBidBase); attBidBase.setId(attBidBaseId); attBidBase.setIntm(null); attBidBase.setPersId(null); attBidBaseService.update(attBidBase); } @Override public PageInfo findBidPageInfo(BisInspBidRgstrParam bisInspBidRgstrParam) { PageHelper.startPage(bisInspBidRgstrParam.getPageNum(),bisInspBidRgstrParam.getPageSize()); List list = bisInspBidRgstrDao.findBidPageInfo(bisInspBidRgstrParam); return new PageInfo(list); } @Override public void updateState(Map map) { BisInspBidRgstr rgstr = get(MapUtils.getString(map, "rgstrId")); if (!Constant.STRING_TWO.equals(rgstr.getState()) && org.apache.commons.lang3.StringUtils.isNotBlank(MapUtils.getString(map, "state"))) { rgstr.setUptm(new Date()); rgstr.setState(Constant.STRING_ONE); switch (MapUtils.getString(map, "param")) { case "bidpro": rgstr.setBidproState(MapUtils.getString(map, "state")); break; default: } update(rgstr); } } }