package com.ltkj.web.controller.system; 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; 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.HisApiGetMethodService; import com.ltkj.web.controller.his.HisApiMethodService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; 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.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log; 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 = "总检医师相关接口") @Slf4j 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 jcbgdService; @Resource private LtkjExamJcsqdService jcsqdService; @Resource private LtkjHybgdService ltkjHybgdService; @Resource private LtkjHysqdService ltkjHysqdService; @Autowired private HisApiMethodService controller; @Autowired private HisApiGetMethodService service; @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 // @Transactional 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")) { List baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId()); if (null != baoGaoDans && baoGaoDans.size() > 0) { //同步检验 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(order.getCreateTime()), "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) { 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")); hysqd.setShrdm(jsonObject.getStr("JYYSBH")); hysqd.setShrxm(jsonObject.getStr("JYYSQM")); hysqd.setJybgjg(jsonObject.getStr("JYBGJG")); 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")) { 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.setShysmc(js.getStr("SHRXM")); bgd.setYcbz(js.getStr("YCTS")); // bgd.setTpurl(js.getStr("")); ltkjHybgdService.save(bgd); } } Map fbhashMap = new HashMap<>(); fbhashMap.put("jybgid", hysqd.getTmh()); AjaxResult fbres = controller.Getlabgermrepinfo(fbhashMap); String ajaxResult = getAjaxResult(fbres); JSONObject fbobject = getJSONObject(ajaxResult); String fbcode = fbobject.getStr("ResultCode"); if (null != fbcode && fbcode.equals("0")) { JSONArray datas = fbobject.getJSONArray("ResultData"); for (Object o : datas) { JSONObject js = (JSONObject) o; LtkjHybgd bgd = new LtkjHybgd(); bgd.setTmh(hysqd.getTmh()); bgd.setJcxmid(hysqd.getXmid()); bgd.setJcxm(hysqd.getXmmc()); bgd.setTdh(js.getStr("")); bgd.setJyjg(js.getStr("JCJG")); bgd.setJgdw("/"); bgd.setFwzdz("/"); bgd.setFwzgz("/"); bgd.setFwz("/"); bgd.setJysj(js.getStr("BGRQ")); bgd.setJyys(hysqd.getSqrxm()); bgd.setShsj(js.getStr("BGRQ")); bgd.setShys(hysqd.getShrdm()); bgd.setShysmc(hysqd.getShrxm()); ltkjHybgdService.save(bgd); } } } } /*同步检查 his接口*/ // Map maps = new HashMap<>(); // maps.put("his_registration_id", order.getCardId()); // maps.put("ksbm", "体检中心"); // maps.put("pagecount", 100); // maps.put("page", 1); // AjaxResult results = service.getHISDataNew("Getexamreportinfo", maps); /*同步检查 his存储过程*/ AjaxResult results = jcsqdService.getTjJcProByHisCall("体检中心",order.getCardId(),"''",100,1,"'1'"); DynamicDataSourceContextHolder.clearDataSourceType(); log.info("检查项目查询返回值: "+results.toString()); if (Integer.parseInt(results.get("code").toString()) == 200) { List> datas = (List>) results.get("data"); if(null !=datas && datas.size()>0){ jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId()); jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId()); for (Map objectMap : datas) { // LtkjExamJcsqd jybgid = jcsqdService.getLtkjJcsqdByTjhAndTmh(order.getCardId(), objectMap.get("JCBGID").toString()); // if (null != jybgid) { // jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId(), objectMap.get("JCBGID").toString()); // jcbgdService.deletedLtkjJcbgdByTjhAndTmh(jybgid.getTmh()); // } LtkjExamJcbgd jcbgd=new LtkjExamJcbgd(); jcbgd.setTjh(order.getCardId()); if(null !=objectMap.get("JCBGID") || !objectMap.get("JCBGID").equals("")) jcbgd.setTmh(objectMap.get("JCBGID").toString()); if(null !=objectMap.get("JCXMDM") || !objectMap.get("JCXMDM").equals("")) jcbgd.setXmdm(objectMap.get("JCXMDM").toString()); if(null !=objectMap.get("JCXMMC") || !objectMap.get("JCXMMC").equals("")) jcbgd.setXmmc(objectMap.get("JCXMMC").toString()); if(null !=objectMap.get("JCXMJG") || !objectMap.get("JCXMJG").equals("")) jcbgd.setBgNr(objectMap.get("JCXMJG").toString()); if(null !=objectMap.get("reporturl") || !objectMap.get("reporturl").equals("")) jcbgd.setBgUrl(objectMap.get("reporturl").toString()); if(null !=objectMap.get("SHYSQM") || !objectMap.get("SHYSQM").equals("")) jcbgd.setShysxm(objectMap.get("SHYSQM").toString()); if(null !=objectMap.get("SHYSBH") || !objectMap.get("SHYSBH").equals("")) jcbgd.setShysdm(objectMap.get("SHYSBH").toString()); if(null !=objectMap.get("YXZD") || !objectMap.get("YXZD").equals("")) jcbgd.setYxzd(objectMap.get("YXZD").toString()); if(null !=objectMap.get("YXBX") || !objectMap.get("YXBX").equals("")){ if(objectMap.get("YXBX").toString().equals("null")){ jcbgd.setYxbx("未检异常"); }else { jcbgd.setYxbx(objectMap.get("YXBX").toString()); } } if(null !=objectMap.get("SJJLSJ") || !objectMap.get("SJJLSJ").equals("")) jcbgd.setZdsj(objectMap.get("SJJLSJ").toString()); if(null !=objectMap.get("JCBW") || !objectMap.get("JCBW").equals("")) jcbgd.setJcbw(objectMap.get("JCBW").toString()); if(null !=objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals("")) jcbgd.setSqsj(objectMap.get("SQRQSJ").toString()); jcbgdService.save(jcbgd); } jcsqdService.saveLtkjExamJcsqd(order.getCardId()); } } } //同步化验项目 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("化验项目暂时无结果,请稍后同步!!!"); } 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); return getResult(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()); String metering = null; if (null == byId) { detailService.removeById(tjOrderDetail.getOrderDetailId()); } else { metering = byId.getProMetering(); tjOrderDetail.setProject(byId); } List list2 = tjStandardService.getTjStandardListByProId(String.valueOf(tjOrderDetail.getProId())); if (list2.size() == 0) { TjStandard standard = new TjStandard(); if (StrUtil.isNotBlank(metering)) standard.setCompany(metering); tjOrderDetail.setStandard(standard); } else if (list2.size() == 1) { TjStandard standard = list2.get(0); if (StrUtil.isNotBlank(metering) && StrUtil.isBlank(standard.getCompany())) standard.setCompany(metering); tjOrderDetail.setStandard(standard); } else { final int ageType = StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday())); TjStandard tjStandard1 = tjStandardService.getListBySexAndType(customer.getCusSex(), ageType, String.valueOf(tjOrderDetail.getProId())); if (StrUtil.isNotBlank(metering) && StrUtil.isBlank(tjStandard1.getCompany())) tjStandard1.setCompany(metering); 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())) { String ckfw = tjOrderDetail.getStanId(); if (StrUtil.isNotBlank(tjOrderDetail.getProAdvice())) { ckfw = ckfw.replace(tjOrderDetail.getProAdvice().trim(), ""); } 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) { ignored.printStackTrace(); } } 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 ("/updateHYANDCGCheckType") @ApiOperation (value = "总检点击体检信息详情————常规和化验项目") public AjaxResult updateHYANDCGCheckType(@ApiParam (value = "客户体检号") @RequestParam String tjNumber) { return getResult(tjNumber); } private AjaxResult getResult(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.addHuaYanAndCgTable(tjNumber); List tjOrderDetails = detailService.addHuaYanAndCgTable(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.getProsId()); parent.put("xmlb", remark.getXmlb()); parent.put("", remark.getXmlb()); List dels = new ArrayList<>(); if (null != tjOrderDetails && tjOrderDetails.size() > 0) { for (TjOrderDetail tjOrderDetail : tjOrderDetails) { if (remark.getProsId().equals(tjOrderDetail.getProsId())) { String ckfw = tjOrderDetail.getStanId(); if (null !=ckfw && StrUtil.isNotBlank(tjOrderDetail.getProAdvice())) { ckfw = ckfw.replace(tjOrderDetail.getProAdvice().trim(), ""); } 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) { ignored.printStackTrace(); } if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) { tjOrderDetail.setProResult(tjOrderDetail.getProResult() + " [" + tjOrderDetail.getYcbz() + "]"); } }else { tjOrderDetail.setProResult(tjOrderDetail.getProResult()); } 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()); parent.put("jgbx", remark.getJgbx()); if (remark.getDoctorName() != null) { parent.put("doctorName", remark.getDoctorName()); } 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); } }