|
@@ -0,0 +1,157 @@
|
|
|
+package org.springblade.business.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springblade.business.mapper.StandardInfoJoinMapper;
|
|
|
+import org.springblade.business.mapper.StandardInfoPrivateJoinMapper;
|
|
|
+import org.springblade.business.dto.UStandardInfoDTO;
|
|
|
+import org.springblade.business.entity.UStandardInfo;
|
|
|
+import org.springblade.business.service.UStandardInfoService;
|
|
|
+import org.springblade.business.mapper.StandardInfoMapper;
|
|
|
+import org.springblade.business.entity.UStandardInfoJoin;
|
|
|
+import org.springblade.business.entity.UStandardInfoPrivateJoin;
|
|
|
+import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
+import org.springblade.core.mp.support.Query;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springframework.beans.BeansException;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author LHB
|
|
|
+ * @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Service实现
|
|
|
+ * @createDate 2025-06-11 09:57:39
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, UStandardInfo>
|
|
|
+ implements UStandardInfoService {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关联表
|
|
|
+ */
|
|
|
+ @Resource
|
|
|
+ private StandardInfoJoinMapper infoJoinMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 与表单的关联关系
|
|
|
+ */
|
|
|
+ @Resource
|
|
|
+ private StandardInfoPrivateJoinMapper infoPrivateJoinMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<UStandardInfoDTO> selectMyPage(Query query, UStandardInfo uStandardInfo) {
|
|
|
+ return baseMapper.selectMyPage(new Page<UStandardInfoDTO>(query.getCurrent(), query.getSize()), uStandardInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public UStandardInfoDTO selectOne(Long id) {
|
|
|
+ return baseMapper.selectMyOne(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean insert(UStandardInfoDTO uStandardInfo) {
|
|
|
+ try {
|
|
|
+ //获取当前用户
|
|
|
+ BladeUser user = SecureUtil.getUser();
|
|
|
+ uStandardInfo.setId(SnowFlakeUtil.getId());
|
|
|
+ uStandardInfo.setCreateUser(user.getUserId());
|
|
|
+
|
|
|
+ List<UStandardInfo> info = uStandardInfo.getInfo();
|
|
|
+
|
|
|
+ //给集合设置id、父级id、创建人
|
|
|
+ info.forEach(item -> {
|
|
|
+ item.setId(SnowFlakeUtil.getId());
|
|
|
+ item.setParentId(uStandardInfo.getId());
|
|
|
+ item.setCreateUser(user.getUserId());
|
|
|
+ });
|
|
|
+
|
|
|
+ //把父级对象转出来单独保存
|
|
|
+ UStandardInfo parent = BeanUtil.copyProperties(uStandardInfo, UStandardInfo.class);
|
|
|
+ baseMapper.insert(parent);
|
|
|
+ //通过mybatis-plus 批量新增
|
|
|
+ this.saveBatch(info);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } catch (BeansException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("添加失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean edit(UStandardInfoDTO uStandardInfo) {
|
|
|
+ try {
|
|
|
+ //获取当前用户
|
|
|
+ BladeUser user = SecureUtil.getUser();
|
|
|
+ uStandardInfo.setUpdateUser(user.getUserId());
|
|
|
+
|
|
|
+ List<UStandardInfo> info = uStandardInfo.getInfo();
|
|
|
+ info.forEach(item -> {
|
|
|
+ if (item.getId() == null) {
|
|
|
+ //新增的子集合设置id、父级id、创建人
|
|
|
+ item.setId(SnowFlakeUtil.getId());
|
|
|
+ item.setParentId(uStandardInfo.getId());
|
|
|
+ item.setCreateUser(user.getUserId());
|
|
|
+
|
|
|
+ } else {
|
|
|
+ //更新的子集合 添加更新人
|
|
|
+ item.setUpdateUser(user.getUserId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //更新父级对象
|
|
|
+ UStandardInfo parent = BeanUtil.copyProperties(uStandardInfo, UStandardInfo.class);
|
|
|
+ baseMapper.updateById(parent);
|
|
|
+ //批量更新
|
|
|
+ this.saveOrUpdateBatch(info);
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("更新失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delete(Long id) {
|
|
|
+ try {
|
|
|
+ //查询关联表 如果有关联关系不允许删除
|
|
|
+ Long joinCount = infoJoinMapper.selectCount(Wrappers.<UStandardInfoJoin>lambdaQuery()
|
|
|
+ .eq(UStandardInfoJoin::getStandardInfoRightId, id)
|
|
|
+ .or()
|
|
|
+ .eq(UStandardInfoJoin::getStandardInfoLeftId, id));
|
|
|
+ if (joinCount > 0) {
|
|
|
+ throw new ServiceException("当前数据正在【条件设置】中使用,无法删除");
|
|
|
+ }
|
|
|
+ //查询与表单的关联表
|
|
|
+ Long privateJoinCount = infoPrivateJoinMapper.selectCount(Wrappers.<UStandardInfoPrivateJoin>lambdaQuery()
|
|
|
+ .eq(UStandardInfoPrivateJoin::getStandardInfoId, id));
|
|
|
+ if (privateJoinCount > 0) {
|
|
|
+ throw new ServiceException("当前数据正在【关联元素】中使用,无法删除");
|
|
|
+ }
|
|
|
+
|
|
|
+ int update = baseMapper.update(null, Wrappers.<UStandardInfo>lambdaUpdate()
|
|
|
+ .set(UStandardInfo::getIsDeleted, 1)
|
|
|
+ .eq(UStandardInfo::getId, id)
|
|
|
+ .or()
|
|
|
+ .eq(UStandardInfo::getParentId, id));
|
|
|
+ return update > 0;
|
|
|
+ } catch (ServiceException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("删除失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|