zjh
2025-03-27 4f1eae9865fca2831ea2966d003b2c57222e036d
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -1652,81 +1652,270 @@
    @GetMapping("/getzongjianyishengchakanyichangxiangmu")
    @ApiOperation(value = "总检查看异常项目接口")
    public AjaxResult getzongjianyishengchakanyichangxiangmu(@RequestParam String tjNum) {
        if (StrUtil.isNotBlank(tjNum)) {
            TjOrder one = orderService.getOrderByTjNum(tjNum);
        try {
            if (StrUtil.isNotBlank(tjNum)) {
                TjOrder one = orderService.getOrderByTjNum(tjNum);
            if (one == null) {
                return AjaxResult.error("暂无数据!!");
                if (one == null) {
                    return AjaxResult.error("暂无数据!!");
                }
                yichangxiangmu(tjNum);
                LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderYcxm::getTjh, tjNum);
                List<TjOrderYcxm> list = ycxmService.list(wq);
                if (null != list && !list.isEmpty()) {
                    Collections.reverse(list);
                    return getOrderYcxmList(list);
                } else {
                    return zongjianyishengchakanyichangxiangmu(tjNum);
                }
            }
            LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
            wq.eq(TjOrderYcxm::getTjh, tjNum);
            List<TjOrderYcxm> list = ycxmService.list(wq);
            if (null != list && !list.isEmpty()) {
                Collections.reverse(list);
                return getOrderYcxmList(list);
            } else {
                return zongjianyishengchakanyichangxiangmu(tjNum);
            }
            return AjaxResult.error();
        } catch (Exception ex) {
            //throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.error();
        }
        return AjaxResult.error();
    }
    private static AjaxResult getOrderYcxmList(List<TjOrderYcxm> list) {
        Map<String, List<TjOrderYcxm>> map = list.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
        List<Map<String, Object>> maps = new ArrayList<>();
        for (Map.Entry<String, List<TjOrderYcxm>> entry : map.entrySet()) {
            Map<String, Object> parent = new HashMap<>();
            List<TjOrderDetail> dels = new ArrayList<>();
            for (TjOrderYcxm ycxm : entry.getValue()) {
                TjOrderDetail detail = new TjOrderDetail();
                detail.setOrderDetailId(Long.valueOf(ycxm.getId()));
                detail.setProName(ycxm.getJcxm());
                detail.setProResult(ycxm.getJcjg());
                detail.setStanId(ycxm.getCkfw());
                detail.setProAdvice(ycxm.getDw());
                List<Map<String, Object>> btnrlist = new ArrayList<>();
                String jynr = ycxm.getJynr();
                JSONArray array = JSONUtil.parseArray(jynr);
                for (Object object : array) {
                    Map<String, Object> objectMap = new HashMap<>();
                    JSONObject jsonObject = (JSONObject) object;
                    String bt = jsonObject.getStr("bt");
                    String nr = jsonObject.getStr("nr");
                    objectMap.put("bt", bt);
                    objectMap.put("nr", nr);
                    if (null != bt || null != nr) btnrlist.add(objectMap);
                }
                detail.setAdvices(btnrlist);
                dels.add(detail);
        try {
            List<Map<String, Object>> maps = getYcxmMapList(list);
            if (!maps.isEmpty()) {
                List<Map<String, Object>> collect1 = maps.stream()
                        .sorted((map1, map2) -> map2.get("proName").toString().compareTo(map1.get("proName").toString()))
                        .collect(Collectors.toList());
                return AjaxResult.success(collect1);
            }
            parent.put("proName", entry.getKey());
            parent.put("jyjc", entry.getValue().get(0).getJyjc());
            parent.put("sone", dels);
            maps.add(parent);
            return AjaxResult.success(maps);
        } catch (Exception ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.error();
        }
        //            List<Map<String, Object>> mapList = zongjianyishengchakanyichangxiangmu(tjNum);
//            List<Map<String, Object>> collect = mapList.stream()
//                    .filter(b -> maps.stream()
//                            .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 过滤掉在 maps 中存在的相同元素
//                    .collect(Collectors.toList());
//            if(!collect.isEmpty()){
//                maps.addAll(collect);
//            }
        if (!maps.isEmpty()) {
            List<Map<String, Object>> collect1 = maps.stream()
                    .sorted((map1, map2) -> map2.get("proName").toString().compareTo(map1.get("proName").toString()))
                    .collect(Collectors.toList());
            return AjaxResult.success(collect1);
        }
        return AjaxResult.success(maps);
    }
    private static List<Map<String, Object>> getYcxmMapList(List<TjOrderYcxm> list) {
        try {
            Map<String, List<TjOrderYcxm>> map = list.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
            List<Map<String, Object>> maps = new ArrayList<>();
            for (Map.Entry<String, List<TjOrderYcxm>> entry : map.entrySet()) {
                Map<String, Object> parent = new HashMap<>();
                List<TjOrderDetail> dels = new ArrayList<>();
                for (TjOrderYcxm ycxm : entry.getValue()) {
                    TjOrderDetail detail = new TjOrderDetail();
                    detail.setOrderDetailId(Long.valueOf(ycxm.getId()));
                    detail.setProName(ycxm.getJcxm());
                    detail.setProResult(ycxm.getJcjg());
                    detail.setStanId(ycxm.getCkfw());
                    detail.setProAdvice(ycxm.getDw());
                    List<Map<String, Object>> btnrlist = new ArrayList<>();
                    String jynr = ycxm.getJynr();
                    JSONArray array = JSONUtil.parseArray(jynr);
                    for (Object object : array) {
                        Map<String, Object> objectMap = new HashMap<>();
                        JSONObject jsonObject = (JSONObject) object;
                        String bt = jsonObject.getStr("bt");
                        String nr = jsonObject.getStr("nr");
                        objectMap.put("bt", bt);
                        objectMap.put("nr", nr);
                        if (null != bt || null != nr) btnrlist.add(objectMap);
                    }
                    detail.setAdvices(btnrlist);
                    dels.add(detail);
                }
                parent.put("proName", entry.getKey());
                parent.put("jyjc", entry.getValue().get(0).getJyjc());
                parent.put("sone", dels);
                maps.add(parent);
            }
            return maps;
        } catch (NumberFormatException ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return null;
        }
    }
    private AjaxResult zongjianyishengchakanyichangxiangmu(String tjNumber) {
        List<Map<String, Object>> list = new ArrayList<>();
        try {
            List<TjOrderYcxm> tjOrderYcxms = new ArrayList<>();
            TjOrder order = orderService.getOrderByTjNum(tjNumber);
            if (null != order) {
                List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderYcxm::getTjh, tjNumber);
                List<TjOrderYcxm> ycxmList = ycxmService.list(wq);
                if (null != remarkList && !remarkList.isEmpty()) {
                    for (TjOrderRemark remark : remarkList) {
                        Map<String, Object> parent = new HashMap<>();
                        if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                            List<TjOrderDetail> dels = new ArrayList<>();
                            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                                if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                                    if (null != tjOrderDetail.getProId() && null != tjOrderDetail.getYcbz()) {
                                        if (!tjOrderDetail.getDeptId().equals("2")) {
                                            List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                    , tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                            .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", ""), tjOrderDetail.getYcbz().replaceAll(" ", ""), tjNumber
                                                    , tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                            .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "")
                                                    , tjOrderDetail.getProResult());
                                            if (null != maps && !maps.isEmpty()) {
                                                tjOrderDetail.setAdvices(maps);
                                            }
                                        } else {
                                            String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                            List<Map<String, Object>> mapList = new ArrayList<>();
                                            for (String s : split) {
                                                s = s.replaceAll("\n", "");
    //                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                                Map<String, Object> maps = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(), s, "0");
                                                if (null != maps && !maps.isEmpty()) {
                                                    Object bt = maps.get("bt");
                                                    Object nr = maps.get("nr");
                                                    if (null != bt || null != nr) mapList.add(maps);
                                                }
                                            }
                                            tjOrderDetail.setAdvices(mapList);
                                        }
                                    }
                                    if (null == ycxmList || ycxmList.isEmpty()) {
                                        TjOrderYcxm ycxm = new TjOrderYcxm();
                                        ycxm.setTjh(tjNumber);
                                        ycxm.setParentName(remark.getProName());
                                        ycxm.setJcxm(tjOrderDetail.getProName());
                                        ycxm.setJcjg(tjOrderDetail.getProResult());
                                        ycxm.setCkfw(tjOrderDetail.getStanId());
                                        ycxm.setDw(tjOrderDetail.getProAdvice());
                                        ycxm.setJynr(JSONUtil.toJsonStr(tjOrderDetail.getAdvices()));
                                        ycxm.setJyjc(remark.getJyjc());
                                        if (ycxmService.save(ycxm)) {
                                            tjOrderYcxms.add(ycxm);
                                        }
                                    }
                                    dels.add(tjOrderDetail);
                                }
                            }
                            if (!dels.isEmpty()) {
                                parent.put("proName", remark.getProName());
                                parent.put("jyjc", remark.getJyjc());
                                parent.put("sone", dels);
                                list.add(parent);
                            }
                        }
                    }
                    if (!tjOrderYcxms.isEmpty()) {
                        Collections.reverse(tjOrderYcxms);
                        return getOrderYcxmList(tjOrderYcxms);
                    }
                }
            }
            return AjaxResult.success(list);
        } catch (Exception ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.success(list);
        }
    }
    private void yichangxiangmu(String tjNumber) {
        try {
            List<TjOrderYcxm> tjOrderYcxmList= ycxmService.selectListByTjh(tjNumber);
            if(null !=tjOrderYcxmList && !tjOrderYcxmList.isEmpty()){
            List<Map<String, Object>> list = new ArrayList<>();
            TjOrder order = orderService.getOrderByTjNum(tjNumber);
            if (null != order) {
                List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                if (null != remarkList && !remarkList.isEmpty()) {
                    for (TjOrderRemark remark : remarkList) {
                        Map<String, Object> parent = new HashMap<>();
                        if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                            List<TjOrderDetail> dels = new ArrayList<>();
                            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                                if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                                    if (null != tjOrderDetail.getProId() && null != tjOrderDetail.getYcbz()) {
                                        if (!tjOrderDetail.getDeptId().equals("2")) {
                                            List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                    , tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                            .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", ""), tjOrderDetail.getYcbz().replaceAll(" ", ""), tjNumber
                                                    , tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                            .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "")
                                                    , tjOrderDetail.getProResult());
                                            if (null != maps && !maps.isEmpty()) {
                                                tjOrderDetail.setAdvices(maps);
                                            }
                                        } else {
                                            String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                            List<Map<String, Object>> mapList = new ArrayList<>();
                                            for (String s : split) {
                                                s = s.replaceAll("\n", "");
                                                Map<String, Object> maps = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(), s, "0");
                                                if (null != maps && !maps.isEmpty()) {
                                                    Object bt = maps.get("bt");
                                                    Object nr = maps.get("nr");
                                                    if (null != bt || null != nr) mapList.add(maps);
                                                }
                                            }
                                            tjOrderDetail.setAdvices(mapList);
                                        }
                                    }
                                    dels.add(tjOrderDetail);
                                }
                            }
                            if (!dels.isEmpty()) {
                                parent.put("proName", remark.getProName());
                                parent.put("jyjc", remark.getJyjc());
                                parent.put("sone", dels);
                                list.add(parent);
                            }
                        }
                    }
                }
            }
                List<Map<String, Object>> maps = getYcxmMapList(tjOrderYcxmList);
                List<Map<String, Object>> collect = list.stream()
                        .filter(b -> maps.stream()
                                .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 过滤掉在 maps 中存在的相同元素
                        .collect(Collectors.toList());
                if(!collect.isEmpty()){
                    for (Map<String, Object> map : collect) {
                        for (TjOrderDetail detail : (List<TjOrderDetail>) map.get("sone")) {
                            TjOrderYcxm ycxm = new TjOrderYcxm();
                            ycxm.setTjh(tjNumber);
                            ycxm.setParentName(map.get("proName").toString());
                            ycxm.setJcxm(detail.getProName());
                            ycxm.setJcjg(detail.getProResult());
                            ycxm.setCkfw(detail.getStanId());
                            ycxm.setDw(detail.getProAdvice());
                            ycxm.setJynr(JSONUtil.toJsonStr(detail.getAdvices()));
                            ycxm.setJyjc(map.get("jyjc").toString());
                            ycxmService.save(ycxm);
                        }
                    }
                }
            }
        } catch (Exception ex) {
            log.error(ex.getMessage());
        }
    }
    @GetMapping("/delzongjianyishengchakanyichangxiangmu")
    @ApiOperation(value = "总检删除异常项目接口")
@@ -1735,88 +1924,7 @@
        return AjaxResult.success();
    }
    private AjaxResult zongjianyishengchakanyichangxiangmu(String tjNumber) {
        List<Map<String, Object>> list = new ArrayList<>();
        List<TjOrderYcxm> tjOrderYcxms = new ArrayList<>();
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if (null != order) {
            List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
            List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
            LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
            wq.eq(TjOrderYcxm::getTjh, tjNumber);
            List<TjOrderYcxm> ycxmList = ycxmService.list(wq);
            if (null != remarkList && !remarkList.isEmpty()) {
                for (TjOrderRemark remark : remarkList) {
                    Map<String, Object> parent = new HashMap<>();
                    if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                        List<TjOrderDetail> dels = new ArrayList<>();
                        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                            if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                                if (null != tjOrderDetail.getProId() && null != tjOrderDetail.getYcbz()) {
                                    if (!tjOrderDetail.getDeptId().equals("2")) {
                                        List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                , tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                        .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", ""), tjOrderDetail.getYcbz().replaceAll(" ", ""), tjNumber
                                                , tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                        .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "")
                                                , tjOrderDetail.getProResult());
                                        if (null != maps && !maps.isEmpty()) {
                                            tjOrderDetail.setAdvices(maps);
                                        }
                                    } else {
                                        String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                        List<Map<String, Object>> mapList = new ArrayList<>();
                                        for (String s : split) {
                                            s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                            Map<String, Object> maps = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(), s, "0");
                                            if (null != maps && !maps.isEmpty()) {
                                                Object bt = maps.get("bt");
                                                Object nr = maps.get("nr");
                                                if (null != bt || null != nr) mapList.add(maps);
                                            }
                                        }
                                        tjOrderDetail.setAdvices(mapList);
                                    }
                                }
                                if (null == ycxmList || ycxmList.isEmpty()) {
                                    TjOrderYcxm ycxm = new TjOrderYcxm();
                                    ycxm.setTjh(tjNumber);
                                    ycxm.setParentName(remark.getProName());
                                    ycxm.setJcxm(tjOrderDetail.getProName());
                                    ycxm.setJcjg(tjOrderDetail.getProResult());
                                    ycxm.setCkfw(tjOrderDetail.getStanId());
                                    ycxm.setDw(tjOrderDetail.getProAdvice());
                                    ycxm.setJynr(JSONUtil.toJsonStr(tjOrderDetail.getAdvices()));
                                    ycxm.setJyjc(remark.getJyjc());
                                    if (ycxmService.save(ycxm)) {
                                        tjOrderYcxms.add(ycxm);
                                    }
                                }
                                dels.add(tjOrderDetail);
                            }
                        }
                        if (!tjOrderYcxms.isEmpty()) {
                            Collections.reverse(tjOrderYcxms);
                            return getOrderYcxmList(tjOrderYcxms);
                        }
                        if (!dels.isEmpty()) {
                            parent.put("proName", remark.getProName());
                            parent.put("jyjc", remark.getJyjc());
                            parent.put("sone", dels);
                            list.add(parent);
                        }
                    }
                }
            }
        }
        return AjaxResult.success(list);
    }
    @GetMapping("/chushenyemianchakanxiangmujieguo")
    @ApiOperation(value = "初审页面查看项目结果接口")