zouyu
2026-02-03 c80a342eacd6b639c486eb47afdf04984d54183e
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -1,7 +1,6 @@
package com.ruoyi.inspect.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.io.IoUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
@@ -15,6 +14,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.enums.ContractType;
import com.ruoyi.common.oa.OAProcess;
import com.ruoyi.common.oa.OAProperty;
import com.ruoyi.common.oa.OAResult;
@@ -34,22 +34,17 @@
import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysDictTypeService;
import com.ruoyi.system.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -93,23 +88,17 @@
        response.reset();
        try{
            //查询字典
            List<SysDictData> materialPropType = sysDictTypeService.selectDictDataByType("material_prop_type");
            List<SysDictData> materialPropType = sysDictTypeService.selectDictDataByType("material_prop_type");//物料属性
            List<SysDictData> categoriesNoConformities = sysDictTypeService.selectDictDataByType("categories_no_conformities");//不合格分类
            List<SysDictData> attributionNoConformities = sysDictTypeService.selectDictDataByType("attribution_no_conformities");// 不合格归属
            //查询不合格处理记录
            IPage<UnqualifiedHandlerVO> pageList = pageList(new Page<>(-1, -1), unqualifiedHandlerDto);
            List<InsUnqualifiedHandlerExcelData> records = pageList.getRecords().stream().map(m->{
                InsUnqualifiedHandlerExcelData handlerExcelData = new InsUnqualifiedHandlerExcelData();
                BeanUtil.copyProperties(m,handlerExcelData);
                handlerExcelData.setMaterialProp(materialPropType.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getMaterialProp())).findFirst().orElse(new SysDictData()).getDictLabel());
                if(StringUtils.equals(handlerExcelData.getClassification(),"0")){
                    handlerExcelData.setClassification("一类不合格");
                }else if(StringUtils.equals(handlerExcelData.getClassification(),"1")){
                    handlerExcelData.setClassification("二类不合格");
                }
                if(StringUtils.equals(handlerExcelData.getOffGradeAscription(),"0")){
                    handlerExcelData.setOffGradeAscription("生产反馈不合格");
                }else if(StringUtils.equals(handlerExcelData.getOffGradeAscription(),"1")){
                    handlerExcelData.setOffGradeAscription("检测不合格");
                }
                handlerExcelData.setClassification(categoriesNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getClassification())).findFirst().orElse(new SysDictData()).getDictLabel());
                handlerExcelData.setOffGradeAscription(attributionNoConformities.stream().filter(f-> StringUtils.equals(f.getDictValue(),handlerExcelData.getOffGradeAscription())).findFirst().orElse(new SysDictData()).getDictLabel());
                return handlerExcelData;
            }).collect(Collectors.toList());
            //设置response
@@ -136,10 +125,6 @@
    public Result pushOA(PushOADto pushOADto) {
        //获取不合格处理记录
        UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
        if (vo.getRequestId() != null) {
            throw new ErrorException("该不合格处理已提交过OA");
        }
        //提交oa相关字段赋值
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -180,9 +165,13 @@
        boolean oa = false;
        try {
            log.info("发起不合格处理OA审核流程");
            String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
            //根据IFS域获取对应的流程id
            if(StringUtils.isBlank(pushOADto.getContract())){
                throw new RuntimeException("IFS域【"+pushOADto.getContract()+"】不存在,OA流程提交失败");
            }
            String unqualifiedProcessId = StringUtils.equals(ContractType.ZTNS.getValue(),pushOADto.getContract())?oaProperty.getUnqualifiedProcessId():oaProperty.getUnqualifiedProcessIdByKJNS();
            OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
            log.info("不合格处理OA审核流程结束,返回结果->{}" + oaResult);
            log.info("{}不合格处理OA审核流程结束,返回结果->{}",unqualifiedProcessId,oaResult);
            oa = oaResult.success();
            if (oa) {
                String addWorkflowResult = oaResult.getAddWorkflowResult();
@@ -295,6 +284,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
    public boolean updateUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
        // 删除附件, 重新添加
        insUnqualifiedHandlerFileService.remove(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
@@ -305,8 +295,15 @@
            }
            insUnqualifiedHandlerFileService.updateBatchById(unqualifiedHandlerDto.getUnqualifiedHandlerFiles());
        }
        return this.updateById(unqualifiedHandlerDto);
        boolean isUpdated = this.updateById(unqualifiedHandlerDto);
        if(isUpdated){
            //推送OA
            PushOADto pushOADto = new PushOADto();
            pushOADto.setHandlerId(unqualifiedHandlerDto.getId());
            pushOADto.setContract(unqualifiedHandlerDto.getContract());
            pushOA(pushOADto);
        }
        return true;
    }
    /**