package com.ltkj.web.controller.system; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; 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; import com.ltkj.common.annotation.RepeatSubmit; 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.config.UserHoder; 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; 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; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.save; import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.setClipRect; /** * @Author: 西安路泰科技有限公司/赵佳豪 * @Date: 2022/12/6 14:29 */ @RestController @RequestMapping("/check") @Api(tags = "总检医师相关接口") public class TjCheckController { @Resource private ITjOrderService orderService; @Resource private ITjOrderDetailService detailService; @Resource private ITjCustomerService customerService; @Resource private ITjProjectService projectService; @Resource private IDictCompService compService; @Resource private ITjStandardService tjStandardService; @Resource private ITjAdviceService tjAdviceService; @Resource private ITjOrderRemarkService orderRemarkService; @Resource private ITbTransitionService transitionService; @Resource private ISysUserService userService; @Resource private RedisCache redisCache; @Resource private TjAsyncService asyncService; @Resource private ITjConfirmLogService confirmLogService; @Autowired 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; @Autowired private HisApiMethodService controller; @GetMapping("/getOperationPermissionsByTjNum") @ApiOperation(value = "(初审页面 和 医生页面)根据体检号获取是否可操作权限接口 true可操作 反之不可") public AjaxResult getOperationPermissionsByTjNum(@ApiParam(value = "体检号") @RequestParam String tjNumber) { TjOrder order = orderService.getOrderByTjNum(tjNumber); if (null != order) { Integer status = order.getStatus(); if (status < 300) { return AjaxResult.success(true); } if (status > 300) { return AjaxResult.success(false); } } return AjaxResult.success(false); } @GetMapping("/getCsList") @ApiOperation(value = "初审查询体检记录客户列表")//0待1已 @Transactional public AjaxResult getCsList(@ApiParam(value = "审核状态 0待审核 1已审核") @RequestParam(required = false) 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, @ApiParam(value = "姓名)") @RequestParam(required = false) String name, @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime, @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) { // DateTime beginTimes = null; // DateTime endTimes = null; // if (null != beginTime && null != endTime) { // beginTimes = DateUtil.beginOfDay(DateUtil.parse(beginTime)); // endTimes = DateUtil.endOfDay(DateUtil.parse(endTime)); // } // //初始化体检订单表 // List orderList = null; // List customerList = new ArrayList<>(); // Map map = new HashMap<>(); // // if (checkStatus == 0) // asyncService.wCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes)); // if (checkStatus == 1) // asyncService.yCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes)); // // //根据姓名查询 // if (null != name && !"".equals(name)) { // List list = customerService.getTjCustomerList(name); // if (null != list && list.size() > 0) { // List lists = new ArrayList<>(); // for (TjCustomer customer : list) { // orderList = orderService.getCsTjOrderListByCusId(customer.getCusId()); // if (null != orderList && orderList.size() > 0) { // for (TjOrder tjOrder : orderList) { // customer.setTjNumber(tjOrder.getTjNumber()); // customer.setTjStatus(Long.valueOf(tjOrder.getCheckStatus())); // customer.setOrderId(tjOrder.getOrderId()); // customer.setTjTime(tjOrder.getCreateTime()); // customer.setFinishTime(tjOrder.getFinishTime()); // customer.setCusName(MatchUtils.hideCusName(customer.getCusName())); // customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); // customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); // customer.setConfirmStatus(String.valueOf(tjOrder.getStatus())); // if (tjOrder.getFirmId().equals("0")) { // customer.setTjCompName(null); // } else { // customer.setTjCompName(compService.selectDictCompByDrugManufacturerId(tjOrder.getFirmId()).getCnName()); // } // lists.add(customer); // } // } // } // List customers = null; // if (lists.size() > 0) { // customers = lists.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); // } // map.put("customers", customers); // map.put("total", lists.size()); // return AjaxResult.success(map); // } // return AjaxResult.success("暂无数据"); // } // // //条件查询 // if (null != tjNumber || null != compId || (null != beginTime && null != endTime)) { // orderList = orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes); // return getResult(page, pageSize, orderList, customerList, map); // } // // List customers = null; // if (checkStatus == 0) { // customers = redisCache.getCacheMapValue("cScheck", "ws"); // } // if (checkStatus == 1) { // customers = redisCache.getCacheMapValue("cScheck", "ys"); // } // if (customers != null && customers.size() > 0) { // List customerLists = customers.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); // map.put("customers", customerLists); // map.put("total", customers.size()); // return AjaxResult.success(map); // } else { // orderList = orderService.getCsTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes); // return getResult(page, pageSize, orderList, customerList, map); // } String value = String.valueOf(compId); if (tjNumber == null) tjNumber = ""; if (compId == null) value = ""; if (name == null) name = ""; if (beginTime == null) beginTime = ""; if (endTime == null) endTime = ""; return AjaxResult.success(orderService.getCsCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name)); } /** * 初审 */ @GetMapping("/cSWebGetProByTjNumAndOrderId") @ApiOperation(value = "(初审页面)点击体检人员展示体检项目接口") public AjaxResult cSWebGetProByTjNumAndOrderId(@ApiParam(value = "体检号") @RequestParam String tjNumber) { // List orderRemarkList = orderRemarkService.getTjOrderRemarkListByTjNum(tjNumber); // List list = new ArrayList<>(); // if (null != orderRemarkList && orderRemarkList.size() > 0) { // for (TjOrderRemark remark : orderRemarkList) { // CsProVo vo = new CsProVo(); // vo.setDeptName(deptService.getById(remark.getDeptId()).getDeptName()); // vo.setProName(projectService.getById(remark.getProId()).getProName()); // vo.setType(remark.getType()); // if (null != remark.getDoctorName()) { // vo.setDoctorName(userService.getById(remark.getDoctorName()).getNickName()); // vo.setBcdoctorName(userService.getById(remark.getDoctorName()).getNickName()); // } // vo.setSffs("统收"); // vo.setIsPay("已收费"); // vo.setQdcreateTime(remark.getCreateTime()); // vo.setBcupdateTime(remark.getUpdateTime()); // vo.setZhupdateTime(remark.getUpdateTime()); // list.add(vo); // } // List list1 = orderRemarkService.cSWebGetProByTjNumAndOrderId(tjNumber); // Collections.sort(list, new Comparator() { // @Override // public int compare(CsProVo o1, CsProVo o2) { // return o1.getType() - o2.getType(); // } // }); // } List list = orderRemarkService.cSWebGetProByTjNumAndOrderId(tjNumber); if (null != list && list.size() > 0) { list.sort(new Comparator() { @Override public int compare(CsProVo o1, CsProVo o2) { return o1.getType() - o2.getType(); } }); } return AjaxResult.success(list); } /** * 初审 */ @GetMapping("/confirmOrder") @ApiOperation(value = "初审(并修改状态)接口") @Transactional public AjaxResult confirmOrder(@ApiParam(value = "tjNumber") @RequestParam String tjNumber, @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 (null != tjNumber) { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); TjOrder tjOrder = orderService.getOrderByTjNum(tjNumber); if (null != tjOrder) { tjOrder.setConfirmTime(new DateTime()); tjOrder.setConfirmDoctor(sysUser.getNickName()); tjOrder.setConfirmStatus(String.valueOf(status)); if (status == 0) { tjOrder.setStatus(TjConstants.TJ_CHECK); asyncService.updateCheckType(tjNumber); } else { tjOrder.setStatus(TjConstants.TJ_REFUSED); } if (orderService.updateById(tjOrder)) { TjConfirmLog confirmLog = new TjConfirmLog(); confirmLog.setOrderId(String.valueOf(tjOrder.getOrderId())); 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("操作失败"); } return AjaxResult.success("数据不存在"); } return AjaxResult.error(); } /** * 同步sql server数据到本地数据库数据接口 */ @GetMapping("/dataSynchronization") @ApiOperation(value = "同步sql server数据到本地数据库数据接口") @RepeatSubmit public AjaxResult dataSynchronization(@RequestParam String tjNumber) { //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis"); TjOrder order = orderService.getOrderByTjNum(tjNumber); if(null !=order){ //开启字典弹窗 if ("Y".equals(getInfoFromSqlData)) { tbhyxm(order); // List one2 = testMapper.getExamJcsqdTmh(tjNumber); // if (one2 != null && one2.size() > 0) { // DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); // ltkjExamJcsqdService.saveBatch(one2); // DynamicDataSourceContextHolder.clearDataSourceType(); // for (LtkjExamJcsqd ltkjExamJcsqd : one2) { // List one3 = testMapper.getExamJcbgdByTjh(ltkjExamJcsqd.getTmh()); // if (one3 != null && one3.size() > 0) { // DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); // ltkjExamJcbgdService.saveBatch(one3); // DynamicDataSourceContextHolder.clearDataSourceType(); // } // } // } //同步化验项目 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()); } //开启和his对接 if(null !=sfkqdyhis && sfkqdyhis.equals("Y")){ String baoGaoDan = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId()); if(null !=baoGaoDan){ Date dates = new Date(); Map map=new HashMap<>(); map.put("his_registration_id",order.getCardId()); map.put("ksbm",""); map.put("pationid",""); map.put("ksrq",DateUtil.format(DateUtil.beginOfDay(dates), "yyyy-MM-dd HH:mm:ss")); map.put("jsrq",DateUtil.format(DateUtil.endOfDay(dates), "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){ continue; } 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 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 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 one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh()); if (one1 != null && one1.size() > 0) { DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); ltkjHybgdService.saveBatch(one1); DynamicDataSourceContextHolder.clearDataSourceType(); } } } } } /** * 查询体检记录客户列表 */ @GetMapping("/getList") @ApiOperation(value = "查询体检记录客户列表")//0待1已 // @PreAuthorize("@ss.hasPermi('check:check:getList')") public AjaxResult getList(@ApiParam(value = "审核状态0待审核1已审核") @RequestParam(required = false) 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, @ApiParam(value = "姓名)") @RequestParam(required = false) String name, @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime, @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) { // String config = configService.selectConfigByKey("tj_confirm"); // DateTime beginTimes = null; // DateTime endTimes = null; // if (null != beginTime && null != endTime) { // beginTimes = DateUtil.beginOfDay(DateUtil.parse(beginTime)); // endTimes = DateUtil.endOfDay(DateUtil.parse(endTime)); // } // asyncService.checkSetCustomerLisByRedis(config); // //初始化体检订单表 // List orderList = null; // List customerList = new ArrayList<>(); // Map map = new HashMap<>(); // // //姓名查询 // if (null != name && !"".equals(name)) { // List list = customerService.getTjCustomerList(name); // if (null != list && list.size() > 0) { // List lists = new ArrayList<>(); // for (TjCustomer customer : list) { // if ("Y".equals(config)) { // orderList = orderService.getCsTjOrderListByCusId1(customer.getCusId()); // } else { // orderList = orderService.getTjOrderListByCusId(customer.getCusId()); // } // if (null != orderList && orderList.size() > 0) { // for (TjOrder tjOrder : orderList) { // customer.setTjNumber(tjOrder.getTjNumber()); // customer.setTjStatus(Long.valueOf(tjOrder.getCheckStatus())); // customer.setOrderId(tjOrder.getOrderId()); // customer.setTjTime(tjOrder.getFinishTime()); // customer.setFinishTime(tjOrder.getFinishTime()); // customer.setCusName(MatchUtils.hideCusName(customer.getCusName())); // 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 { // customer.setTjCompName(compService.selectDictCompByDrugManufacturerId(tjOrder.getFirmId()).getCnName()); // } // lists.add(customer); // } // } // } // List customers = null; // if (lists.size() > 0) { // customers = lists.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); // } // map.put("customers", customers); // map.put("total", lists.size()); // return AjaxResult.success(map); // } // return AjaxResult.success("暂无数据"); // } // // //条件查询 // if (null != tjNumber || null != compId || (null != beginTime && null != endTime)) { // //判断是否开启初审 // if ("Y".equals(config)) { // orderList = orderService.getCsTjOrderList1(tjNumber, checkStatus, compId, beginTimes, endTimes); // } else { // orderList = orderService.getTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes); // } // return getResult(page, pageSize, orderList, customerList, map); // } // // List customers = null; // if (null != checkStatus && checkStatus == 0) { // customers = redisCache.getCacheMapValue("check", "ws"); // } // if (null != checkStatus && checkStatus == 1) { // customers = redisCache.getCacheMapValue("check", "ys"); // } // if (customers != null && customers.size() > 0) { //// asyncService.addRedis(customers); // List customerLists = customers.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); // map.put("customers", customerLists); // map.put("total", customers.size()); // return AjaxResult.success(map); // } else { // //判断是否开启初审 // if ("Y".equals(config)) { // orderList = orderService.getCsTjOrderList1(tjNumber, checkStatus, compId, beginTimes, endTimes); // } else { // orderList = orderService.getTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes); // } // return getResult(page, pageSize, orderList, customerList, map); // } String value = String.valueOf(compId); if (tjNumber == null) tjNumber = ""; if (compId == null) value = ""; if (name == null) name = ""; if (beginTime == null) beginTime = ""; if (endTime == null) endTime = ""; return AjaxResult.success(orderService.getCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name)); } /** * 根据体检订单号获取体检详情信息接口 * * @param tjNumber * @param advice * @param checkStatus * @return */ @PutMapping("/getTjdetailList") @ApiOperation(value = "根据体检订单号获取体检详情信息(并修改状态)接口") // @PreAuthorize("@ss.hasPermi('check:check:getTjdetailList')") public AjaxResult getTjdetailList(@ApiParam(value = "体检tjNumber") @RequestParam String tjNumber, @ApiParam(value = "总检建议") @RequestParam(required = false) String advice, @ApiParam(value = "审核状态0待审核1已审核") @RequestParam Integer checkStatus) { int num = orderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber); if (num > 0) return AjaxResult.error("有延期项目暂不能生成报告!!!"); if (null != tjNumber) { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getTjNumber, tjNumber); TjOrder tjOrder = orderService.getOne(wq1); if (null != tjOrder) { tjOrder.setCheckAdvice(advice); tjOrder.setCheckStatus(checkStatus); tjOrder.setStatus(TjConstants.TJ_CHECK); tjOrder.setCheckDoctor(sysUser.getNickName()); tjOrder.setCheckTime(new Date()); tjOrder.setStatus(401); if (orderService.updateById(tjOrder)) { TjCustomer customer = customerService.getById(tjOrder.getUserId()); if (null != customer) { customer.setCusNumber(customer.getCusNumber() + 1); if (customerService.updateById(customer)) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TbTransition::getCusId, customer.getCusIdcard()); wqq.eq(TbTransition::getCardId, customer.getCardId()); transitionService.remove(wqq); asyncService.updateCheckType(tjNumber); return AjaxResult.success("操作成功"); } return AjaxResult.error("操作失败"); } } return AjaxResult.error("操作失败"); } return AjaxResult.success("数据不存在"); } return AjaxResult.error(); } /** * 总检点击体检信息详情————非化验项目 * * @param tjNumber * @return */ @GetMapping("/updateCheckType") @ApiOperation(value = "总检点击体检信息详情————非化验项目") public AjaxResult updateCheckType(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) { // if (redisCache.hasKey("updateCheckType" + tjNumber)) { // List> cacheMapValue = redisCache.getCacheMapValue("updateCheckType" + tjNumber, tjNumber); // return AjaxResult.success(cacheMapValue); // } return getAjaxResult(tjNumber); } private AjaxResult getAjaxResult(String tjNumber) { asyncService.updateCheckType(tjNumber); List> list = new ArrayList<>(); TjOrder one = orderService.getOrderByTjNum(tjNumber); if (one == null) { return AjaxResult.error("暂无数据!!"); } TjCustomer customer = customerService.getById(one.getUserId()); List remarkList = orderRemarkService.getRemarkListByTjNumAndType(tjNumber); if (null != remarkList && remarkList.size() > 0) { for (TjOrderRemark remark : remarkList) { Map parent = new HashMap<>(); parent.put("checkAdvice", one.getCheckAdvice()); TjProject project = projectService.selectTjProjectByProId(remark.getProId()); //判断该项目是否需要打印报告 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()); } List 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 { tjOrderDetail.setProject(byId); } List 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); } } String summary = remark.getSummary(); if (null != summary) { String[] split = summary.split(";"); // List 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); } return AjaxResult.success("该客户没有体检项目数据!"); } /** * 总检点击体检信息详情————化验项目 * * @param tjNumber * @return */ @GetMapping("/updateCheckTypeHuaYan") @ApiOperation(value = "总检点击体检信息详情————化验项目") public AjaxResult updateCheckTypeHuaYan(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) { // asyncService.updateCheckType(tjNumber); List> 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 remarkList = orderRemarkService.addHuaYanTable(tjNumber); List tjOrderDetails = detailService.addHuaYanTable(tjNumber); if (null != remarkList && remarkList.size() > 0) { for (TjOrderRemark remark : remarkList) { Map parent = new HashMap<>(); parent.put("checkAdvice", one.getCheckAdvice()); parent.put("parent", remark.getProName()); parent.put("parentId", remark.getProId().toString()); List dels=new ArrayList<>(); if (null != tjOrderDetails && tjOrderDetails.size() > 0) { for (TjOrderDetail tjOrderDetail : tjOrderDetails) { if(remark.getProId().equals(tjOrderDetail.getProId())){ 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')") public AjaxResult getTm(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) { return AjaxResult.success(tjNumber); } /** * 总检修改备注 * * @return */ @PostMapping("/checkUpdateOrderRemark") @ApiOperation(value = "总检修改备注接口") public AjaxResult checkUpdateOrderRemark(@RequestBody List updateOrderRemarkVos) { if (null != updateOrderRemarkVos && updateOrderRemarkVos.size() > 0) { for (UpdateOrderRemarkVo remarkVo : updateOrderRemarkVos) { LambdaQueryWrapper wqm = new LambdaQueryWrapper<>(); wqm.eq(TjOrderRemark::getTjNumber, remarkVo.getTjNumber()); wqm.eq(TjOrderRemark::getProId, remarkVo.getProId()); TjOrderRemark remark = orderRemarkService.getOne(wqm); if (null != remark) { remark.setRemark(remarkVo.getRemarks()); orderRemarkService.updateById(remark); } } } return AjaxResult.success(); } private AjaxResult getResult(Integer page, Integer pageSize, List orderList, List customerList, Map map) { for (TjOrder tjOrder : orderList) { if (null != tjOrder) { TjCustomer customer = customerService.selectTjCustomerByCusId(tjOrder.getUserId()); if (customer == null) { continue; } customer.setCusName(MatchUtils.hideCusName(customer.getCusName())); customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); customer.setTjNumber(tjOrder.getTjNumber()); customer.setTjStatus(Long.valueOf(tjOrder.getCheckStatus())); customer.setOrderId(tjOrder.getOrderId()); 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 { DictComp byId = compService.selectDictCompByDrugManufacturerId(tjOrder.getFirmId()); if (byId != null) { customer.setTjCompName(byId.getCnName()); } } customerList.add(customer); } } List customers = customerList.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); map.put("customers", customers); map.put("total", customerList.size()); return AjaxResult.success(map); } }