ke
2024-07-19 08a962d2925baa255207fdf979e6fee794f1773b
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectPersonConfigServiceImpl.java
New file
@@ -0,0 +1,77 @@
package cn.gistack.sm.sg.service.impl;
import cn.gistack.sm.sg.DO.SgProgressReportDO;
import cn.gistack.sm.sg.DO.SgProjectPersonConfigDO;
import cn.gistack.sm.sg.DO.SgProjectRolePersonV0;
import cn.gistack.sm.sg.DTO.AddSgProjectPersonConfigDTO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.mapper.SgProgressReportMapper;
import cn.gistack.sm.sg.mapper.SgProjectPersonConfigMapper;
import cn.gistack.sm.sg.service.SgProjectPersonConfigService;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
 * 施工项目人员配置表 服务实现类
 * </p>
 *
 * @author shenyijian
 * @since 2024-06-15 11:45:35
 */
@Service
public class SgProjectPersonConfigServiceImpl extends ServiceImpl<SgProjectPersonConfigMapper, SgProjectPersonConfigDO> implements SgProjectPersonConfigService {
   @Autowired
   private SgProjectPersonConfigMapper projectPersonConfigMapper;
   @Autowired
   private SgProgressReportMapper sgProgressReportMapper;
   @Override
   public List<String> getRoleList(ProjectSearchDTO searchDTO) {
      List<String> list = projectPersonConfigMapper.getRoleList(searchDTO);
      return list;
   }
   @Override
   public void add(AddSgProjectPersonConfigDTO dto) {
      for (SgProjectPersonConfigDO sgProjectPersonConfigDO : dto.getData()) {
         Long id = sgProjectPersonConfigDO.getId();
         Long userId = sgProjectPersonConfigDO.getUserId();
         if (Objects.isNull(id)){
            projectPersonConfigMapper.insert(sgProjectPersonConfigDO);
         }else {
            SgProjectPersonConfigDO old = projectPersonConfigMapper.selectById(id);
            boolean isReport = !new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getProframId, old.getProgramId()).list().isEmpty();
            if (Objects.isNull(userId)){
               if (isReport){
                  throw new ServiceException("此项目配置存在审批,不允许修改");
               }
               projectPersonConfigMapper.deleteById(id);
            }else if (!old.getUserId().equals(sgProjectPersonConfigDO.getUserId())){
               if (isReport){
                  throw new ServiceException("此项目配置存在审批,不允许修改");
               }
               projectPersonConfigMapper.updateById(sgProjectPersonConfigDO);
            }
         }
      }
   }
   @Override
   public List<SgProjectRolePersonV0> getList(ProjectSearchDTO searchDTO) {
      List<SgProjectRolePersonV0> list =   projectPersonConfigMapper.getList(searchDTO);
      return list;
   }
   @Override
   public List<Map<String, Object>> getUserByRole(String roleId) {
      return projectPersonConfigMapper.getUserByRole(roleId);
   }
}