liding
2025-04-09 218388d1cecbf8cf4ab5ba51d3c875a0f21e8998
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -12,6 +12,7 @@
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -43,6 +44,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -89,7 +91,8 @@
    //获取检验下单数据
    @Override
    public IPage<SampleOrderDto> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) {
        //todo: 只看我判断全部,个人,组织的权限
        // TODO 针对人员做权限处理 目前先对检验人员做数据处理  如果是检验人员只能查询到检验项目是自己或者订单分派人是自己的订单,不是检验人员的暂时全查
        boolean checkUserFlag = isCheckUser(SecurityUtils.getUserId().intValue());
        String laboratory = null;
        // 判断是否是全部
        String isOrderAll = null;
@@ -97,7 +100,31 @@
            isOrderAll = "1";
            sampleOrderDto.setState(null);
        }
        return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll);
        SampleOrderDto otherParam = new SampleOrderDto();
        otherParam.setLaboratory(laboratory);
        otherParam.setIsOrderAll(isOrderAll);
        otherParam.setCheckUserFlag(checkUserFlag);
        otherParam.setCheckUserId(SecurityUtils.getUserId());
        IPage<SampleOrderDto> sampleOrderDtoIPage = insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), otherParam);
        // 拼接检验人根据检验项来
        if(CollectionUtils.isEmpty(sampleOrderDtoIPage.getRecords())){
            return sampleOrderDtoIPage;
        }
        List<Integer> orderIds = new ArrayList<>();
        for (SampleOrderDto record : sampleOrderDtoIPage.getRecords()) {
            orderIds.add(record.getId());
        }
        List<CheckUserDto> checkUserDtoList = insProductMapper.selectCheckUserNameByOrderIds(orderIds);
        for (SampleOrderDto record : sampleOrderDtoIPage.getRecords()) {
            Integer orderId = record.getId();
            for (CheckUserDto checkUserDto : checkUserDtoList) {
                if(orderId.equals(checkUserDto.getOrderId())) {
                    record.setTestingName(checkUserDto.getCheckUserNames());
                    break;
                }
            }
        }
        return sampleOrderDtoIPage;
    }
@@ -120,7 +147,6 @@
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getState, 1)
                .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
        // 批量添加检验任务状态表
        List<InsOrderState> insOrderStateList = insProducts.stream().map(insProduct -> {
            InsOrderState insOrderState = new InsOrderState();
@@ -184,10 +210,18 @@
            auxiliaryOutputWorkingHours.setCheck(userId);//检测人
            auxiliaryOutputWorkingHours.setPrice(insProduct.getPrice());//单价
            auxiliaryOutputWorkingHours.setSampleId(insProduct.getInsSampleId());//样品id
            auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//检验项id
            auxiliaryOutputWorkingHours.setInsProductId(Math.toIntExact(insProduct.getId()));//检验项id
            return auxiliaryOutputWorkingHours;
        }).collect(Collectors.toList());
        // 初次分配检验人,各个检验项默认订单的检验人
        List<Integer> insProductIds  = insProductList.stream().map(insproduct -> {
            return Math.toIntExact(insproduct.getId());
        }).collect(Collectors.toList());
        if(!CollectionUtils.isEmpty(insProductIds)){
            insProductMapper.batchUpdateInsProductCheckUserId(insProductIds, userId);
        }
        auxiliaryOutputWorkingHoursTemporaryService.saveBatch(outputWorkingHours);
        return 1;
@@ -293,7 +327,7 @@
                    ip2.addAll(insProducts);
                }
                for (InsProduct product : ip2) {
                    product.setStandardMethodListId(a.getInsulating().getStandardMethodListId());
                    product.setStandardMethodListId(Long.valueOf(a.getInsulating().getStandardMethodListId()));
                }
                addInsProductMethod(a.getId(), ip2);
            }
@@ -311,7 +345,7 @@
                    ip2.addAll(insProducts);
                }
                for (InsProduct product : ip2) {
                    product.setStandardMethodListId(a.getAuxiliaryWireCore().getStandardMethodListId());
                    product.setStandardMethodListId(Long.valueOf(a.getAuxiliaryWireCore().getStandardMethodListId()));
                }
                addInsProductMethod(a.getId(), ip2);
            }
@@ -491,7 +525,7 @@
            }
            // 生成编号
            String no = numberGenerator.generateNumberWithPrefix(3,
                    "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
                    "JCZX/SP-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
                    InsOrder::getEntrustCode);
            // 判断是否是季度检验, 是季度检验取消原材料季度检验下单
            if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) {
@@ -1023,6 +1057,22 @@
        }
    }
    /**
     * 判断是否为检验人员
     * @param userId
     * @return
     */
    public boolean isCheckUser(Integer userId) {
        List<User> userList = userMapper.selectQualityUserList();
        for (User user : userList) {
            if(userId.equals(user.getId())){
                return true;
            }
        }
        return false;
    }
}