zjh
2024-06-26 33de5e90c14e44e1639c961a48e338c1da3d5624
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -2,6 +2,10 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -25,9 +29,11 @@
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDeptService;
import com.ltkj.system.service.ISysUserService;
import com.ltkj.web.controller.his.HisApiMethodService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.var;
import org.aspectj.weaver.AjAttribute;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -35,6 +41,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -95,6 +102,9 @@
    private LtkjHybgdService ltkjHybgdService;
    @Resource
    private LtkjHysqdService ltkjHysqdService;
    @Autowired
    private HisApiMethodService controller;
    @GetMapping("/getOperationPermissionsByTjNum")
@@ -269,7 +279,7 @@
                                   @ApiParam(value = "状态 0同意 1拒绝 默认同意") @RequestParam(defaultValue = "0") Integer status,
                                   @ApiParam(value = "驳回理由") @RequestParam(required = false) String remark) {
        int num = orderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) return AjaxResult.error("请先同步体检项目!");
        if (num > 0) return AjaxResult.error("请检查是否存在未检或延期项目");
        if (null != tjNumber) {
            Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
            SysUser sysUser = userService.getById(userId);
@@ -308,28 +318,19 @@
    @GetMapping("/dataSynchronization")
    @ApiOperation(value = "同步sql server数据到本地数据库数据接口")
    @RepeatSubmit
    @Transactional
    public AjaxResult dataSynchronization(@RequestParam String tjNumber) {
        //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        if ("Y".equals(getInfoFromSqlData)) {
            TjOrder order = orderService.getOrderByTjNum(tjNumber);
            if (null != order) {
                List<LtkjHysqd> one = testMapper.getHysqdByTmh(order.getCardId());
                if (one != null && one.size() > 0) {
                    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                    ltkjHysqdService.saveBatch(one);
                    DynamicDataSourceContextHolder.clearDataSourceType();
                    for (LtkjHysqd ltkjHysqd : one) {
                        List<LtkjHybgd> one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh());
                        if (one1 != null && one1.size() > 0) {
                            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                            ltkjHybgdService.saveBatch(one1);
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
                    }
                }
//                List<LtkjExamJcsqd> one2 = testMapper.getExamJcsqdTmh(tjNumber);
        final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if(null !=order){
        //开启字典弹窗
        if ("Y".equals(getInfoFromSqlData)) {
                tbhyxm(order);
                //                List<LtkjExamJcsqd> one2 = testMapper.getExamJcsqdTmh(tjNumber);
//                if (one2 != null && one2.size() > 0) {
//                    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
//                    ltkjExamJcsqdService.saveBatch(one2);
@@ -344,12 +345,143 @@
//                    }
//                }
                //同步化验项目
                testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()),order.getTjNumber(),UserHoder.getLoginUser().getUserId());
                testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                //同步检查项目
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()),order.getTjNumber(),UserHoder.getLoginUser().getUserId());
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                asyncService.updateCheckType(order.getTjNumber());
        }
        //开启和his对接
        if(null !=sfkqdyhis && sfkqdyhis.equals("Y")){
            List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
            if(null !=baoGaoDans && baoGaoDans.size()>0){
//                List<LtkjHysqd> one = testMapper.getHysqdByTmh(order.getCardId());
//                if (one != null && one.size() > 0) {
//                    for (LtkjHysqd ltkjHysqd : one) {
//                        ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(ltkjHysqd.getTjh(), ltkjHysqd.getTmh());
//                        ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(ltkjHysqd.getTmh());
//                    }
//                }
//                for (String baoGaoDan : baoGaoDans) {
//                    Date dates = new Date();
                    Map<String,Object> map=new HashMap<>();
                    map.put("his_registration_id",order.getCardId());
                    map.put("ksbm","");
                    map.put("pationid","");
                    map.put("ksrq",DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                    map.put("jsrq",DateUtil.format(DateUtil.endOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                    map.put("pagecount",10);
                    map.put("page",1);
                    AjaxResult result = controller.Getlabreportinfo(map);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
                    String code = object.getStr("ResultCode");
                    if(null ==code || !code.equals("0")){
                        return AjaxResult.error("化验项目暂时无结果,请稍后同步!!!");
                    }
                    JSONArray data = object.getJSONArray("ResultData");
                    for (Object datum : data) {
                        JSONObject jsonObject = (JSONObject)datum;
                        LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                        if(null !=jybgid){
                            ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(order.getCardId(),jsonObject.getStr("JYBGID"));
                            ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jybgid.getTmh());
                        }
                        LtkjHysqd hysqd=new LtkjHysqd();
                        hysqd.setTjh(order.getCardId());
                        hysqd.setTmh(jsonObject.getStr("JYBGID"));
                        hysqd.setBbbh(jsonObject.getStr("BBDM"));
                        hysqd.setBbmc(jsonObject.getStr("BBMC"));
                        hysqd.setXmid(jsonObject.getStr("JYXMDM"));
                        hysqd.setXmmc(jsonObject.getStr("JYXMMC"));
                        hysqd.setSqsj(jsonObject.getStr("SQRQ"));
                        hysqd.setSqys(jsonObject.getStr("SQRBH"));
                        hysqd.setJgsj(jsonObject.getStr("JYBGRQ"));
                        hysqd.setSqrxm(jsonObject.getStr("SQRXM"));
                        hysqd.setSqdh(jsonObject.getStr("SQDBH"));
                        if (ltkjHysqdService.save(hysqd)) {
                            Map<String,Object> hashMap=new HashMap<>();
                            hashMap.put("jybgid",hysqd.getTmh());
                            AjaxResult bgdres = controller.Getlabdetailinfo(hashMap);
                            String result2 = getAjaxResult(bgdres);
                            JSONObject object1 = getJSONObject(result2);
                            String code1 = object1.getStr("ResultCode");
                            if(null ==code1 || !code1.equals("0")){
                                return AjaxResult.error("化验项目暂时无结果,请稍后同步!!!");
                            }
                            JSONArray datas = object1.getJSONArray("ResultData");
                            for (Object o : datas) {
                                JSONObject js = (JSONObject)o;
//                            ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jsonObject.getStr("JYBGID"));
                                LtkjHybgd bgd=new LtkjHybgd();
                                bgd.setTmh(hysqd.getTmh());
                                bgd.setJcxmid(js.getStr("JCZBDM"));
                                bgd.setJcxm(js.getStr("JCZBMC"));
                                bgd.setTdh(js.getStr(""));
                                bgd.setJyjg(js.getStr("JCZBJG"));
                                bgd.setJgdw(js.getStr("JLDW"));
                                bgd.setFwzdz(js.getStr(""));
                                bgd.setFwzgz(js.getStr(""));
                                bgd.setFwz(js.getStr("CKZFW"));
                                bgd.setJysj(js.getStr("BGRQ"));
                                bgd.setJyys(js.getStr("JCRBH"));
                                bgd.setShsj(js.getStr("BGRQ"));
                                bgd.setShsj(js.getStr("BGRQ"));
                                bgd.setShys(js.getStr("SHRBH"));
                                bgd.setYcbz(js.getStr("YCTS"));
//                            bgd.setTpurl(js.getStr(""));
                                ltkjHybgdService.save(bgd);
                            }
                        }
                    }
//                }
                //同步化验项目
                testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                //同步检查项目
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                asyncService.updateCheckType(order.getTjNumber());
            }
        }
        return AjaxResult.success("同步成功");
        }
        return AjaxResult.error();
    }
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
        String Response = JSONUtil.parseObj(builder).getStr("Response");
        return JSONUtil.parseObj(Response);
    }
    //获取方法返回值信息
    public String getAjaxResult(AjaxResult result) {
        return result.get("data").toString();
    }
    private void tbhyxm(TjOrder order) {
        List<LtkjHysqd> one = testMapper.getHysqdByTmh(order.getCardId());
        if (one != null && one.size() > 0) {
            for (LtkjHysqd ltkjHysqd : one) {
                ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(ltkjHysqd.getTjh(), ltkjHysqd.getTmh());
                ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(ltkjHysqd.getTmh());
                LtkjHysqd hysqd = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(ltkjHysqd.getTjh(), ltkjHysqd.getTmh());
                if (hysqd == null) {
                    ltkjHysqdService.save(ltkjHysqd);
                    DynamicDataSourceContextHolder.clearDataSourceType();
                    List<LtkjHybgd> one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh());
                    if (one1 != null && one1.size() > 0) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        ltkjHybgdService.saveBatch(one1);
                        DynamicDataSourceContextHolder.clearDataSourceType();
                    }
                }
            }
        }
    }
@@ -456,6 +588,7 @@
//            }
//            return getResult(page, pageSize, orderList, customerList, map);
//        }
        String value = String.valueOf(compId);
        if (tjNumber == null) tjNumber = "";
        if (compId == null) value = "";
@@ -500,10 +633,10 @@
                    if (null != customer) {
                        customer.setCusNumber(customer.getCusNumber() + 1);
                        if (customerService.updateById(customer)) {
                            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
                            wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
                            wqq.eq(TbTransition::getCardId, customer.getCardId());
                            transitionService.remove(wqq);
//                            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
//                            wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
//                            wqq.eq(TbTransition::getCardId, customer.getCardId());
//                            transitionService.remove(wqq);
                            asyncService.updateCheckType(tjNumber);
                            return AjaxResult.success("操作成功");
                        }
@@ -519,18 +652,18 @@
    /**
     * 总检点击体检信息详情
     * 总检点击体检信息详情————非化验项目
     *
     * @param tjNumber
     * @return
     */
    @GetMapping("/updateCheckType")
    @ApiOperation(value = "总检点击体检信息详情")
    @ApiOperation(value = "总检点击体检信息详情————非化验项目")
    public AjaxResult updateCheckType(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
        if (redisCache.hasKey("updateCheckType" + tjNumber)) {
            List<Map<String, Object>> cacheMapValue = redisCache.getCacheMapValue("updateCheckType" + tjNumber, tjNumber);
            return AjaxResult.success(cacheMapValue);
        }
//        if (redisCache.hasKey("updateCheckType" + tjNumber)) {
//            List<Map<String, Object>> cacheMapValue = redisCache.getCacheMapValue("updateCheckType" + tjNumber, tjNumber);
//            return AjaxResult.success(cacheMapValue);
//        }
        return getAjaxResult(tjNumber);
    }
@@ -556,6 +689,12 @@
                if ("N".equals(project.getNeedReport())) {
                    continue;
                }
                //判断该项目是否检验科项目  2024/2/28g
                if (project.getDeptId() == 241) {
                    continue;
                }
                if (null != project) {
                    parent.put("parent", project.getProName());
                    parent.put("parentId", project.getProId().toString());
@@ -610,6 +749,91 @@
    }
    /**
     * 总检点击体检信息详情————化验项目
     *
     * @param tjNumber
     * @return
     */
    @GetMapping("/updateCheckTypeHuaYan")
    @ApiOperation(value = "总检点击体检信息详情————化验项目")
    public AjaxResult updateCheckTypeHuaYan(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
        if (one == null) {
            return AjaxResult.error("暂无数据!!");
        }
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        if(null !=getInfoFromSqlData && getInfoFromSqlData.equals("Y"))
        tbhyxm(one);
//        TjCustomer customer = customerService.getById(one.getUserId());
        List<TjOrderRemark> remarkList = orderRemarkService.addHuaYanTable(tjNumber);
        List<TjOrderDetail> tjOrderDetails = detailService.addHuaYanTable(tjNumber);
        if (null != remarkList && remarkList.size() > 0) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
                parent.put("checkAdvice", one.getCheckAdvice());
                parent.put("parent", remark.getProName());
                parent.put("parentId", remark.getProId().toString());
                List<TjOrderDetail> dels=new ArrayList<>();
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if(remark.getProId().equals(tjOrderDetail.getProId())){
                            String ckfw = tjOrderDetail.getStanId();
                            if (StrUtil.isNotBlank(ckfw)) {
                                try {
                                    Integer.parseInt(tjOrderDetail.getYcbz());
                                    String[] split = ckfw.split("-");
                                    BigDecimal min = new BigDecimal(split[0]);
                                    BigDecimal max = new BigDecimal(split[1]);
                                    String proResult = tjOrderDetail.getProResult();
                                    BigDecimal jyjgval = new BigDecimal(proResult);
                                    if (jyjgval.compareTo(min) < 0) {
                                        tjOrderDetail.setYcbz("↓");
                                    } else if (jyjgval.compareTo(max) > 0) {
                                        tjOrderDetail.setYcbz("↑");
                                    }else {
                                        tjOrderDetail.setYcbz("");
                                    }
                                } catch (NumberFormatException ignored) { }
                            }
                            if(null !=tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")){
                                tjOrderDetail.setProResult(tjOrderDetail.getProResult()+" ["+tjOrderDetail.getYcbz()+"]");
                            }
                            dels.add(tjOrderDetail);
                        }
                    }
                    String summary = remark.getSummary();
                    if (null != summary) {
                        String[] split = summary.split(";");
                        parent.put("parentAdvice", tjAdviceService.getAdviceStringByIds(split));
                    } else {
                        parent.put("parentAdvice", null);
                    }
                    if(dels.size()==0){
                        continue;
                    }
                    parent.put("sons", dels);
                    parent.put("remark", remark.getRemark());
                    if (remark.getDoctorName() != null && null != userService.getById(remark.getDoctorName())) {
                        parent.put("doctorName", userService.getById(remark.getDoctorName()).getNickName());
                    }
                    list.add(parent);
                } else {
                    return AjaxResult.success("该客户没有体检项目数据");
                }
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该客户没有体检项目数据!");
    }
    @GetMapping("/getTm")
    @ApiOperation(value = "获取条码")
//    @PreAuthorize("@ss.hasPermi('check:check:getTm')")