lige
2023-12-14 e00d0891b7477fd97c766b2cc6a66cdec94bfc5e
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -8,11 +8,15 @@
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.core.redis.RedisCache;
import com.ltkj.common.enums.DataSourceType;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.*;
import com.ltkj.hosp.vodomain.CsProVo;
import com.ltkj.hosp.vodomain.UpdateOrderRemarkVo;
import com.ltkj.mall.mallOrderUtils.TjConstants;
@@ -31,6 +35,8 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.save;
/**
 * @Author: 西安路泰科技有限公司/赵佳豪
@@ -70,28 +76,41 @@
    private ISysConfigService configService;
    @Resource
    private ISysDeptService deptService;
    @Resource
    private TestMapper testMapper;
    @Resource
    private TjvLtkjvtjpatService tjvLtkjvtjpatService;
    @Resource
    private LtkjMiddleDetailService middleDetailService;
    @Resource
    private LtkjMiddleHeadService headService;
    @Resource
    private LtkjExamJcbgdService ltkjExamJcbgdService;
    @Resource
    private LtkjExamJcsqdService ltkjExamJcsqdService;
    @Resource
    private LtkjHybgdService ltkjHybgdService;
    @Resource
    private LtkjHysqdService ltkjHysqdService;
    @GetMapping("/getOperationPermissionsByTjNum")
    @ApiOperation(value = "(初审页面  和 医生页面)根据体检号获取是否可操作权限接口  true可操作  反之不可")
    public AjaxResult getOperationPermissionsByTjNum(@ApiParam(value = "体检号") @RequestParam String tjNumber) {
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if(null !=order){
        if (null != order) {
            Integer status = order.getStatus();
            if(status<300){
            if (status < 300) {
                return AjaxResult.success(true);
            }
            if(status>300){
            if (status > 300) {
                return AjaxResult.success(false);
            }
        }
        return AjaxResult.success(false);
    }
    @GetMapping("/getCsList")
@@ -161,7 +180,7 @@
        }
        //条件查询
        if(null != tjNumber || null !=compId || (null !=beginTime && null !=endTime)){
        if (null != tjNumber || null != compId || (null != beginTime && null != endTime)) {
            orderList = orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes);
            return getResult(page, pageSize, orderList, customerList, map);
        }
@@ -185,7 +204,6 @@
    }
    /**
     * 初审
     */
@@ -200,7 +218,7 @@
                vo.setDeptName(deptService.getById(remark.getDeptId()).getDeptName());
                vo.setProName(projectService.getById(remark.getProId()).getProName());
                vo.setType(remark.getType());
                if(null !=remark.getDoctorName()){
                if (null != remark.getDoctorName()) {
                    vo.setDoctorName(userService.getById(remark.getDoctorName()).getNickName());
                    vo.setBcdoctorName(userService.getById(remark.getDoctorName()).getNickName());
                }
@@ -215,7 +233,7 @@
            Collections.sort(list, new Comparator<CsProVo>() {
                @Override
                public int compare(CsProVo o1, CsProVo o2) {
                    return o1.getType()-o2.getType();
                    return o1.getType() - o2.getType();
                }
            });
        }
@@ -227,11 +245,10 @@
     * 初审
     */
    @GetMapping("/confirmOrder")
        @ApiOperation(value = "初审(并修改状态)接口")
//    @PreAuthorize("@ss.hasPermi('check:check:confirmOrder')")
    @ApiOperation(value = "初审(并修改状态)接口")
    @Transactional
    public AjaxResult confirmOrder(@ApiParam(value = "tjNumber") @RequestParam String tjNumber,
                                   @ApiParam(value = "状态 0同意1拒绝 默认同意") @RequestParam(defaultValue = "0") Integer status,
                                   @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("有延期项目暂不能审核!");
@@ -245,9 +262,10 @@
                tjOrder.setConfirmTime(new DateTime());
                tjOrder.setConfirmDoctor(sysUser.getNickName());
                tjOrder.setConfirmStatus(remark);
                if(status==0){
                if (status == 0) {
                    tjOrder.setStatus(TjConstants.TJ_CHECK);
                }else {
                    asyncService.updateCheckType(tjNumber);
                } else {
                    tjOrder.setStatus(TjConstants.TJ_REFUSED);
                }
                if (orderService.updateById(tjOrder)) {
@@ -256,6 +274,8 @@
                    confirmLog.setTjNum(tjNumber);
                    confirmLog.setStatus(status);
                    confirmLogService.save(confirmLog);
                    asyncService.wCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 0, null, null, null));
                    asyncService.yCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 1, null, null, null));
                    return AjaxResult.success("操作成功");
                }
                return AjaxResult.error("操作失败");
@@ -267,16 +287,50 @@
    /**
     * 同步sql server数据到本地数据库数据接口
     */
    @GetMapping("/dataSynchronization")
    @ApiOperation(value = "同步sql server数据到本地数据库数据接口")
    public AjaxResult dataSynchronization(@RequestParam String tjNumber) {
        //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        if ("Y".equals(getInfoFromSqlData)) {
            List<LtkjHysqd> one = testMapper.getHysqdByTmh(tjNumber);
            if (one != null) {
                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                ltkjHysqdService.saveBatch(one);
                DynamicDataSourceContextHolder.clearDataSourceType();
                for (LtkjHysqd ltkjHysqd : one) {
                    List<LtkjHybgd> one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh());
                    if (one1 != null) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        ltkjHybgdService.saveBatch(one1);
                        DynamicDataSourceContextHolder.clearDataSourceType();
                    }
                }
            }
            List<LtkjExamJcsqd> one2 = testMapper.getExamJcsqdTmh(tjNumber);
            if (one2 != null) {
                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                ltkjExamJcsqdService.saveBatch(one2);
                DynamicDataSourceContextHolder.clearDataSourceType();
                for (LtkjExamJcsqd ltkjExamJcsqd : one2) {
                    List<LtkjExamJcbgd> one3 = testMapper.getExamJcbgdByTjh(ltkjExamJcsqd.getTmh());
                    if (one3 != null) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        ltkjExamJcbgdService.saveBatch(one3);
                        DynamicDataSourceContextHolder.clearDataSourceType();
                    }
                }
            }
        }
        return AjaxResult.success("同步成功");
    }
    /**
     * 查询体检记录客户列表
     *
     * @param tjNumber
     * @param checkStatus
     * @param page
     * @param pageSize
     * @param compId
     * @param beginTime
     * @param endTime
     * @return
     */
    @GetMapping("/getList")
    @ApiOperation(value = "查询体检记录客户列表")//0待1已
@@ -325,6 +379,7 @@
                            customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
                            customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
                            customer.setConfirmStatus(String.valueOf(tjOrder.getStatus()));
                            customer.setTjCategory(tjOrder.getTjCategory());
                            if (tjOrder.getFirmId().equals("0")) {
                                customer.setTjCompName(null);
                            } else {
@@ -346,7 +401,7 @@
        }
        //条件查询
        if(null != tjNumber || null !=compId || (null !=beginTime && null !=endTime)){
        if (null != tjNumber || null != compId || (null != beginTime && null != endTime)) {
            //判断是否开启初审
            if ("Y".equals(config)) {
                orderList = orderService.getCsTjOrderList1(tjNumber, checkStatus, compId, beginTimes, endTimes);
@@ -364,6 +419,7 @@
            customers = redisCache.getCacheMapValue("check", "ys");
        }
        if (customers != null && customers.size() > 0) {
//            asyncService.addRedis(customers);
            List<TjCustomer> customerLists = customers.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
            map.put("customers", customerLists);
            map.put("total", customers.size());
@@ -417,6 +473,7 @@
                            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
                            wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
                            transitionService.remove(wqq);
                            asyncService.updateCheckType(tjNumber);
                            return AjaxResult.success("操作成功");
                        }
                        return AjaxResult.error("操作失败");
@@ -438,22 +495,27 @@
     */
    @GetMapping("/updateCheckType")
    @ApiOperation(value = "总检点击体检信息详情")
//    @PreAuthorize("@ss.hasPermi('check:check:updateCheckType')")
    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);
        }
        return getAjaxResult(tjNumber);
    }
    private AjaxResult getAjaxResult(String tjNumber) {
        asyncService.updateCheckType(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder one = orderService.getOne(wq1);
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
        if (one == null) {
            return AjaxResult.error("暂无数据!!");
        }
        LambdaQueryWrapper<TjCustomer> wq22 = new LambdaQueryWrapper<>();
        wq22.eq(TjCustomer::getCusId, one.getUserId());
        TjCustomer customer = customerService.getOne(wq22);
        LambdaQueryWrapper<TjOrderRemark> wqm = new LambdaQueryWrapper<>();
        wqm.eq(TjOrderRemark::getTjNumber, tjNumber);
        wqm.eq(TjOrderRemark::getType, 1);
        List<TjOrderRemark> remarkList = orderRemarkService.list(wqm);
        TjCustomer customer = customerService.getById(one.getUserId());
        List<TjOrderRemark> remarkList = orderRemarkService.getRemarkListByTjNumAndType(tjNumber);
        if (null != remarkList && remarkList.size() > 0) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
@@ -463,65 +525,50 @@
                    parent.put("parent", project.getProName());
                    parent.put("parentId", project.getProId().toString());
                }
                LambdaQueryWrapper<TjProject> wq2 = new LambdaQueryWrapper<>();
                wq2.eq(TjProject::getProParentId, remark.getProId());
                List<Long> sonsTjProjectList = projectService.list(wq2).stream().map(TjProject::getProId).collect(Collectors.toList());
                if (sonsTjProjectList.size() > 0) {
                    LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
                    wq.eq(TjOrderDetail::getOrderId, one.getOrderId());
                    wq.in(TjOrderDetail::getProId, sonsTjProjectList);
                    List<TjOrderDetail> tjOrderDetails = detailService.list(wq);
                    if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                            LambdaQueryWrapper<TjProject> wqqqq = new LambdaQueryWrapper<>();
                            wqqqq.eq(TjProject::getProId, tjOrderDetail.getProId());
                            tjOrderDetail.setProject(projectService.getOne(wqqqq));
                            LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
                            wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
                            List<TjStandard> list2 = tjStandardService.list(wq6);
                            if (list2.size() == 0) {
                                tjOrderDetail.setStandard(new TjStandard());
                            } else if (list2.size() == 1) {
                                tjOrderDetail.setStandard(list2.get(0));
                            } else {
                                for (TjStandard tjStandard : list2) {
                                    LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
                                    if (tjStandard.getTjSex() != null) {
                                        wq8.eq(TjStandard::getTjSex, customer.getCusSex());
                                    }
                                    if (tjStandard.getTjType() != null) {
                                        wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday())));
                                    }
                                    tjOrderDetail.setStandard(tjStandardService.getOne(wq8));
                                }
                            }
                        }
                        String summary = remark.getSummary();
                        if (null != summary) {
                            String[] split = summary.split(";");
                            LambdaQueryWrapper<TjAdvice> wq3 = new LambdaQueryWrapper<>();
                            wq3.in(TjAdvice::getId, Arrays.asList(split));
                            List<TjAdvice> advices = tjAdviceService.list(wq3);
                            if (null != advices && advices.size() > 0) {
                                StringBuilder string = new StringBuilder();
                                for (TjAdvice advice : advices) {
                                    string.append(advice.getTitle()).append(";");
                                }
                                parent.put("parentAdvice", string);
                            }
                List<TjOrderDetail> tjOrderDetails = detailService.getDetailByOrderIdAndParId(one.getOrderId(), remark.getProId());
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        final TjProject byId = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
                        if (null == byId) {
                            detailService.removeById(tjOrderDetail.getOrderDetailId());
                        } else {
                            parent.put("parentAdvice", null);
                            tjOrderDetail.setProject(byId);
                        }
                        parent.put("sons", tjOrderDetails);
                        parent.put("remark", remark.getRemark());
                        if (remark.getDoctorName() != null && null != userService.getById(remark.getDoctorName())) {
                            parent.put("doctorName", userService.getById(remark.getDoctorName()).getNickName());
                        List<TjStandard> list2 = tjStandardService.getTjStandardListByProId(String.valueOf(tjOrderDetail.getProId()));
                        if (list2.size() == 0) {
                            tjOrderDetail.setStandard(new TjStandard());
                        } else if (list2.size() == 1) {
                            tjOrderDetail.setStandard(list2.get(0));
                        } else {
                            final int ageType = StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday()));
                            TjStandard tjStandard1 = tjStandardService.getListBySexAndType(customer.getCusSex(), ageType, String.valueOf(tjOrderDetail.getProId()));
                            tjOrderDetail.setStandard(tjStandard1);
                        }
                        list.add(parent);
                    } else {
                        return AjaxResult.success("该客户没有体检项目数据");
                    }
                    String summary = remark.getSummary();
                    if (null != summary) {
                        String[] split = summary.split(";");
//                        List<Long> longList = new ArrayList<>();
//                        for (String str : split) {
//                            if(!"".equals(str)){
//                                longList.add(Long.valueOf(str));
//                            }
//                        }
                        parent.put("parentAdvice", tjAdviceService.getAdviceStringByIds(split));
                    } else {
                        parent.put("parentAdvice", null);
                    }
                    parent.put("sons", tjOrderDetails);
                    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);
        }
@@ -538,6 +585,7 @@
    /**
     * 总检修改备注
     *
     * @return
     */
    @PostMapping("/checkUpdateOrderRemark")
@@ -575,6 +623,7 @@
                customer.setTjTime(tjOrder.getCreateTime());
                customer.setFinishTime(tjOrder.getFinishTime());
                customer.setConfirmStatus(String.valueOf(tjOrder.getStatus()));
                customer.setTjCategory(tjOrder.getTjCategory());
                if (tjOrder.getFirmId() == null) {
                    customer.setTjCompName("无");
                } else {