zss
2025-05-19 2e12b4e5b7b6bd3e7d6841df6bf8ebd58adc03bd
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -146,7 +146,9 @@
        }
        String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//试验室
        insOrderPlanDTO.setSonLaboratory(null);
        IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userName, sonLaboratory, laboratory);
        String sampleCode = insOrderPlanDTO.getSampleCode();
        insOrderPlanDTO.setSampleCode(null);
        IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userName, sonLaboratory, laboratory,sampleCode);
        map.put("body", insOrderPage);
        return map;
    }
@@ -350,7 +352,7 @@
            insOrderFile.setFileUrl(pathName);
            insOrderFileMapper.insert(insOrderFile);
            String[] split = filename.split("\\.");
            if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("近场") && split[split.length - 1].equals("csv")) {
            if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("近场") && (split[split.length - 1].equals("csv") || split[split.length - 1].equals("xlsx"))) {
                fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile);
            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("远场") && split[split.length - 1].equals("xlsx")) {
                fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile);
@@ -425,6 +427,7 @@
            if (orderState.getInsState() == 6) {
                orderState.setInsState(0);
                orderState.setNum(orderState.getNum() + 1);//递增
                orderState.setCreateTime(LocalDateTime.now());
                insOrderStateMapper.updateById(orderState);
            }
        } else {
@@ -436,10 +439,17 @@
            insOrderState.setNum(1);//初始是第一次
            insOrderStateMapper.insert(insOrderState);
        }
        //同一样品在其他站点入库之后需要将其他站点的任务不显示
        insOrderStateMapper.update(null,Wrappers.<InsOrderState>lambdaUpdate()
        .eq(InsOrderState::getInsOrderId,insSample.getInsOrderId())
        .eq(InsOrderState::getInsSampleId,insSample.getId())
        .eq(InsOrderState::getInsState,6)//复核继续试验
        .ne(InsOrderState::getLaboratory,sonLaboratory)
        .set(InsOrderState::getIsOut,1));//不显示
        return 1;
    }
    //扫码出库
    //扫码出库(只有复核结束才会调用)
    @Override
    public int outInsOrderState(String sonLaboratory, String sampleCode, String entrustCode) {
        //判断该样品的检验任务是否已经结束(继续试验或者是结束试验)
@@ -454,22 +464,18 @@
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该任务是否是结束试验
        //判断该订单是否站点任务有(继续试验或者是结束试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));//结束试验
        if (CollectionUtils.isEmpty(orderStates)) {
            List<InsOrderState> orderStates1 = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, insSample.getId())
                    .eq(InsOrderState::getLaboratory, sonLaboratory)
                    .eq(InsOrderState::getInsState, 6));//继续试验
            if (CollectionUtils.isEmpty(orderStates1)) {
                throw new ErrorException("该样品的检验任务还没有结束试验或继续试验,暂时无法出库!");
            }
        InsOrderState orderStates = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getLaboratory,sonLaboratory)
                .eq(InsOrderState::getInsSampleId, insSample.getId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()));
        if (orderStates.getInsState()!=5) {
                throw new ErrorException("当前样品的站点任务并不是复核的结束试验,无需手动出库!");
        }
        boolean a = true;
        warehouseService.outWarehouse(sampleCode, a, entrustCode);
        orderStates.setIsOut(1);
        insOrderStateMapper.updateById(orderStates);//复核结束出库之后列表不显示
        warehouseService.outWarehouse(sampleCode, true, entrustCode);
        return 0;
    }
@@ -1188,6 +1194,15 @@
                            .set(InsOrderState::getInsState, 6)
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //继续试验自动出库
                    WarehouseHistory history = new WarehouseHistory();
                    history.setState(2);
                    history.setInsSampleId(sampleId);
                    history.setCellId(insSample.getCellId());
                    history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery()
                            .eq(WarehouseHistory::getInsSampleId, sampleId).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
                    insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate().eq(InsSample::getId, sampleId).set(InsSample::getCellId, null));
                    warehouseHistoryMapper.insert(history);
                    break;
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
@@ -1198,21 +1213,9 @@
                            .set(InsOrderState::getInsState, 5)
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //如果订单类型是原理样机,则该订单直接闭环
                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
                    for (InsSample sample : insSamples) {
                        try{
                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                        }catch (Exception e){
                        }
                    }
                    /*生成对应的检验报告*/
                    List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId());
                    createReport(insOrder.getId(),insReportDto1s);
                    //该订单闭环
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
@@ -1267,6 +1270,16 @@
                                .set(InsOrderState::getVerifyTell, tell)
                                .set(InsOrderState::getVerifyUser, userId));
                    }
                    //继续试验需要出库
                    WarehouseHistory history = new WarehouseHistory();
                    history.setState(2);
                    history.setInsSampleId(sampleId);
                    history.setCellId(insSample.getCellId());
                    history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery()
                            .eq(WarehouseHistory::getInsSampleId, sampleId).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
                    insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate()
                            .eq(InsSample::getId, sampleId).set(InsSample::getCellId, null));
                    warehouseHistoryMapper.insert(history);
                    break;
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
@@ -1277,6 +1290,7 @@
                                .eq(InsOrderState::getInsSampleId, sampleId)
                                .eq(InsOrderState::getLaboratory, laboratory)
                                .set(InsOrderState::getInsState, 5)
                                .set(InsOrderState::getIsOut,1)//复核结束出库之后列表不显示
                                .set(InsOrderState::getNum, record.getNum() - 1)//次数-1
                                .set(InsOrderState::getVerifyTell, tell)
                                .set(InsOrderState::getVerifyUser, userId));
@@ -1286,23 +1300,13 @@
                                .eq(InsOrderState::getInsSampleId, sampleId)
                                .eq(InsOrderState::getLaboratory, laboratory)
                                .set(InsOrderState::getInsState, 5)
                                .set(InsOrderState::getIsOut,1)//复核结束出库之后列表不显示
                                .set(InsOrderState::getVerifyTell, tell)
                                .set(InsOrderState::getVerifyUser, userId));
                    }
                    //出库
                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
                    for (InsSample sample : insSamples) {
                        try{
                            outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                        }catch (Exception e){
                        }
                    }
                    /*生成对应的检验报告*/
                    List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId());
                    createReport(insOrder.getId(),insReportDto1s);
                    //订单闭环
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
@@ -1422,7 +1426,7 @@
        info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
        info.setMessageType("2");
        info.setTheme("复核通知");
        info.setContent("您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample());
        info.setContent("您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode()+"站点是:"+submitPlanDto.getLaboratory() + ",样品名称为:" + insSample.getSample());
        info.setSenderId(userId);
        info.setConsigneeId(submitPlanDto.getVerifyUser());
        info.setViewStatus(false);
@@ -1442,16 +1446,6 @@
            } else {
                wordUtils.generateWord2(submitPlanDto.getTerm(), orderState);
            }
            //todo 电路站点报告 正式库部署放开
//            try {
//                if (!insOrder.getSampleType().equals("无源器件")) {
//                    wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
//                }else {
//                    wordUtils.generateWord2(submitPlanDto.getTerm(), orderState);
//                }
//            } catch (Exception e) {
//                throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!");
//            }
        }
        /*生成产量工时*/
        //校验如果这个人这个检测项目已经添加过了则不需要再新增
@@ -1511,7 +1505,7 @@
        map.put("msgtype", "text");//消息类型 text:文本
        map.put("agentid", 1000517);//应用id
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",样品名称为:" + insSample.getSample() +
        hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode()+"站点是:"+submitPlanDto.getLaboratory() + ",样品名称为:"  + ",样品名称为:" + insSample.getSample() +
                ",请前往LIMS系统查看。请点击<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
        map.put("text", hashMap);//消息内容
        map.put("safe", 0);//是否保密消息.0否