|
|
@@ -1,33 +1,28 @@
|
|
|
package thyyxxk.webserver.service.zhuyuanyisheng;
|
|
|
|
|
|
-import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
-import cn.hutool.core.date.DateTime;
|
|
|
-import cn.hutool.core.util.ArrayUtil;
|
|
|
+import cn.hutool.core.thread.ThreadUtil;
|
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.google.errorprone.annotations.Var;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import thyyxxk.webserver.config.exception.BizException;
|
|
|
import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
import thyyxxk.webserver.constants.Capacity;
|
|
|
import thyyxxk.webserver.constants.Message;
|
|
|
import thyyxxk.webserver.dao.his.zhuyuanyisheng.CheckTheCallbackDao;
|
|
|
import thyyxxk.webserver.dao.his.zhuyuanyisheng.JianYanJianChaDao;
|
|
|
import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao;
|
|
|
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.YjReqLargeScaleProjectDao;
|
|
|
import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
|
|
|
import thyyxxk.webserver.entity.login.UserInfo;
|
|
|
import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.*;
|
|
|
-import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.dto.JyJcCheckItemDto;
|
|
|
-import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.dto.RepelJyJc;
|
|
|
+import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.dto.YjReqLargeScaleProject;
|
|
|
import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.vo.PrintYshReqVo;
|
|
|
import thyyxxk.webserver.entity.zhuyuanyisheng.jianyanjiancha.vo.ViewInspectionItemDetailsVo;
|
|
|
import thyyxxk.webserver.entity.zhuyuanyisheng.query.ChaXunJianChaHeJianYan;
|
|
|
@@ -39,9 +34,7 @@ import thyyxxk.webserver.service.PublicServer;
|
|
|
import thyyxxk.webserver.service.hutoolcache.UserCache;
|
|
|
import thyyxxk.webserver.utils.*;
|
|
|
|
|
|
-import java.lang.reflect.Array;
|
|
|
import java.lang.reflect.Field;
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -64,6 +57,7 @@ public class JianYanJianChaShenQingService {
|
|
|
private final SocketV2 socketV2;
|
|
|
private final UserCache userCache;
|
|
|
public static final String JC_TYPE = "3";
|
|
|
+ private final YjReqLargeScaleProjectDao scaleProjectDao;
|
|
|
|
|
|
/*-------------------------------------------------------------- 下面是检查的逻辑 -----------------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
@@ -462,294 +456,37 @@ public class JianYanJianChaShenQingService {
|
|
|
}
|
|
|
XinZhenYiZhu huanZheXinXi = yiZhuLuRuDao.queryPatientInfo(param.getInpatientNo(), param.getAdmissTimes());
|
|
|
publicServer.huanZheJieSuan(param.getInpatientNo(), param.getAdmissTimes());
|
|
|
- int index = 1;
|
|
|
- List<String> content = new ArrayList<>();
|
|
|
- StringBuilder cuoWuXinXi = new StringBuilder();
|
|
|
|
|
|
- Set<String> jcCodes = new HashSet<>();
|
|
|
- Set<String> jyCodes = new HashSet<>();
|
|
|
+ JianYanJianChaVerify verify = new JianYanJianChaVerify(param, huanZheXinXi);
|
|
|
|
|
|
- Map<String, Integer> itemCount = new HashMap<>();
|
|
|
-
|
|
|
- for (YshYjReq item : param.getList()) {
|
|
|
- boolean isCheck = JC_TYPE.equals(param.getReqType());
|
|
|
- item.setForeachIndex(index);
|
|
|
- item.setReqType(param.getReqType());
|
|
|
-
|
|
|
- if (item.getQuantity() == null) {
|
|
|
- item.setQuantity(BigDecimal.ONE);
|
|
|
- }
|
|
|
- if (StringUtil.notBlank(item.getJzFlag()) && "0".equals(item.getJzFlag())) {
|
|
|
- item.setJzFlag(null);
|
|
|
- }
|
|
|
- if (StringUtil.notBlank(item.getYbSelfFlag()) && "0".equals(item.getYbSelfFlag())) {
|
|
|
- item.setYbSelfFlag(null);
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getOrderCode())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "项目编码不能为空"));
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getOrderName())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "项目名称不能为空"));
|
|
|
- }
|
|
|
- if (item.getStartTime() == null) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "检查时间不能为空"));
|
|
|
- } else if (DateUtil.shiJianDaXiao(huanZheXinXi.getAdmissDate(), item.getStartTime(), ">")) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "医嘱时间不能小于入院时间"));
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getExecDept())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "执行科室不能为空。"));
|
|
|
- }
|
|
|
- if (isCheck) {
|
|
|
- jcCodes.add(item.getOrderCode());
|
|
|
- if (StringUtil.isBlank(item.getReqComment())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "病室摘要不能为空。"));
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getReqTzComment())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "体征信息不能为空。"));
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getReqOtherResult())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "相关辅检结果不能为空。"));
|
|
|
- }
|
|
|
- if (StringUtil.isBlank(item.getDiagCode())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "临床诊断不能为空。"));
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (StringUtil.isBlank(item.getInspectStuff())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(index, "标本不能为空。"));
|
|
|
- }
|
|
|
- jyCodes.add(item.getOrderCode());
|
|
|
- }
|
|
|
- if (cuoWuXinXi.length() > 0) {
|
|
|
- cuoWuXinXi.append("<br>");
|
|
|
- }
|
|
|
- content.add(String.format("%s:<span style='color:#409eff'>【%s】</span><br>" +
|
|
|
- "患者姓名:<span style='color:#409eff'>【%s】</span><br>" +
|
|
|
- "床位:<span style='color:#409eff'>【%s】</span>",
|
|
|
- JC_TYPE.equals(item.getReqType()) ? "检查名" : "检验名",
|
|
|
- item.getOrderName(), huanZheXinXi.getName(), huanZheXinXi.getBedNo()));
|
|
|
- index++;
|
|
|
+ if (verify.isFail()) {
|
|
|
+ return R.fail(ExceptionEnum.JIAN_CHA_JIAN_YAN_FAIL, JSONObject.toJSONString(verify.getError()));
|
|
|
}
|
|
|
|
|
|
- Map<String, JyJcCheckItemDto> jc = getItemInfo(jcCodes, true);
|
|
|
- Map<String, JyJcCheckItemDto> jy = getItemInfo(jyCodes, false);
|
|
|
-
|
|
|
- List<String> needPart = new ArrayList<>();
|
|
|
-
|
|
|
- if (JC_TYPE.equals(param.getReqType())) {
|
|
|
- needPart = dao.selectBuWeiParentCode();
|
|
|
- List<YshYjReq> yshYjReqs = handleSurcharge(param.getList(), jc);
|
|
|
- param.getList().addAll(yshYjReqs);
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 0; i < param.getList().size(); i++) {
|
|
|
- YshYjReq item = param.getList().get(i);
|
|
|
- int finalI = item.getForeachIndex();
|
|
|
- if (item.getJzFlag() == null) {
|
|
|
- item.setJzFlag("0");
|
|
|
- }
|
|
|
- JyJcCheckItemDto itemInfo;
|
|
|
- // 检查
|
|
|
- if (JC_TYPE.equals(param.getReqType())) {
|
|
|
- itemInfo = jc.get(item.getOrderCode());
|
|
|
- if (needPart.contains(itemInfo.getOrderType())) {
|
|
|
- if (StringUtil.isBlank(item.getInspectPart())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "此项目部位不能为空,请选择。"));
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 检验
|
|
|
- itemInfo = jy.get(item.getOrderCode());
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo == null) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "未查询到此项目,请删除"));
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- Integer age = huanZheXinXi.patientAge();
|
|
|
-
|
|
|
- if (itemInfo.getDelFlag()) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "项目已停用:【" + itemInfo.getName() + "】"));
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getZyFlag()) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "项目在住院已停用:【" + itemInfo.getName() + "】"));
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getLimitTimes() != null && itemInfo.getLimitTimes() > 0) {
|
|
|
- Integer merge = itemCount.merge(item.getOrderCode(), 1, Integer::sum);
|
|
|
- if (merge > itemInfo.getLimitTimes()) {
|
|
|
- item.setChargeFee(BigDecimal.ZERO);
|
|
|
- item.setQuantity(BigDecimal.ZERO);
|
|
|
- } else {
|
|
|
- item.setChargeFee(null);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getGenderRestriction() != null && !itemInfo.getGenderRestriction().equals(huanZheXinXi.getSex())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "患者的性别不能开这个项目。"));
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getMaxAgeRestriction() != null && itemInfo.getMaxAgeRestriction() <= age) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "项目最大年龄限制" + itemInfo.getMaxAgeRestriction() + "岁,患者年龄不符合。"));
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getMinAgeRestriction() != null && itemInfo.getMinAgeRestriction() >= age) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "项目最小年龄限制" + itemInfo.getMinAgeRestriction() + "岁,患者年龄不符合。"));
|
|
|
- }
|
|
|
-
|
|
|
- if (itemInfo.getItemInfoList() == null) {
|
|
|
- // 项目里面没有关联任何费用
|
|
|
- continue;
|
|
|
- }
|
|
|
+ List<YjReqLargeScaleProject> yjReqLargeScaleProjects = new ArrayList<>();
|
|
|
|
|
|
- itemInfo.getItemInfoList().forEach(value -> {
|
|
|
- if (value.getItemDelFlag()) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "项目已停用:【" + value.getName() + "】"));
|
|
|
- }
|
|
|
- if (value.getOrderDelFlag()) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "医嘱已停用:【" + value.getName() + "】"));
|
|
|
- }
|
|
|
- });
|
|
|
- jyjcRepel(huanZheXinXi, param.getList(), finalI, cuoWuXinXi, jcCodes, jyCodes, JC_TYPE.equals(param.getReqType()));
|
|
|
- }
|
|
|
-
|
|
|
- if (StringUtil.notBlank(cuoWuXinXi.toString())) {
|
|
|
- throw new BizException(ExceptionEnum.LOGICAL_HTML_ERROR, String.valueOf(cuoWuXinXi));
|
|
|
- }
|
|
|
List<Integer> reqNos = new ArrayList<>();
|
|
|
// 生成 医嘱号和申请号
|
|
|
- for (YshYjReq item : param.getList()) {
|
|
|
+ for (int i = 0; i < param.getList().size(); i++) {
|
|
|
+ YshYjReq item = param.getList().get(i);
|
|
|
item.setActOrderNo(publicServer.getActOrderNo());
|
|
|
item.setReqNo(publicServer.getReqPageNo());
|
|
|
reqNos.add(item.getReqNo());
|
|
|
- }
|
|
|
- insertData(param, huanZheXinXi, content);
|
|
|
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "操作成功", reqNos);
|
|
|
- }
|
|
|
-
|
|
|
- private void jyjcRepel(XinZhenYiZhu huanZheXinXi,
|
|
|
- List<YshYjReq> items,
|
|
|
- int finalI,
|
|
|
- StringBuilder cuoWuXinXi,
|
|
|
- Set<String> jcCodes,
|
|
|
- Set<String> jyCodes,
|
|
|
- boolean isCheck) {
|
|
|
-
|
|
|
- YshYjReq item = items.get(finalI - 1);
|
|
|
- List<RepelJyJc> repelJyJcs = dao.selectRepelJyJc(item.getOrderCode());
|
|
|
-
|
|
|
- if (!repelJyJcs.isEmpty()) {
|
|
|
- RepelJyJc repelJyJc = repelJyJcs.get(0);
|
|
|
- String dateTime = DateUtil.formatDate(DateUtil
|
|
|
- .date()
|
|
|
- .offset(DateField.HOUR, -repelJyJc.getRepelHour()), DateUtil.DEFAULT_PATTERN);
|
|
|
-
|
|
|
- for (RepelJyJc jyJcRepel : repelJyJcs) {
|
|
|
- Set<String> tmp;
|
|
|
- if (isCheck) {
|
|
|
- tmp = jcCodes;
|
|
|
- } else {
|
|
|
- tmp = jyCodes;
|
|
|
- }
|
|
|
- if (tmp.contains(jyJcRepel.getRepelCode())) {
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, "两种项目不能同时开具,项目名字:" + getName(items, jyJcRepel.getRepelCode())));
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- QueryWrapper<?> qw = new QueryWrapper<>()
|
|
|
- .eq("inpatient_no", huanZheXinXi.getInpatientNo())
|
|
|
- .eq("admiss_times", huanZheXinXi.getAdmissTimes())
|
|
|
- .in("order_code", repelJyJcs.stream().map(RepelJyJc::getRepelCode).collect(Collectors.toSet()))
|
|
|
- .ge("sys_date", dateTime);
|
|
|
- List<YshYjReq> repelNames = dao.selectJcJyRepel(qw);
|
|
|
- if (!repelNames.isEmpty()) {
|
|
|
- for (YshYjReq tmp : repelNames) {
|
|
|
- RepelJyJc tmpRepel = repelJyJcs.stream()
|
|
|
- .filter(i -> i.getRepelCode().equals(tmp.getOrderCode()))
|
|
|
- .findFirst().orElse(new RepelJyJc());
|
|
|
- String format = StrUtil.format("当前项目和:【{}】,需要间隔:【{}】小时才能重新开具", tmp.getOrderName(),
|
|
|
- tmpRepel.getRepelHour());
|
|
|
- cuoWuXinXi.append(baoCunCuoWuXinXi(finalI, format));
|
|
|
- }
|
|
|
+ YjReqLargeScaleProject scaleProject = verify.getNeedReqReason().get(String.valueOf(i + 1));
|
|
|
+ if (scaleProject != null) {
|
|
|
+ scaleProject.setReqNo(item.getReqNo());
|
|
|
+ yjReqLargeScaleProjects.add(scaleProject);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- private String getName(List<YshYjReq> data, String code) {
|
|
|
- return data.stream()
|
|
|
- .filter(item -> item.getOrderCode().equals(code))
|
|
|
- .findFirst()
|
|
|
- .map(YshYjReq::getOrderName)
|
|
|
- .orElse("");
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- private Map<String, JyJcCheckItemDto> getItemInfo(Set<String> itemCodes, Boolean isCheck) {
|
|
|
- Map<String, JyJcCheckItemDto> collect = new HashMap<>();
|
|
|
- if (!itemCodes.isEmpty()) {
|
|
|
- QueryWrapper<?> qw = new QueryWrapper<>();
|
|
|
- qw.in("zy_order_code", itemCodes);
|
|
|
- String col = "";
|
|
|
- String tableName = "jy_zd_item";
|
|
|
- if (isCheck) {
|
|
|
- col = ",limit_times,(select rtrim(c.zy_order_code) from jc_zd_item c where c.code = jc_zd_item.surcharge) as surcharge," +
|
|
|
- "(select rtrim(c.name) from jc_zd_item c where c.code = jc_zd_item.surcharge) as surcharge_name ";
|
|
|
- tableName = "jc_zd_item";
|
|
|
- }
|
|
|
-
|
|
|
- Map<String, JyJcCheckItemDto> info = dao.selectJyJcCheckItemDtoByOrderCode(qw, tableName, col)
|
|
|
- .stream()
|
|
|
- .collect(
|
|
|
- Collectors
|
|
|
- .toMap(JyJcCheckItemDto::getCode, a -> a, (a, b) -> a)
|
|
|
- );
|
|
|
- collect.putAll(info);
|
|
|
- QueryWrapper<?> qw2 = new QueryWrapper<>();
|
|
|
- qw2.in("a.order_code", itemCodes);
|
|
|
- List<JyJcCheckItemDto.ItemInfo> itemInfos = dao.selectItemDetailsByOrderCode(qw2);
|
|
|
- for (JyJcCheckItemDto.ItemInfo item : itemInfos) {
|
|
|
- JyJcCheckItemDto jyJcCheckItemDtos = collect.get(item.getCode());
|
|
|
- if (jyJcCheckItemDtos != null) {
|
|
|
- if (jyJcCheckItemDtos.getItemInfoList() == null) {
|
|
|
- jyJcCheckItemDtos.setItemInfoList(new ArrayList<>());
|
|
|
- }
|
|
|
- jyJcCheckItemDtos.getItemInfoList().add(item);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return collect;
|
|
|
- }
|
|
|
-
|
|
|
- private List<YshYjReq> handleSurcharge(List<YshYjReq> list, Map<String, JyJcCheckItemDto> jc) {
|
|
|
- List<YshYjReq> tmp = new ArrayList<>();
|
|
|
- Set<String> jcCodes = new HashSet<>();
|
|
|
- for (YshYjReq item : list) {
|
|
|
- if (!(item.getSurchargeFlag() != null && item.getSurchargeFlag())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- JyJcCheckItemDto jyJcCheckItemDto = jc.get(item.getOrderCode());
|
|
|
- if (jyJcCheckItemDto == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (StrUtil.isBlank(jyJcCheckItemDto.getSurcharge())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- YshYjReq clone = EntityCopy.Copy(item, YshYjReq.class);
|
|
|
- jcCodes.add(jyJcCheckItemDto.getSurcharge());
|
|
|
-
|
|
|
- clone.setOrderCode(jyJcCheckItemDto.getSurcharge());
|
|
|
- clone.setOrderName(jyJcCheckItemDto.getSurchargeName());
|
|
|
- clone.setGroupName(jyJcCheckItemDto.getSurchargeName());
|
|
|
- tmp.add(clone);
|
|
|
- }
|
|
|
- Map<String, JyJcCheckItemDto> itemInfo = getItemInfo(jcCodes, true);
|
|
|
- jc.putAll(itemInfo);
|
|
|
- return tmp;
|
|
|
+ insertData(param, huanZheXinXi, verify.getMessageContent(), yjReqLargeScaleProjects);
|
|
|
+ return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "操作成功", reqNos);
|
|
|
}
|
|
|
|
|
|
- public void insertData(TianJiaJianChaJianYan param, XinZhenYiZhu patInfo, List<String> content) {
|
|
|
+ public void insertData(TianJiaJianChaJianYan param,
|
|
|
+ XinZhenYiZhu patInfo,
|
|
|
+ List<String> content,
|
|
|
+ List<YjReqLargeScaleProject> yjReqLargeScaleProjects) {
|
|
|
String userCode = TokenUtil.getInstance().getTokenUserId();
|
|
|
|
|
|
Date reqDate = new Date();
|
|
|
@@ -776,16 +513,13 @@ public class JianYanJianChaShenQingService {
|
|
|
patInfo.getDeptCode(),
|
|
|
PublicServer.getInfantFlag(patInfo.getInpatientNo()),
|
|
|
reqDate);
|
|
|
- try {
|
|
|
- publicServer.faSongXiaoXi(patInfo, content, "新增检查/检验", TokenUtil.getInstance().getTokenUserId());
|
|
|
- } catch (Exception e) {
|
|
|
- log.error(e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
- public String baoCunCuoWuXinXi(int index, String xinXi) {
|
|
|
- return String.format("第【%d】个%s<br>", index, xinXi);
|
|
|
+ if (!yjReqLargeScaleProjects.isEmpty()) {
|
|
|
+ scaleProjectDao.insert(yjReqLargeScaleProjects);
|
|
|
+ }
|
|
|
+ ThreadUtil.execute(() -> {
|
|
|
+ publicServer.faSongXiaoXi(patInfo, content, "新增检查/检验", TokenUtil.getInstance().getTokenUserId());
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/*-------------------------------------------------------------- 下面是检验的逻辑 -----------------------------------------------------------------------------------------------------*/
|