ltkj-admin/src/main/java/com/ltkj/web/config/timer/DefaultScheduled.java
@@ -172,7 +172,8 @@ } catch (Exception e) { scheduleNextTask(Long.parseLong(dsrwsjjg)); log.error("定时器执行报错"); e.printStackTrace(); log.error(String.valueOf(e)); // e.printStackTrace(); } finally { reentrantLock.unlock(); } @@ -216,8 +217,10 @@ } } catch (Exception e) { log.info("同步检验数据失败"); throw new RuntimeException(e); // throw new RuntimeException(e); log.error(String.valueOf(e)); } } @@ -237,7 +240,8 @@ } } catch (Exception e) { log.info("同步检查数据失败"); throw new RuntimeException(e); // throw new RuntimeException(e); log.error(String.valueOf(e)); } } } ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -1711,9 +1711,9 @@ return AjaxResult.success(maps); }else { List<Map<String, Object>> mapList = zongjianyishengchakanyichangxiangmu(tjNum); if(mapList.isEmpty()){ return AjaxResult.error("暂无数据"); } // if(mapList.isEmpty()){ // return AjaxResult.success("暂无数据"); // } return AjaxResult.success(mapList); } ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -261,7 +261,7 @@ tjCustomer1.setGroupingId(tjReservation.getGroupingId()); // if(null !=tjReservation.getCompanyId())tjCustomer1.setDictCompId(Long.valueOf(tjReservation.getCompanyId())); // if(null !=tjReservation.getCompany())tjCustomer1.setCompName(tjReservation.getCompany()); if(null !=tjReservation.getCompany())tjCustomer1.setCompName(tjReservation.getCompany()); // tjCustomerService.updateById(tjCustomer1); @@ -291,8 +291,8 @@ tjCustomer.setCusPassword(substring); tjCustomer.setTjType(tjReservation.getTjType()); tjCustomer.setPym(PinyinUtil.getFirstLetter(tjReservation.getName(),"")); // if(null !=tjReservation.getCompanyId())tjCustomer.setDictCompId(Long.valueOf(tjReservation.getCompanyId())); // if(null !=tjReservation.getCompany())tjCustomer.setCompName(tjReservation.getCompany()); if(null !=tjReservation.getCompanyId())tjCustomer.setCompId(tjReservation.getCompanyId()); if(null !=tjReservation.getCompany())tjCustomer.setCompName(tjReservation.getCompany()); if (null != key && key.equals("Y")) { AjaxResult result = controller.Outpincreateapply(tjCustomer); ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -90,6 +90,7 @@ import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.HttpRequest; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.security.access.prepost.PreAuthorize; @@ -240,6 +241,8 @@ @Autowired private TbTransitionMapper tbTransitionMapper; private static final String TJH = "tjhs:tjh"; //将方法返回值解析成json格式 public JSONObject getJSONObject(String builder) { String Response = JSONUtil.parseObj(builder).getStr("Response"); @@ -305,7 +308,7 @@ wqq.like(TjCustomer::getCusName, name); List<TjCustomer> customerList = tjCustomerService.list(wqq); List<TjOrder> list2 = new ArrayList<>(); if (null != customerList && customerList.size() > 0) { if (null != customerList && !customerList.isEmpty()) { List<TjOrder> list = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>(); @@ -316,13 +319,13 @@ list.addAll(tjOrderService.list(wq)); } List<TjOrder> collect = null; if (list.size() > 0) { if (!list.isEmpty()) { for (TjOrder order : list) { //筛选有调查问卷的 LambdaQueryWrapper<TjSurveyRecord> wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TjSurveyRecord::getTjnumber, order.getTjNumber()); List<TjSurveyRecord> one = surveyRecordService.list(wqq1); if (one.size() == 0) { if (one.isEmpty()) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); @@ -383,7 +386,7 @@ LambdaQueryWrapper<TjSurveyRecord> wqq = new LambdaQueryWrapper<>(); wqq.eq(TjSurveyRecord::getTjnumber, order.getTjNumber()); List<TjSurveyRecord> one = surveyRecordService.list(wqq); if (one.size() == 0) { if (one.isEmpty()) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); @@ -1099,7 +1102,7 @@ // if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber; String tjNumber = (SecurityUtils.getUsername() + IdUtils.getTjNumber()); String tjNumber = (SecurityUtils.getUsername() + idUtils.getTjNumber()); if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber; tjOrder.setTjNumber(tjNumber); @@ -1558,15 +1561,11 @@ // } // } // }); String tjh = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); String finalTjh = tjh; Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() { @Override public AjaxResult call() throws Exception { return getAjaxResult(aLong, sysUser, daoDto.getTjCategory(), finalTjh); return getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); } }); try { @@ -1580,7 +1579,7 @@ errTjh.add(userId); } } catch (InterruptedException | ExecutionException e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); } } @@ -1588,7 +1587,7 @@ } // TODO 因为有体检号会查出空数据 先使用死数据 打印导诊单 if (!tjNumbers.isEmpty()) { Map<String, Object> map = null; /* Map<String, Object> map = null; try { map = PDFDocumentUtil.getDocument(); Document document = (Document) map.get("document"); @@ -1643,15 +1642,19 @@ } catch (IOException | DocumentException e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); } return AjaxResult.success("操作成功"); }*/ Map<String,Object> map=new HashMap<>(); map.put("tjh",tjNumbers); return AjaxResult.success("操作成功",map); } if (!errTjh.isEmpty()){ return AjaxResult.success("以上人员签到失败",errTjh); Map<String,Object> map=new HashMap<>(); map.put("errtjh",errTjh); return AjaxResult.success("以上人员签到失败",map); } return AjaxResult.success(); } TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } @@ -1665,7 +1668,7 @@ return AjaxResult.success(hashMap); } // @Transactional @Transactional public void getAjaxResults(String cusIdcard) { if (!"".equals(cusIdcard) && cusIdcard != null) { //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 @@ -1800,8 +1803,8 @@ DynamicDataSourceContextHolder.clearDataSourceType(); } // @Transactional public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory,String tjh) throws IOException { @Transactional public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException { LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>(); wq.eq(TjCustomer::getCusId, userId); @@ -1858,14 +1861,33 @@ // tjReservationService.updateById(tjReservation); //生成体检号 String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); // String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); // tjNumber = tjNumber.replaceAll(".{6}$", userId.toString().substring(userId.toString().length() - 6)); tjNumber = tjNumber.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4)); tjh = tjh.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4)); //获取拼接前缀 String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix"); String tjNumber = (sysUser.getUserName() + idUtils.getTjNumber()); if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber; // tjOrder.setTjNumber(tjNumber); tjOrder.setTjNumber(tjh); // if (redisCache.hasKey(TJH)) { // while (true){ // List<String> tjh = redisCache.getCacheList(TJH); // if(tjh.contains(tjNumber)){ // tjNumber =(sysUser.getUserName() + IdUtils.getTjNumber()); // if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber; // }else { // tjh.add(tjNumber); // } // } // }else { // List<String> stringList = tjOrderService. // list(new LambdaQueryWrapper<TjOrder>().select(TjOrder::getTjNumber)).stream().map(TjOrder::getTjNumber).collect(Collectors.toList()); // stringList.add(tjNumber); // redisCache.setCacheList(TJH,stringList); // } tjOrder.setTjNumber(tjNumber); if (null != tjOrder.getPhoto()) { File file = new File(tjOrder.getPhoto()); if (file.isFile()) { @@ -1910,8 +1932,12 @@ tjFlowingWater.setUpdateTime(date); tjFlowingWater.setCreateBy(sysUser.getNickName()); tjFlowingWater.setUpdateBy(sysUser.getNickName()); tjFlowingWater.setCopeWith(tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber())); tjFlowingWater.setPaidIn(tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber())); // BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber()); BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNumIsNull(tjCustomer.getCusIdcard()); tjFlowingWater.setCopeWith(bigDecimal); // BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber()); BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNumIsNull(tjCustomer.getCusIdcard()); tjFlowingWater.setPaidIn(bigDecimal1); tjFlowingWater.setDiscount(String.valueOf(10)); tjFlowingWater.setPayStasus(1L); tjFlowingWater.setPayType(3L); ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java
@@ -221,6 +221,7 @@ public AjaxResult getCusList(@RequestParam(defaultValue = "1") @ApiParam(value = "0是1否") Integer isSignFor, @RequestParam(required = false) @ApiParam(value = "体检号") String tjNum, @RequestParam(required = false) @ApiParam(value = "客户姓名") String name, @RequestParam(required = false) @ApiParam(value = "单位") String dw, @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "开始时间") @RequestParam(required = false) String beginTime, @@ -234,6 +235,17 @@ wrapper.like(TjSampling::getCusName, name); if (null != beginTime && null != endTime && StrUtil.isNotBlank(beginTime) && StrUtil.isNotBlank(endTime)) wrapper.between(TjSampling::getApplicationTime, beginTime, endTime); if (StrUtil.isNotBlank(dw)){ LambdaQueryWrapper<TjOrder> wqq=new LambdaQueryWrapper<>(); wqq.like(TjOrder::getFirmId,dw); wqq.select(TjOrder::getTjNumber); List<TjOrder> orderList = orderService.list(wqq); if(null !=orderList && !orderList.isEmpty()){ List<String> list = orderList.stream().map(TjOrder::getTjNumber).collect(Collectors.toList()); wrapper.in(TjSampling::getTjNum, list); } } wrapper.groupBy(TjSampling::getCusId); wrapper.orderByDesc(TjSampling::getCreateTime); // wrapper.last("LIMIT " + (pageNum - 1) * pageSize + "," + pageSize); @@ -243,6 +255,8 @@ for (TjSampling tjSampling : list) { TjCustomer customer = customerService.getById(tjSampling.getCusId()); if(null !=customer){ TjOrder order = orderService.getOrderByTjNum(tjSampling.getTjNum()); customer.setCompName(order.getFirmName()); customer.setCusName(customer.getCusName()); customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); ltkj-admin/src/test/java/zwxTest.java
@@ -10,6 +10,7 @@ import com.ltkj.LtkjApplication; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.core.domain.entity.DictUserInfo; import com.ltkj.common.core.redis.RedisCache; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.hisDto.OutpintestapplyDetailsDto; import com.ltkj.hosp.lisDto.LisSaveSqdxxDto; @@ -31,6 +32,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @@ -59,6 +61,10 @@ private ITjReportTemplateService reportTemplateService; @Autowired private HisPDFUtil hisPDFUtil; @Autowired private RedisCache redisCache; @Autowired private RedisTemplate<String,Object> redisTemplate; public static String generateId() { String id; @@ -110,4 +116,10 @@ reportTemplateService.save(template); } @Test public void test11(){ redisCache.setCacheList("list1",new ArrayList<>()); redisTemplate.opsForList().set("list2",0,new ArrayList<>()); } } ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java
@@ -18,6 +18,7 @@ public class IdUtils { private static final String LIS_LAST_ID_KEY = "id:generate:lis:id"; private static final String TJH_LAST_ID_KEY = "id:generate:tjhs:tjh"; private static final String LIS_LAST_ID_INCR_KEY = "id:generate:lis:id:incr"; private static final String LIS_CURRENT_DATE_KEY = "id:generate:lis:currentDate"; @@ -68,16 +69,35 @@ private static long lastTimestamp = -1; private static final Random random = new Random(); public static synchronized String getTjNumber() { long timestamp = System.currentTimeMillis(); // 获取当前时间戳(毫秒) // public static synchronized String getTjNumber() { // long timestamp = System.currentTimeMillis(); // 获取当前时间戳(毫秒) // // // 如果时间戳和上次生成的时间戳相同,生成一个新的随机数 // if (timestamp == lastTimestamp) { // return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100); // } else { // lastTimestamp = timestamp; // 更新最后生成时间戳 // return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100); // } // } // 如果时间戳和上次生成的时间戳相同,生成一个新的随机数 if (timestamp == lastTimestamp) { return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100); public synchronized String getTjNumber() { String currentDate = new SimpleDateFormat("yyyyMMdd").format(new Date()); String storedDate = stringRedisTemplate.opsForValue().get(LIS_CURRENT_DATE_KEY); String lastIdStr = stringRedisTemplate.opsForValue().get(TJH_LAST_ID_KEY); if (StrUtil.isBlank(lastIdStr))lastIdStr = "0"; int lastId; if (storedDate == null || !storedDate.equals(currentDate)) { lastId = 1; stringRedisTemplate.opsForValue().set(TJH_LAST_ID_KEY, String.valueOf(lastId)); stringRedisTemplate.opsForValue().set(LIS_CURRENT_DATE_KEY, currentDate); } else { lastTimestamp = timestamp; // 更新最后生成时间戳 return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100); lastId = Integer.parseInt(lastIdStr) + 1; stringRedisTemplate.opsForValue().set(TJH_LAST_ID_KEY, String.valueOf(lastId)); } String yyMMdd = currentDate.substring(2); return String.format("%s%05d", yyMMdd, lastId); } ltkj-common/src/main/java/com/ltkj/common/utils/PDFDocumentUtil.java
@@ -95,7 +95,7 @@ map.put(EncodeHintType.CHARACTER_SET,"utf-8"); BitMatrix encode = null; try { encode = new MultiFormatWriter().encode(tjNumber, BarcodeFormat.CODE_128, 300, 100, map); encode = new MultiFormatWriter().encode(tjNumber, BarcodeFormat.CODE_128, 500, 100, map); } catch (WriterException e) { e.printStackTrace(); } ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TbTransitionMapper.java
@@ -378,9 +378,15 @@ @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE a.tj_num=#{tjNum} AND a.parent_pro_id=#{proId}") BigDecimal getTbTransitionOrdPriceByTjNumAndParentId(@Param("tjNum")String tjNum,@Param("proId")String proId); @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE a.tj_num=#{tjNum}") @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE a.tj_num=#{tjNum} ") BigDecimal sumTbTransitionOrdPriceByTjNum(@Param("tjNum")String tjNum); @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE a.cus_id=#{tjNum} and isnull(a.tj_num)") BigDecimal sumTbTransitionOrdPriceByTjNumIsNull(@Param("tjNum")String tjNum); @Select("SELECT SUM(a.now_price) FROM tb_transition a WHERE a.tj_num=#{tjNum}") BigDecimal sumTbTransitionNowPriceByTjNum(@Param("tjNum")String tjNum); @Select("SELECT SUM(a.now_price) FROM tb_transition a WHERE a.cus_id=#{tjNum} and isnull(a.tj_num)") BigDecimal sumTbTransitionNowPriceByTjNumIsNull(@Param("tjNum")String tjNum); }