package com.gkhy.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.common.constant.Constants;
import com.gkhy.common.core.domain.entity.SysRole;
import com.gkhy.common.core.domain.entity.SysUser;
import com.gkhy.common.core.domain.model.LoginUser;
import com.gkhy.common.utils.SecurityUtils;
import com.gkhy.system.domain.DailySafetyInspection;
import com.gkhy.system.domain.Hazards;
import com.gkhy.system.domain.dto.HazardsEditDTO;
import com.gkhy.system.mapper.HazardsMapper;
import com.gkhy.system.service.HazardsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
/**
*
* 隐患上报/整改/台账 服务实现类
*
*
* @author hh
* @since 2025-09-08 10:36:52
*/
@Service
public class HazardsServiceImpl extends ServiceImpl implements HazardsService {
@Autowired
private HazardsMapper hazardsMapper;
@Override
public List getHazardsList(Hazards hazards) {
return hazardsMapper.getHazardsList(hazards);
}
@Override
public int saveHazards(Hazards inspection) {
int result = 0;
if (inspection.getId() == null){
inspection.setCreateTime(LocalDateTime.now());
inspection.setCreateBy(SecurityUtils.getUsername());
result = hazardsMapper.insert(inspection);
}else {
inspection.setUpdateTime(LocalDateTime.now());
inspection.setUpdateBy(SecurityUtils.getUsername());
result = hazardsMapper.updateById(inspection);
}
return result;
}
@Override
public int updateHazards(HazardsEditDTO dto) {
checkPer();
Hazards inspection = new Hazards();
inspection.setId(dto.getId());
inspection.setReformPeriod(dto.getReformPeriod());
inspection.setRectificationMeasures(dto.getRectificationMeasures());
inspection.setReasonAnalysis(dto.getReasonAnalysis());
inspection.setReformPics(dto.getReformPics());
inspection.setUpdateTime(LocalDateTime.now());
inspection.setUpdateBy(SecurityUtils.getUsername());
inspection.setState(1);
return hazardsMapper.updateById(inspection);
}
private void checkPer(){
boolean admin = SecurityUtils.isAdmin(SecurityUtils.getUserId());
if (!admin){
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getUser();
List roles = user.getRoles();
long sysAdmin = roles.stream().filter(role -> role.getRoleKey().equals(Constants.SYS_ADMIN)).count();
if (sysAdmin == 0){
throw new RuntimeException("没有权限");
}
}
}
@Override
public int deleteHazards(Long id) {
return hazardsMapper.update(new Hazards(),
new LambdaUpdateWrapper().eq(Hazards::getId, id)
.set(Hazards::getDelFlag, Constants.FAIL).set(Hazards::getUpdateTime, LocalDateTime.now())
.set(Hazards::getUpdateBy, SecurityUtils.getUsername()));
}
}