吴羡
15 小时以前 2f07589b54d56085af77b50d580890cd4130b444
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceAccidentReportServiceImpl.java
@@ -6,6 +6,7 @@
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceAccidentReportDto;
@@ -14,6 +15,7 @@
import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceAccidentReport;
import com.ruoyi.device.service.DeviceAccidentReportService;
import com.ruoyi.device.util.DeviceFlowPermissionUtils;
import com.ruoyi.inspect.util.UserUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
@@ -65,6 +67,7 @@
    public boolean addDeviceAccidentReport(DeviceAccidentReport deviceAccidentReport) {
        DeviceAccidentReport accidentReport = new DeviceAccidentReport();
        User user = userMapper.selectById(SecurityUtils.getUserId().intValue());
        checkFlowPermission(deviceAccidentReport, user);
        switch (deviceAccidentReport.getFlowType()) {
            case 0:
                // 报告
@@ -136,6 +139,43 @@
        return true;
    }
    private void checkFlowPermission(DeviceAccidentReport deviceAccidentReport, User user) {
        Integer flowType = deviceAccidentReport.getFlowType();
        Integer accidentReportId = deviceAccidentReport.getAccidentReportId();
        if (flowType != null && flowType > 0) {
            DeviceAccidentReport existing = baseMapper.selectById(accidentReportId);
            if (existing == null) {
                throw new ServiceException("单据不存在");
            }
            DeviceFlowPermissionUtils.checkFinished(existing.getIsFinish());
            Integer expectedUserId;
            switch (flowType) {
                case 1:
                    expectedUserId = existing.getAssessorUserId();
                    break;
                case 2:
                    expectedUserId = existing.getDepartmentHeadUserId();
                    break;
                case 3:
                    expectedUserId = existing.getTechnicalDirectorUserId();
                    break;
                case 4:
                    expectedUserId = existing.getDirectorHeadUserId();
                    break;
                default:
                    expectedUserId = null;
                    break;
            }
            DeviceFlowPermissionUtils.checkResponsible(expectedUserId, user.getId());
        } else if (accidentReportId != null) {
            DeviceAccidentReport existing = baseMapper.selectById(accidentReportId);
            if (existing != null) {
                DeviceFlowPermissionUtils.checkFinished(existing.getIsFinish());
                DeviceFlowPermissionUtils.checkResponsible(existing.getReportUserId(), user.getId());
            }
        }
    }
    /**
     * 导出设备事故报告
     * @param accidentReportId 设备事故报告id
@@ -167,7 +207,7 @@
                    // 技术负责人签名
                    put("technicalDirectorUserUrl", UserUtils.getFinalUserSignatureOrTransparent(deviceAccidentReport.getTechnicalDirectorUserId()));
                    // 主任签名
                    put("directorHeadUserUrl", UserUtils.getFinalUserSignatureOrTransparent(deviceAccidentReport.getDepartmentHeadUserId()));
                    put("directorHeadUserUrl", UserUtils.getFinalUserSignatureOrTransparent(deviceAccidentReport.getDirectorHeadUserId()));
                }});
        try {