package com.iailab.module.data.ind.item.service.impl; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.service.impl.BaseServiceImpl; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.data.common.enums.ItemTypeEnum; import com.iailab.module.data.ind.item.dao.IndItemDao; import com.iailab.module.data.ind.item.entity.IndItemAtomEntity; import com.iailab.module.data.ind.item.entity.IndItemCalEntity; import com.iailab.module.data.ind.item.entity.IndItemDerEntity; import com.iailab.module.data.ind.item.entity.IndItemEntity; import com.iailab.module.data.ind.item.service.IndItemAtomService; import com.iailab.module.data.ind.item.service.IndItemService; import com.iailab.module.data.ind.item.vo.IndItemPageReqVO; import com.iailab.module.data.ind.item.vo.IndItemRespVO; import com.iailab.module.data.ind.item.vo.IndItemSaveReqVO; import com.iailab.module.data.common.enums.IncreaseCodeEnum; import com.iailab.module.data.point.service.DaSequenceNumService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.UUID; /** * @author PanZhibao * @Description * @createTime 2024年09月11日 */ @Service public class IndItemServiceImpl extends BaseServiceImpl implements IndItemService { @Autowired private IndItemAtomService indItemAtomService; @Autowired private IndItemDerServiceImpl indItemDerServiceImpl; @Autowired private IndItemCalServiceImpl indItemCalServiceImpl; @Autowired private DaSequenceNumService daSequenceNumService; @Override public PageResult page(IndItemPageReqVO reqVO) { return baseDao.selectPage(reqVO); } @Override @DSTransactional(rollbackFor = Exception.class) public void create(IndItemSaveReqVO createReqVO) { IndItemEntity entity = BeanUtils.toBean(createReqVO, IndItemEntity.class); entity.setId(UUID.randomUUID().toString()); if (ItemTypeEnum.ATOM.getCode().equals(createReqVO.getItemType())) { IndItemAtomEntity atomEntity = BeanUtils.toBean(createReqVO.getAtomItem(), IndItemAtomEntity.class); atomEntity.setId(UUID.randomUUID().toString()); atomEntity.setItemId(entity.getId()); indItemAtomService.insert(atomEntity); entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_A.name())); } else if (ItemTypeEnum.DER.getCode().equals(createReqVO.getItemType())) { IndItemDerEntity derEntity = BeanUtils.toBean(createReqVO.getDerItem(), IndItemDerEntity.class); derEntity.setId(UUID.randomUUID().toString()); derEntity.setItemId(entity.getId()); indItemDerServiceImpl.insert(derEntity); entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_D.name())); } else if (ItemTypeEnum.CAL.getCode().equals(createReqVO.getItemType())) { IndItemCalEntity calEntity = BeanUtils.toBean(createReqVO.getCalItem(), IndItemCalEntity.class); calEntity.setId(UUID.randomUUID().toString()); calEntity.setItemId(entity.getId()); indItemCalServiceImpl.insert(calEntity); entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_C.name())); } entity.setCreateTime(new Date()); baseDao.insert(entity); } @Override @DSTransactional(rollbackFor = Exception.class) public void update(IndItemSaveReqVO updateReqVO) { IndItemEntity entity = BeanUtils.toBean(updateReqVO, IndItemEntity.class); entity.setUpdateTime(new Date()); if (ItemTypeEnum.ATOM.getCode().equals(updateReqVO.getItemType())) { IndItemAtomEntity atomEntity = BeanUtils.toBean(updateReqVO.getAtomItem(), IndItemAtomEntity.class); indItemAtomService.updateById(atomEntity); } else if (ItemTypeEnum.DER.getCode().equals(updateReqVO.getItemType())) { IndItemDerEntity derEntity = BeanUtils.toBean(updateReqVO.getDerItem(), IndItemDerEntity.class); indItemDerServiceImpl.updateById(derEntity); } else if (ItemTypeEnum.CAL.getCode().equals(updateReqVO.getItemType())) { IndItemCalEntity calEntity = BeanUtils.toBean(updateReqVO.getCalItem(), IndItemCalEntity.class); indItemCalServiceImpl.updateById(calEntity); } baseDao.updateById(entity); } @Override public IndItemEntity get(String id) { return baseDao.selectById(id); } @Override public IndItemEntity getInfoByNo(String no) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("item_no", no); return baseDao.selectOne(queryWrapper); } @Override @DSTransactional(rollbackFor = Exception.class) public void delete(String id) { IndItemEntity entity = get(id); if (ItemTypeEnum.ATOM.getCode().equals(entity.getItemType())) { indItemAtomService.deleteByItemId(id); } else if (ItemTypeEnum.DER.getCode().equals(entity.getItemType())) { indItemDerServiceImpl.deleteByItemId(id); } else if (ItemTypeEnum.CAL.getCode().equals(entity.getItemType())) { indItemCalServiceImpl.deleteByItemId(id); } baseDao.deleteById(id); } @Override public List getList(IndItemPageReqVO reqVO) { return baseDao.getItemList(reqVO); } }