| | |
| | | package com.ltkj.web.controller.system; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.io.IOException; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | | import java.nio.file.Paths; |
| | | import java.security.Security; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.io.unit.DataUnit; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ltkj.common.core.domain.entity.SysUser; |
| | | import com.ltkj.common.core.redis.RedisCache; |
| | | import com.ltkj.common.utils.SecurityUtils; |
| | | import com.ltkj.framework.config.MatchUtils; |
| | | import com.ltkj.hosp.domain.*; |
| | | import com.ltkj.hosp.service.*; |
| | | import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd; |
| | | import com.ltkj.hosp.sqlDomain.LtkjExamJcsqd; |
| | | import com.ltkj.hosp.vodomain.CsProVo; |
| | | import com.ltkj.system.service.ISysConfigService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import jodd.util.StringUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Isolation; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.ltkj.common.annotation.Log; |
| | | import com.ltkj.common.core.controller.BaseController; |
| | |
| | | @RestController |
| | | @RequestMapping("/picture/picture") |
| | | @Api(tags = "体检心电图管理") |
| | | @Slf4j |
| | | public class TjXdPictureController extends BaseController { |
| | | @Resource |
| | | private ITjXdPictureService tjXdPictureService; |
| | |
| | | private ITjOrderRemarkService remarkService; |
| | | @Resource |
| | | private ITjProjectService projectService; |
| | | |
| | | @Resource |
| | | private TjXdtgmdjgService xdtgmdjgService; |
| | | @Resource |
| | | private LtkjExamJcbgdService jcbgdService; |
| | | @Resource |
| | | private LtkjExamJcsqdService jcsqdService; |
| | | @Autowired |
| | | private TjJcycxmService jcycxmService; |
| | | /** |
| | | * 查询体检心电图管理列表 |
| | | */ |
| | |
| | | @GetMapping ("/getYxJcList") |
| | | @ApiOperation (value = "影像检查列表(骨密度和心电图)")//0待1已 |
| | | @Transactional |
| | | public AjaxResult getYxJcList(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer page, |
| | | public AjaxResult getYxJcList(@ApiParam (value = "审核状态 0待审核 1已审核") @RequestParam Integer checkStatus, |
| | | @ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer page, |
| | | @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize, |
| | | @ApiParam (value = "体检单号") @RequestParam (required = false) String tjNumber, |
| | | @ApiParam (value = "单位") @RequestParam (required = false) Long compId, |
| | |
| | | // orderList = orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes); |
| | | // return getResult(page, pageSize, orderList, customerList, map); |
| | | // } |
| | | Long deptId = SecurityUtils.getDeptId(); |
| | | log.info("影像检查列表(骨密度和心电图)接口 当前登录人科室"+deptId); |
| | | String value = String.valueOf(compId); |
| | | if (tjNumber == null) tjNumber = ""; |
| | | if (compId == null) value = ""; |
| | |
| | | if (beginTime == null) beginTime = ""; |
| | | if (endTime == null) endTime = ""; |
| | | if (tcm == null) tcm = ""; |
| | | return AjaxResult.success(orderService.getYxJcList(tjNumber, page, pageSize, value, beginTime, endTime, name,tcm)); |
| | | return AjaxResult.success(orderService.getYxJcList(checkStatus,tjNumber, page, pageSize, value, beginTime, endTime, name,tcm,deptId.toString())); |
| | | } |
| | | |
| | | @GetMapping ("/getYxJcXx") |
| | | @ApiOperation (value = "影像检查骨密度心电图页面点击体检人员展示体检项目接口") |
| | | public AjaxResult getYxJcXx(@ApiParam (value = "体检号") @RequestParam String tjNumber) { |
| | | List<CsProVo> list = remarkService.getYxJcXx(tjNumber); |
| | | Long deptId = SecurityUtils.getDeptId(); |
| | | log.info("影像检查骨密度心电图页面点击体检人员展示体检项目接口当前登录人科室"+deptId); |
| | | List<CsProVo> list = remarkService.getYxJcXx(tjNumber,deptId.toString()); |
| | | if(null !=list && !list.isEmpty()){ |
| | | for (CsProVo vo : list) { |
| | | LambdaQueryWrapper<TjXdtgmdjg> wq=new LambdaQueryWrapper<>(); |
| | | wq.eq(TjXdtgmdjg::getTjh,tjNumber); |
| | | wq.eq(TjXdtgmdjg::getProId,vo.getProId()); |
| | | TjXdtgmdjg xdtgmdjg = xdtgmdjgService.getOne(wq); |
| | | if(null !=xdtgmdjg){ |
| | | if(StringUtil.isNotBlank(xdtgmdjg.getUrl())){ |
| | | Path path = Paths.get(xdtgmdjg.getUrl()); |
| | | byte[] data = null; |
| | | try { |
| | | data = Files.readAllBytes(path); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | String base64 = Base64.getEncoder().encodeToString(data); |
| | | if(StringUtil.isNotBlank(base64)) vo.setImageUrl(base64); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | return AjaxResult.success(list); |
| | | } |
| | | |
| | | @GetMapping ("/addYxJcXx") |
| | | @ApiOperation (value = "提交影像检查骨密度心电图结果接口") |
| | | @Transactional |
| | | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) |
| | | public AjaxResult addYxJcXx(@ApiParam (value = "体检号") @RequestParam String tjNumber, |
| | | @ApiParam (value = "项目id") @RequestParam String proId, |
| | | @ApiParam (value = "检查所见") @RequestParam String jcsj, |
| | | @ApiParam (value = "检查结论") @RequestParam String jcjl) { |
| | | TjOrder order = orderService.getOrderByTjNum(tjNumber); |
| | | if(null !=order){ |
| | | TjProject project = projectService.getById(proId); |
| | | if(null !=project){ |
| | | List<TjProject> projects = projectService.getTjProjectListBySoneId(proId); |
| | | LambdaQueryWrapper<TjOrderDetail>wq1=new LambdaQueryWrapper<>(); |
| | | wq1.eq(TjOrderDetail::getProId,projects.get(0).getProParentId()); |
| | | wq1.eq(TjOrderDetail::getOrderId,order.getOrderId()); |
| | | TjOrderDetail detail = detailService.getOne(wq1); |
| | | if(null !=detail){ |
| | | detail.setProResult(jcjl+"。"+jcsj); |
| | | detail.setTjStatus(1L); |
| | | detailService.updateById(detail); |
| | | LambdaQueryWrapper<TjOrderRemark>wq2=new LambdaQueryWrapper<>(); |
| | | wq2.eq(TjOrderRemark::getProId,proId); |
| | | wq2.eq(TjOrderRemark::getTjNumber,tjNumber); |
| | | TjOrderRemark orderRemark = remarkService.getOne(wq2); |
| | | if(null !=orderRemark){ |
| | | orderRemark.setType(1); |
| | | remarkService.updateById(orderRemark); |
| | | @ApiParam (value = "检查结论") @RequestParam String jcjl, |
| | | @ApiParam (value = "图片地址") @RequestParam(required = false) String url) { |
| | | try { |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |
| | | TjOrder order = orderService.getOrderByTjNum(tjNumber); |
| | | if(null !=order){ |
| | | TjProject project = projectService.getById(proId); |
| | | if(null !=project){ |
| | | LambdaQueryWrapper<TjOrderDetail>wq1=new LambdaQueryWrapper<>(); |
| | | wq1.eq(TjOrderDetail::getProId,proId); |
| | | wq1.eq(TjOrderDetail::getOrderId,order.getOrderId()); |
| | | TjOrderDetail detail = detailService.getOne(wq1); |
| | | if(null !=detail){ |
| | | detail.setProResult(jcjl+"。"+jcsj); |
| | | detail.setTjStatus(1L); |
| | | detailService.updateById(detail); |
| | | LambdaQueryWrapper<TjOrderRemark>wq2=new LambdaQueryWrapper<>(); |
| | | wq2.eq(TjOrderRemark::getProId,proId); |
| | | wq2.eq(TjOrderRemark::getTjNumber,tjNumber); |
| | | TjOrderRemark orderRemark = remarkService.getOne(wq2); |
| | | if(null !=orderRemark){ |
| | | orderRemark.setType(1); |
| | | remarkService.updateById(orderRemark); |
| | | xdtgmdjgService.deletedByTJhAndProId(tjNumber, proId); |
| | | TjXdtgmdjg xdtgmdjg=new TjXdtgmdjg(); |
| | | xdtgmdjg.setTjh(tjNumber); |
| | | xdtgmdjg.setCardId(order.getCardId()); |
| | | xdtgmdjg.setProId(proId); |
| | | xdtgmdjg.setProName(project.getProName()); |
| | | xdtgmdjg.setJcsj(jcsj); |
| | | xdtgmdjg.setJcjl(jcjl); |
| | | xdtgmdjg.setCreateBy(user.getNickName()); |
| | | xdtgmdjg.setCreateId(user.getUserId().toString()); |
| | | if(StringUtil.isNotBlank(url)) xdtgmdjg.setUrl(url); |
| | | xdtgmdjgService.save(xdtgmdjg); |
| | | saveTjXdtgmdjgByJcbgd(xdtgmdjg); |
| | | } |
| | | } |
| | | } |
| | | return AjaxResult.success(); |
| | | } |
| | | return AjaxResult.error("暂无体检记录"); |
| | | } catch (Exception e) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | log.error("提交影像检查骨密度心电图结果接口"+e.getMessage()); |
| | | throw new RuntimeException("提交影像检查骨密度心电图结果接口"); |
| | | } |
| | | } |
| | | @Transactional(propagation = Propagation.REQUIRED) // 共享事务 |
| | | public void saveTjXdtgmdjgByJcbgd(TjXdtgmdjg xdtgmdjg) { |
| | | try { |
| | | int length = xdtgmdjg.getProId().length(); |
| | | // 确保字符串长度至少为6 |
| | | String last6 = length >= 6 ? xdtgmdjg.getProId().substring(length - 6) : xdtgmdjg.getProId(); |
| | | Date date = new Date(); |
| | | LtkjExamJcbgd jcbgd=new LtkjExamJcbgd(); |
| | | jcsqdService.deletedLtkjJcsqdByTjhandtmh(xdtgmdjg.getCardId(),xdtgmdjg.getTjh()+last6); |
| | | jcbgdService.deletedLtkjJcbgdByTjhandtmh(xdtgmdjg.getCardId(),xdtgmdjg.getTjh()+last6); |
| | | jcbgd.setTjh(xdtgmdjg.getCardId()); |
| | | jcbgd.setTmh(xdtgmdjg.getTjh()+last6); |
| | | jcbgd.setXmdm(xdtgmdjg.getProId()); |
| | | jcbgd.setXmmc(xdtgmdjg.getProName()); |
| | | jcbgd.setBgNr(xdtgmdjg.getJcsj()); |
| | | if(StringUtil.isNotBlank(xdtgmdjg.getUrl())){ |
| | | jcbgd.setBgUrl(xdtgmdjg.getUrl()); |
| | | }else { |
| | | jcbgd.setBgUrl(""); |
| | | } |
| | | jcbgd.setShysxm(xdtgmdjg.getCreateBy()); |
| | | jcbgd.setShysdm(xdtgmdjg.getCreateId()); |
| | | jcbgd.setYxzd(xdtgmdjg.getJcjl()); |
| | | jcbgd.setYxbx(xdtgmdjg.getJcjl()); |
| | | jcbgd.setZdsj(DateUtil.format(date,"yyyy-MM-dd")); |
| | | jcbgd.setJcbw(""); |
| | | jcbgd.setLx("1"); |
| | | jcbgd.setSqsj(DateUtil.format(date,"yyyy-MM-dd")); |
| | | jcbgd.setCreateTime(date); |
| | | jcbgdService.save(jcbgd); |
| | | jcsqdService.saveXdtLtkjExamJcsqd(xdtgmdjg.getCardId(),jcbgd.getTmh()); |
| | | |
| | | LambdaQueryWrapper<TjJcycxm> wq=new LambdaQueryWrapper<>(); |
| | | wq.eq(TjJcycxm::getTjh,xdtgmdjg.getTjh()); |
| | | wq.eq(TjJcycxm::getProId,xdtgmdjg.getProId()); |
| | | jcycxmService.remove(wq); |
| | | if(StringUtil.isNotBlank(xdtgmdjg.getJcjl())){ |
| | | String s = "。|;|;|,|,"; |
| | | String[] split = xdtgmdjg.getJcjl().replaceAll("\n", "。").split(s); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见") |
| | | && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")){ |
| | | TjJcycxm jcycxm=new TjJcycxm(); |
| | | jcycxm.setTjh(xdtgmdjg.getTjh()); |
| | | jcycxm.setYqid(""); |
| | | jcycxm.setProId(xdtgmdjg.getProId()); |
| | | jcycxm.setProName(xdtgmdjg.getProName()); |
| | | jcycxm.setCreateTime(new Date()); |
| | | jcycxm.setJcjg(jg); |
| | | jcycxmService.save(jcycxm); |
| | | } |
| | | } |
| | | } |
| | | return AjaxResult.success(); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | @GetMapping ("/getYxJcXxJg") |
| | | @ApiOperation (value = "获取影像检查骨密度心电图结果接口") |
| | | @Transactional |
| | | public AjaxResult getYxJcXxJg(@ApiParam (value = "体检号") @RequestParam String tjNumber, |
| | | @ApiParam (value = "项目id") @RequestParam String proId) { |
| | | TjOrder order = orderService.getOrderByTjNum(tjNumber); |
| | | if(null !=order){ |
| | | LambdaQueryWrapper<TjXdtgmdjg> wq=new LambdaQueryWrapper<>(); |
| | | wq.eq(TjXdtgmdjg::getTjh,tjNumber); |
| | | wq.eq(TjXdtgmdjg::getProId,proId); |
| | | TjXdtgmdjg xdtgmdjg = xdtgmdjgService.getOne(wq); |
| | | Map<String,Object>map=new HashMap<>(); |
| | | if(null !=xdtgmdjg ){ |
| | | map.put("jcsj",xdtgmdjg.getJcsj()); |
| | | map.put("jcjl",xdtgmdjg.getJcjl()); |
| | | if(StringUtil.isNotBlank(xdtgmdjg.getUrl())){ |
| | | Path path = Paths.get(xdtgmdjg.getUrl()); |
| | | byte[] data = null; |
| | | try { |
| | | data = Files.readAllBytes(path); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | String base64 = Base64.getEncoder().encodeToString(data); |
| | | map.put("tp",base64); |
| | | }else { |
| | | map.put("tp",null); |
| | | } |
| | | return AjaxResult.success(map); |
| | | }else { |
| | | TjProject tjProject = projectService.getById(proId); |
| | | map.put("jcsj",""); |
| | | map.put("jcjl",tjProject.getProDefault()==null ? "":tjProject.getProDefault()); |
| | | map.put("tp",null); |
| | | } |
| | | return AjaxResult.success(map); |
| | | } |
| | | return AjaxResult.error("暂无体检记录"); |
| | | } |