zss
2024-11-26 f1ba10159c6872b859e5ab1255ed17ae644d94d7
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -87,9 +87,6 @@
    @Value("${wordUrl}")
    private String wordUrl;
    @Value("${twoCode}")
    private String twoCode;
    @Resource
    WordUtils wordUtils;
@@ -120,14 +117,14 @@
    @Resource
    private UserMapper userMapper;
    @Resource
    private CustomMapper customMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private InsOrderFileMapper insOrderFileMapper;
    @Resource
    FuSheUtils fuSheUtils;
    @Override
    public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
@@ -177,20 +174,23 @@
    }
    @Override
    public Map<String, Object> doInsOrder(Integer id, String laboratory) {
    public Map<String, Object> doInsOrder(Integer sampleId, String laboratory) {
        InsSample insSample = insSampleMapper.selectById(sampleId);
        InsOrder insOrder = new InsOrder();
        insOrder.setId(id);
        InsOrder order = insOrderMapper.selectById(id);
        insOrder.setId(insSample.getInsOrderId());
        InsOrder order = insOrderMapper.selectById(insSample.getInsOrderId());
        if (BeanUtil.isEmpty(order.getInsTime())) {
            insOrder.setInsTime(LocalDateTime.now());
            insOrder.setInsTime(LocalDateTime.now());//订单的检验时间
            insOrderMapper.updateById(insOrder);
            //更新检验任务表的检验时间
            insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                    .eq(InsOrderState::getInsOrderId, id)
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, sampleId)
                    .eq(InsOrderState::getLaboratory, laboratory)
                    .set(InsOrderState::getInsTime, LocalDateTime.now())
                    .set(InsOrderState::getInsState, 1));
        }
        Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory);
        Map<String, Object> map = insOrderService.getInsOrderAndSample(sampleId, laboratory);
        List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class);
        map.put("sampleProduct", list);
        return map;
@@ -217,9 +217,6 @@
                        insProduct.setInsProductResult(insProductResult);
                    }
                }
                /*if (insProducts.size() == 0) {
                    insProducts = insSampleMapper.getIns2Product1(id, laboratory);
                }*/
                break;
            case 1:
                //光纤带
@@ -267,12 +264,10 @@
    }
    @Override
    public List<String> checkSubmitPlan(Integer orderId, String laboratory) {
    public List<String> checkSubmitPlan(Integer sampleId, String laboratory) {
        List<String> collect = new ArrayList<>();
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getInsSampleId, sampleId)
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsResult, 0));
@@ -290,13 +285,23 @@
        map.put("head", PrintChina.printChina(InsOrderFile.class));
        Integer insOrderId = insOrderFile.getInsOrderId();
        insOrderFile.setInsOrderId(null);
        IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId);
        String sonLaboratory = null;
        Integer sampleId = null;
        if (ObjectUtils.isNotEmpty(insOrderFile.getSonLaboratory())) {
            sonLaboratory = insOrderFile.getSonLaboratory();
            insOrderFile.setSonLaboratory(null);
        }
        if (ObjectUtils.isNotEmpty(insOrderFile.getInsSampleId())) {
            sampleId = insOrderFile.getInsSampleId();
            insOrderFile.setInsSampleId(null);
        }
        IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId, sonLaboratory,sampleId);
        map.put("body", insOrderFileIPage);
        return map;
    }
    @Override
    public int uploadFile(Integer orderId, MultipartFile file) {
    public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
        String urlString;
        String pathName;
        String path;
@@ -304,6 +309,12 @@
        String contentType = file.getContentType();
        InsOrderFile insOrderFile = new InsOrderFile();
        insOrderFile.setInsOrderId(orderId);
        if (ObjectUtils.isNotEmpty(sampleId)) {
            insOrderFile.setInsSampleId(sampleId);
        }
        if (ObjectUtils.isNotEmpty(sonLaboratory)) {
            insOrderFile.setSonLaboratory(sonLaboratory);
        }
        insOrderFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // 是图片
@@ -319,22 +330,34 @@
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
            pathName = UUID.randomUUID() + "_"+file.getOriginalFilename().replace("#", "&");
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            insOrderFile.setFileUrl(pathName);
            return insOrderFileMapper.insert(insOrderFile);
            insOrderFileMapper.insert(insOrderFile);
            //如果是辐射试验(近场/远程上传的csv文件)
            String[] split = filename.split("\\.");
            if (ObjectUtils.isNotEmpty(sonLaboratory) && (sonLaboratory.equals("近场") || sonLaboratory.equals("远场")) &&
                    split[split.length - 1].equals("csv")) {
                //判断是哪种csv文件,是否有——
                if (sonLaboratory.equals("近场")) {
                    fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile);
                } else {
                    fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("附件上传错误");
            return 0;
        }
        return 0;
    }
    @Override
    public List<String> upPlanUser2(Integer orderId) {
        List<Integer> sampleId = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).in(InsProduct::getInsSampleId, sampleId)).stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList());
    public List<String> upPlanUser2(Integer sampleId) {
        List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, sampleId))
                .stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList());
        return sonLaboratory;
    }
@@ -352,17 +375,15 @@
        /*样品入库*/
        warehouseService.inWarehouse(trees, sampleCode);
        /*新增检验任务*/
        //先判断该订单是否有这个站点的项目
        //先判断该样品是否有这个站点的项目
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
                .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该订单没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该订单是否站点任务有结束试验
        //判断该订单是否站点任务有结束试验(只要任一任务结束试验都不能再次试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));
@@ -371,6 +392,7 @@
        }
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, insSample.getId())
                .eq(InsOrderState::getLaboratory, sonLaboratory));
        if (ObjectUtils.isNotEmpty(orderState)) {
            //继续试验
@@ -378,12 +400,11 @@
                orderState.setInsState(0);
                orderState.setNum(orderState.getNum() + 1);//递增
                insOrderStateMapper.updateById(orderState);
            } /*else {
                throw new ErrorException("该订单站点的任务已创建,无法再次创建!");
            }*/
            }
        } else {
            InsOrderState insOrderState = new InsOrderState();
            insOrderState.setInsOrderId(insSample.getInsOrderId());
            insOrderState.setInsSampleId(insSample.getId());
            insOrderState.setLaboratory(sonLaboratory);
            insOrderState.setInsState(0);
            insOrderState.setNum(1);//初始是第一次
@@ -396,30 +417,30 @@
    @Override
    public int outInsOrderState(String sonLaboratory, String sampleCode) {
        //判断该样品的检验任务是否已经结束(继续试验或者是结束试验)
        //先判断该订单是否有这个站点的项目
        //先判断该样品是否有这个站点的项目
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
                .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该订单没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该订单是否站点任务有(继续试验或者是结束试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));
                .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));
                    .eq(InsOrderState::getInsState, 6));//继续试验
            if (CollectionUtils.isEmpty(orderStates1)) {
                throw new ErrorException("该样品的检验任务还没有结束试验或继续试验,暂时无法出库!");
            }
        }
        warehouseService.outWarehouse(sampleCode);
        boolean a = true;
        warehouseService.outWarehouse(sampleCode, a);
        return 0;
    }
@@ -642,11 +663,13 @@
                int pId = Integer.parseInt(res.replaceAll("\\D+", ""));
                InsProduct insProduct = insProductMapper.selectById(pId);
                // 通过样本id获取订单id
                int orderId = insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId();
                int count = insProductMapper.selectInsProductCountByOrderId(orderId);
                InsSample insSample = insSampleMapper.selectById(insProduct.getInsSampleId());
                int orderId = insSample.getInsOrderId();
                int count = insProductMapper.selectInsProductCountByOrderId(insSample.getId());
                if (count == 0) {
                    insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsSampleId, insSample.getId())
                            .eq(InsOrderState::getLaboratory, insProduct.getSonLaboratory())
                            .set(InsOrderState::getInsState, 2));
                }
@@ -664,15 +687,15 @@
            throw new ErrorException("频率不能为空");
        }
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        //查询样品信息
        InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId());
        //查询检验单信息
        InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId());
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId())
                .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1"));// 确保只取一条记录
        //查询样品信息
        InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId());
        List<Integer> list = new ArrayList<>();
        /*新增检验项目检验值记录表(采取先删后增)*/
        insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery()
@@ -714,8 +737,9 @@
                //结论
                int ressult = 1;
                String valueStr = insProductResult2.getValue();
                String regex ="[\u4e00-\u9fa5]";
                if (!insProduct.getAsk().contains(",")) {
                    if (insProduct.getAsk().equals("/")) {
                    if (insProduct.getAsk().equals("/") || Pattern.compile(regex).matcher(insProduct.getAsk()).find()) {
                        ressult = 3; //不判定
                    } else if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
                        ressult = 0; //不合格
@@ -777,10 +801,11 @@
            insSampleMapper.updateById(insSample);
        }
        /*判断该站点的检验项目是否全部已检*/
        int count = insProductMapper.selectInsProductCountByOrderId(insProductResultDtos.getOrderId());
        int count = insProductMapper.selectInsProductCountByOrderId(insSample.getInsOrderId());
        if (count == 0) {
            insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
                    .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId())
                    .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
                    .set(InsOrderState::getInsState, 2));
        }
@@ -794,6 +819,8 @@
        insProductResultMapper.delete(Wrappers.<InsProductResult>lambdaQuery()
                .eq(InsProductResult::getInsProductId, insProductResult.getInsProductId())
                .eq(InsProductResult::getNum, insProductResult.getNum()));
        insProductResult.setEquipValue("[{\"v\":\"" + insProductResult.getEquipValue() + "\"}]");
        insProductResult.setEquipName("[{\"v\":\"" + insProductResult.getEquipName() + "\"}]");
        insProductResultMapper.insert(insProductResult);
        return 0;
    }
@@ -847,7 +874,7 @@
            if (ObjectUtils.isEmpty(s)) {
                continue;
            }
            double numericValue = Double.parseDouble(s);
            double numericValue = Math.abs(Double.parseDouble(s));
            boolean valid = Arrays.stream(valuesToCheck)
                    .allMatch(v -> getResult(numericValue, v));
            if (!valid) {
@@ -859,10 +886,10 @@
    //交接
    @Override
    public int upPlanUser(Integer userId, Integer orderId, String sonLaboratory) {
    public int upPlanUser(Integer userId, Integer sampleId, String sonLaboratory) {
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(userId);
        insSampleUser.setInsSampleId(orderId);
        insSampleUser.setInsSampleId(sampleId);
        insSampleUser.setState(0);
        insSampleUser.setSonLaboratory(sonLaboratory);
        return insSampleUserMapper.insert(insSampleUser);
@@ -870,47 +897,47 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException {
    public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException {
        LocalDateTime now = LocalDateTime.now();
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        List<InsUnPass> insUnPasses = new ArrayList<>();
        /*样品下的项目只要有一个项目不合格则检验结果为0,否则为1*/
        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
        for (InsSample insSample : samples) {
            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, insSample.getId())
                    .eq(InsProduct::getSonLaboratory, laboratory)
                    .eq(InsProduct::getState, 1));
            List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
            if (results.contains(0)) {
                insSample.setInsResult(0);
            } else {
                insSample.setInsResult(1);
            }
            insSampleMapper.updateById(insSample);
            /*复核后,将不合格的项目信息添加到ins_un_pass表中*/
            for (InsProduct insProduct : insProducts) {
                if (insProduct.getInsResult() == 0) {
                    InsUnPass insUnPass = new InsUnPass();
                    insUnPass.setId(null);
                    insUnPass.setModel(insSample.getModel());
                    insUnPass.setSample(insSample.getSample());
                    insUnPass.setInspectionItem(insProduct.getInspectionItem());
                    insUnPass.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
                    insUnPass.setLastValue(insProduct.getLastValue());
                    insUnPass.setEntrustCode(insOrderMapper.selectById(orderId).getEntrustCode());
                    List<Integer> userIds = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery().eq(InsProductUser::getInsProductId, insProduct.getId())).stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
                    String name = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
                    insUnPass.setName(name);
                    insUnPasses.add(insUnPass);
                }
        InsSample insSample = insSampleMapper.selectById(sampleId);
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getState, 1));
        List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
        if (results.contains(0)) {
            insSample.setInsResult(0);
        } else {
            insSample.setInsResult(1);
        }
        insSampleMapper.updateById(insSample);
        /*复核后,将不合格的项目信息添加到ins_un_pass表中*/
        InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId());
        for (InsProduct insProduct : insProducts) {
            if (insProduct.getInsResult() == 0) {
                InsUnPass insUnPass = new InsUnPass();
                insUnPass.setId(null);
                insUnPass.setModel(insSample.getModel());
                insUnPass.setSample(insSample.getSample());
                insUnPass.setInspectionItem(insProduct.getInspectionItem());
                insUnPass.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
                insUnPass.setLastValue(insProduct.getLastValue());
                insUnPass.setEntrustCode(insOrder.getEntrustCode());
                List<Integer> userIds = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery().eq(InsProductUser::getInsProductId, insProduct.getId())).stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
                String name = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
                insUnPass.setName(name);
                insUnPasses.add(insUnPass);
            }
        }
        insUnPassService.saveBatch(insUnPasses);
        /*type=0  再次试验; type=1 继续试验 ; type=2 结束试验*/
        // 查询根据 id 倒序排列的第一条记录
        InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, orderId)
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, sampleId)
                .eq(InsOrderState::getLaboratory, laboratory)
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1")); // 确保只取一条记录
@@ -933,9 +960,10 @@
                            .set(InsOrderState::getCreateTime, LocalDateTime.now()));
                    break;
                case 1:
                    //继续试验:该站点任务结束(可以再次扫码检验);
                    //继续试验:该样品该站点任务结束(可以再次扫码检验);
                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                            .eq(InsOrderState::getInsSampleId, sampleId)
                            .eq(InsOrderState::getLaboratory, laboratory)
                            .set(InsOrderState::getInsState, 6)
                            .set(InsOrderState::getVerifyTell, tell)
@@ -944,25 +972,23 @@
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                            .eq(InsOrderState::getInsSampleId, sampleId)
                            .eq(InsOrderState::getLaboratory, laboratory)
                            .set(InsOrderState::getInsState, 5)
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //如果订单类型是原理样机,则该订单直接闭环
                    InsOrder insOrder = insOrderMapper.selectById(orderId);
                    if (insOrder.getFormType().equals("原理样机")) {
                        for (InsSample sample : samples) {
                            //出库
                            try{
                                outInsOrderState(laboratory,sample.getSampleCode());
                            }catch (Exception e){
                        //出库
                        try {
                            outInsOrderState(laboratory, insSample.getSampleCode());
                        } catch (Exception e) {
                            }
                        }
                        insOrder.setState(4);
                        insOrderMapper.updateById(insOrder);
                    }
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
@@ -996,10 +1022,10 @@
    @Override
    public int submitPlan(SubmitPlanDto submitPlanDto) {
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, submitPlanDto.getOrderId()).select(InsSample::getId));
        InsSample insSample = insSampleMapper.selectById(submitPlanDto.getSampleId());
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1"));// 确保只取一条记录
@@ -1012,16 +1038,15 @@
        insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null);
        insOrderUser.setTerm(ObjectUtils.isNotEmpty(submitPlanDto.getTerm()) ? submitPlanDto.getTerm() : null);
        insOrderUserMapper.insert(insOrderUser);
        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory())
                .eq(InsProduct::getState, 1)
                .and(wrapper -> wrapper
                        .isNull(InsProduct::getInsResult)
                        .or()
                        .eq(InsProduct::getInsResult, 2)
                ));
                )
                .eq(InsProduct::getState, 1));
        if (insProducts.size() > 0) {
            String str = "";
            int count = 0;
@@ -1053,19 +1078,13 @@
            }
        }
        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .set(InsOrderState::getInsState, 3)
                .set(InsOrderState::getVerifyUser, submitPlanDto.getVerifyUser()));
        InsOrder insOrder = insOrderMapper.selectById(submitPlanDto.getOrderId());
        /*这个情况先关闭----如果是C类订单且是下发到质量部,则直接复核通过(结束试验)*/
//        if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("质量部")) {
//            try {
//                verifyPlan(orderId, laboratory, 2, null);
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        } else {
        InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId());
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        //LIMS系统消息推送
        InformationNotification info = new InformationNotification();
@@ -1078,37 +1097,37 @@
        info.setViewStatus(false);
        info.setJumpPath("b1-inspect-order-plan");
        informationNotificationService.addInformationNotification(info);
        //todo 企业微信消息推送@zss
           /* HashMap<String, Object> map = new HashMap<>();
            String account = userMapper.selectById(userId).getAccount();
            map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔)
            map.put("toparty", "");//接收部门id
            map.put("totag", "");//消息标签id
            map.put("msgtype", "text");//消息类型 text:文本
            map.put("agentid", 1000517);//应用id
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("content", "您有一条检验任务待复核消息,订单号是:"+insOrder.getEntrustCode()+",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            map.put("text", hashMap);//消息内容
            map.put("safe", 0);//是否保密消息.0否
            map.put("enable_id_trans", 0);//是否开启id转译.0否
            map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否
            qywxApi.send(map);*/
//        }
        //  todo 企业微信消息推送@zss
        HashMap<String, Object> map = new HashMap<>();
        String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount();
        map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔)
        map.put("toparty", "");//接收部门id
        map.put("totag", "");//消息标签id
        map.put("msgtype", "text");//消息类型 text:文本
        map.put("agentid", 1000517);//应用id
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
        map.put("text", hashMap);//消息内容
        map.put("safe", 0);//是否保密消息.0否
        map.put("enable_id_trans", 0);//是否开启id转译.0否
        map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否
        //qywxApi.send(map);
        //复核人--检验单相关负责人
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(submitPlanDto.getVerifyUser());
        insSampleUser.setInsSampleId(submitPlanDto.getOrderId());
        insSampleUser.setInsSampleId(submitPlanDto.getSampleId());
        insSampleUser.setState(1);
        insSampleUser.setSonLaboratory(submitPlanDto.getLaboratory());
        insSampleUserMapper.insert(insSampleUser);
        /*生成电路试验的站点报告并上传到附件中*/
        if (submitPlanDto.getLaboratory().equals("电路试验")) {
            wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
//            try {
//                wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
//            } catch (Exception e) {
//                throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!");
//            }
            //wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
            //todo 电路站点报告 正式库部署放开
            try {
                wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
            } catch (Exception e) {
                throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!");
            }
        }
        /*// 删除数采采集次数
        String key = "frequency" + ":" + submitPlanDto.getEntrustCode() + ":*";
@@ -1139,27 +1158,26 @@
                }
                for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours : submitPlanDto.getAuxiliaryOutputWorkingHoursList()) {
                    InsProduct insProduct = insProductMapper.selectById(auxiliaryOutputWorkingHours.getInsProductId());
                    if (isWithinRange) {
                        //在时间内就是正常上班
                        auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//非加班委托单号
                        auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//非加班工时
                        auxiliaryOutputWorkingHours.setAmount(1);//非加班数量
                    } else {
                        //加班
                        auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//加班委托单号
                        auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//加班工时
                        auxiliaryOutputWorkingHours.setOvertimeAmount(1);//加班数量
                    }
                    auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组
                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                    auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期
                    LocalDateTime localDateTime = LocalDateTime.now();
                    DateTime parse = DateUtil.parse(localDateTime.format(formatter));
                    auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期
                    auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
                    auxiliaryOutputWorkingHours.setCheck(userId);//检测人
                    auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                        if (isWithinRange) {
                            //在时间内就是正常上班
                            auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//非加班委托单号
                            auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//非加班工时
                            auxiliaryOutputWorkingHours.setAmount(1);//非加班数量
                        } else {
                            //加班
                            auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//加班委托单号
                            auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//加班工时
                            auxiliaryOutputWorkingHours.setOvertimeAmount(1);//加班数量
                        }
                        auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组
                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                        auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期
                        LocalDateTime localDateTime = LocalDateTime.now();
                        DateTime parse = DateUtil.parse(localDateTime.format(formatter));
                        auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期
                        auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
                        auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                }
            }
        }