zhaowenxuan
2024-10-16 cd6114bf85d19e6bdcd6a17c66f34b8c838870d5
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
@@ -51,147 +51,156 @@
    /**
     * pas 检查申请信息保存
     *
     * @param savePacsApply
     * @return
     */
    private AjaxResult savePacsApply(SavePacsApply savePacsApply){
    private AjaxResult savePacsApply(SavePacsApply savePacsApply) {
        Map<String, Object> map = BeanUtil.beanToMap(savePacsApply);
        return getMethodService.getPacsData("savePacsApply", map);
    }
    /**
     * pas 结果获取
     *
     * @param regNo 检查申请单号
     * @return
     */
    public AjaxResult getPacsReport(String regNo){
    public AjaxResult getPacsReport(String regNo) {
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("regNo", regNo);
        return getMethodService.getPacsData("getPacsReport",hashMap);
        return getMethodService.getPacsData("getPacsReport", hashMap);
    }
    /**
     * pas 检查申请信息作废
     * @param regNo 检查申请单号
     *
     * @param regNo  检查申请单号
     * @param examNo 体检号
     * @param name 病人姓名
     * @param name   病人姓名
     * @return
     */
    public AjaxResult updatePacsApply(String regNo,String examNo,String name){
    public AjaxResult updatePacsApply(String regNo, String examNo, String name) {
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("regNo", regNo);
        hashMap.put("examNo", examNo);
        hashMap.put("name", name);
        log.info("作废检查 ->{}",JSONUtil.toJsonStr(hashMap));
        return getMethodService.getPacsData("updatePacsApply",hashMap);
        log.info("作废检查 ->{}", JSONUtil.toJsonStr(hashMap));
        return getMethodService.getPacsData("updatePacsApply", hashMap);
    }
    public Boolean save(TjOrder tjOrder, TjCustomer tjCustomer,List<TbTransition> detailList) {
    public Boolean save(TjOrder tjOrder, TjCustomer tjCustomer, List<TbTransition> detailList) {
        JSONArray array = JSONUtil.createArray();
        try {
            if (detailList != null && !detailList.isEmpty()) {
                LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                wq.in(TjProject::getDeptId,deptService.getJcDeptIds());
                List<TjProject> projects = projectService.list(wq);
                ArrayList<SavePacsApply> errorPacsList = new ArrayList<>();
                ArrayList<SavePacsApply> successPacsList = new ArrayList<>();
                int allTotal = 0;
                if (projects != null && !projects.isEmpty()){
                    for (TjProject project : projects) {
                        if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                            if (null != project.getHisXmbm()) {
                                SavePacsApply savePacsApply = new SavePacsApply();
                                savePacsApply.setExamNo(tjOrder.getCardId());
                                savePacsApply.setName(tjCustomer.getCusName());
                                savePacsApply.setSex(tjCustomer.getCusSex()==1?"2":"1");
                                AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday());
                                savePacsApply.setAge(String.valueOf(ageResult.getAge()));
                                savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit()));
                                savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd"));
                                savePacsApply.setCardNumber(tjCustomer.getCusIdcard());
                                savePacsApply.setTel(tjCustomer.getCusPhone());
                                Date date = new Date();
                                String regNo = "jk_"+DateFormatUtils.format(date, "yyyyMMddHHmmss") +"_"+project.getHisXmbm();
                                savePacsApply.setRegNo(regNo);
                                JSONObject jsonObject = JSONUtil.createObj();
                                jsonObject.putOpt("cardId",tjOrder.getCardId());
                                jsonObject.putOpt("regNo",regNo);
                                jsonObject.putOpt("name",tjCustomer.getCusName());
                                array.add(jsonObject);
                                savePacsApply.setCheckItemID(project.getHisXmbm());
                                savePacsApply.setCheckItem(project.getHisXmmc());
                                // TODO 检查部位
                                savePacsApply.setCheckPosition("");
                                savePacsApply.setAmount(project.getProPrice());
                                savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"));
                                savePacsApply.setApplyDepment("0101");
                                savePacsApply.setApplyDepmentName("体检中心");
                                savePacsApply.setApplyDoctor("00029");
                                savePacsApply.setApplyDoctorName("王健萍");
                                savePacsApply.setExecDepment("0101");
                                savePacsApply.setExecDepmentName("体检中心");
                                savePacsApply.setCreateTime(savePacsApply.getApplyDate());
                                // TODO 检查设备
                                savePacsApply.setDevice("");
                                // TODO 检查设备类型
                                savePacsApply.setDeviceType("");
                                log.info("检查申请 ->{}",JSONUtil.toJsonStr(savePacsApply));
                                AjaxResult ajaxResult = savePacsApply(savePacsApply);
                                String result = ajaxResult.get("data").toString();
                                JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result).getStr("Response"));
                                log.info("请求返回 ->{}",object);
                                String code = object.getStr("ResultCode");
                                allTotal++;
                                if(code.equals("0")){
                                    successPacsList.add(savePacsApply);
                                    LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                    tree.setCardId(tjOrder.getCardId());
                                    tree.setPationid(tjCustomer.getPationId());
                                    tree.setSqdh(regNo);
                                    tree.setFyhj(String.valueOf(project.getProPrice()));
                                    tree.setHisXmdm(project.getHisXmbm());
                                    tree.setType("检查");
                                    tree.setTjPrice(String.valueOf(project.getProPrice()));
                                    LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                    if (project.getSfzhfy().equals("Y"))
                                        wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm());
                                    else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm());
                                    List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                    if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                        String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                        LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                        wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                        LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                        LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                        wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                        LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                        tree.setXmfl(ejjfxmzd.getYjkmdm());
                                    }
                                    tree.setCreateTime(DateUtil.date());
                                    ltkjJianchajianyanTreeService.save(tree);
                                }else {
                                    errorPacsList.add(savePacsApply);
                                }
        ArrayList<SavePacsApply> errorPacsList = new ArrayList<>();
        ArrayList<SavePacsApply> successPacsList = new ArrayList<>();
        int allTotal = 0;
        if (detailList != null && !detailList.isEmpty()) {
            LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
            wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
            wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
            List<TjProject> projects = projectService.list(wq);
            try {
                allTotal = saveProjects(tjOrder, tjCustomer, projects, array, successPacsList, errorPacsList);
            } catch (Exception e) {
                log.error(e.getMessage());
                for (Object object : array) {
                    JSONObject jsonObject = (JSONObject) object;
                    updatePacsApply(jsonObject.getStr("regNo"), jsonObject.getStr("cardId"), jsonObject.getStr("name"));
                }
                return false;
            }
        }
        log.info("检查总计 ->{}个", allTotal);
        if (!errorPacsList.isEmpty()) {
            log.info("成功 ->{}", successPacsList);
            log.error("失败 ->{}", errorPacsList);
        }
        return true;
    }
    public int saveProjects(TjOrder tjOrder, TjCustomer tjCustomer, List<TjProject> projects, JSONArray array, ArrayList<SavePacsApply> successPacsList, ArrayList<SavePacsApply> errorPacsList) {
        int allTotal = 0;
        if (projects != null && !projects.isEmpty()) {
            for (TjProject project : projects) {
                if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                    if (null != project.getHisXmbm()) {
                        SavePacsApply savePacsApply = new SavePacsApply();
                        savePacsApply.setExamNo(tjOrder.getCardId());
                        savePacsApply.setName(tjCustomer.getCusName());
                        savePacsApply.setSex(tjCustomer.getCusSex() == 1 ? "2" : "1");
                        AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday());
                        savePacsApply.setAge(String.valueOf(ageResult.getAge()));
                        savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit()));
                        savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd"));
                        savePacsApply.setCardNumber(tjCustomer.getCusIdcard());
                        savePacsApply.setTel(tjCustomer.getCusPhone());
                        Date date = new Date();
                        String regNo = "jk_" + DateFormatUtils.format(date, "yyyyMMddHHmmss") + "_" + project.getHisXmbm();
                        savePacsApply.setRegNo(regNo);
                        JSONObject jsonObject = JSONUtil.createObj();
                        jsonObject.putOpt("cardId", tjOrder.getCardId());
                        jsonObject.putOpt("regNo", regNo);
                        jsonObject.putOpt("name", tjCustomer.getCusName());
                        array.add(jsonObject);
                        savePacsApply.setCheckItemID(project.getHisXmbm());
                        savePacsApply.setCheckItem(project.getHisXmmc());
                        // TODO 检查部位
                        savePacsApply.setCheckPosition("");
                        savePacsApply.setAmount(project.getProPrice());
                        savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"));
                        savePacsApply.setApplyDepment("0101");
                        savePacsApply.setApplyDepmentName("体检中心");
                        savePacsApply.setApplyDoctor("00029");
                        savePacsApply.setApplyDoctorName("王健萍");
                        savePacsApply.setExecDepment("0101");
                        savePacsApply.setExecDepmentName("体检中心");
                        savePacsApply.setCreateTime(savePacsApply.getApplyDate());
                        // TODO 检查设备
                        savePacsApply.setDevice("");
                        // TODO 检查设备类型
                        savePacsApply.setDeviceType("");
                        log.info("检查申请 ->{}", JSONUtil.toJsonStr(savePacsApply));
                        AjaxResult ajaxResult = savePacsApply(savePacsApply);
                        String result = ajaxResult.get("data").toString();
                        JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result).getStr("Response"));
                        log.info("请求返回 ->{}", object);
                        String code = object.getStr("ResultCode");
                        allTotal++;
                        if (code.equals("1")) {
                            successPacsList.add(savePacsApply);
                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                            tree.setCardId(tjOrder.getCardId());
                            tree.setPationid(tjCustomer.getPationId());
                            tree.setSqdh(regNo);
                            tree.setFyhj(String.valueOf(project.getProPrice()));
                            tree.setHisXmdm(project.getHisXmbm());
                            tree.setType("检查");
                            tree.setTjPrice(String.valueOf(project.getProPrice()));
                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                            if (project.getSfzhfy().equals("Y"))
                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm());
                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm());
                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                            }
                            tree.setCreateTime(DateUtil.date());
                            ltkjJianchajianyanTreeService.save(tree);
                        } else {
                            errorPacsList.add(savePacsApply);
                        }
                    }
                }
                log.info("检查总计 ->{}个",allTotal);
                if (!errorPacsList.isEmpty()){
                    log.info("成功 ->{}",successPacsList);
                    log.error("失败 ->{}",errorPacsList);
                }
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            for (Object object : array) {
                JSONObject jsonObject = (JSONObject) object;
                updatePacsApply(jsonObject.getStr("regNo"), jsonObject.getStr("cardId"),jsonObject.getStr("name"));
            }
            return false;
        }
        return true;
        return allTotal;
    }
    /*         查询检查结果、更新查询状态           */