From a1e256f64930865ae2d170e333ee3f1a773c6c49 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 11:04:29 +0800
Subject: [PATCH] 出入院模块、门急诊模块、模块模块、宣教模块
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java | 184 +++++++++++++++++++++++++++++++--------------
1 files changed, 127 insertions(+), 57 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index 6540161..743be2d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -29,6 +29,27 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
+import com.ruoyi.template.domain.HeLibrary;
+import com.ruoyi.template.domain.IvrLibaScriptAssort;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthosp;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthospQueryReq;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
+import com.ruoyi.outpatientvisit.api.OuthospDataFacade;
+import com.ruoyi.template.domain.IvrTaskTemplate;
+import com.ruoyi.template.domain.IvrTaskTemplateScriptVO;
+import com.ruoyi.template.domain.IvrTaskTemplateTargetoption;
+import com.ruoyi.template.service.IIvrTaskTemplateService;
+import com.ruoyi.template.domain.IvrLibaTemplateScript;
+import com.ruoyi.template.mapper.IvrLibaScriptAssortMapper;
+import com.ruoyi.template.service.IIvrLibaTemplateScriptService;
+import com.ruoyi.template.domain.SvyLibScriptCategory;
+import com.ruoyi.template.domain.SvyLibTemplateScript;
+import com.ruoyi.template.domain.SvyTaskTemplate;
+import com.ruoyi.template.domain.SvyTaskTemplateScriptVO;
+import com.ruoyi.template.domain.SvyTaskTemplateTargetoption;
+import com.ruoyi.template.mapper.SvyLibScriptCategoryMapper;
+import com.ruoyi.template.service.ISvyTaskTemplateService;
/**
* 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞�
*
@@ -40,6 +61,18 @@
public class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService {
@Autowired
private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper;
+
+ /**
+ * 璺ㄦā鍧楄闂竴寰嬬粡妯″潡闂ㄩ潰锛堢姝㈢洿杩炲凡鎼蛋鐨� Mapper锛夈��
+ */
+ @Autowired
+ private OuthospDataFacade outhospDataFacade;
+
+ /**
+ * 璺ㄦā鍧楄闂竴寰嬬粡妯″潡闂ㄩ潰锛堢姝㈢洿杩炲凡鎼蛋鐨� Mapper锛夈��
+ */
+ @Autowired
+ private InhospVisitFacade inhospVisitFacade;
@Autowired
private ServiceSubtaskMapper serviceSubtaskMapper;
@@ -66,11 +99,7 @@
private PatArchiveMapper patArchiveMapper;
- @Autowired
- private PatMedInhospMapper patMedInhospMapper;
- @Autowired
- private PatMedOuthospMapper patMedOuthospMapper;
@Autowired
private IServiceSubtaskDetailTraceService traceService;
@@ -81,8 +110,6 @@
@Autowired
private ISvyLibTemplateScriptService svyLibTemplateScriptService;
- @Autowired
- private ISvyTaskTemplateTargetoptionService svyTaskTemplateTargetoptionService;
@Autowired
private IIvrTaskTemplateService ivrTaskTemplateService;
@@ -95,6 +122,66 @@
@Value("${dealDeptCode}")
private String dealDeptCode;
+
+ /**
+ * 瀹夊叏瑙f瀽鍒嗘暟锛歯ull銆佺┖涓层�佺┖鐧戒覆浠ュ強闈炴硶鏍煎紡涓�寰嬫寜 0 澶勭悊锛岄伩鍏� Double.parseDouble 鎶� NumberFormatException
+ *
+ * @param scoreValue 鍒嗘暟瀛楃涓�
+ * @return 瑙f瀽鍚庣殑鍒嗘暟锛屾棤娉曡В鏋愭椂杩斿洖 0
+ */
+ private double parseScore(String scoreValue) {
+ if (StringUtils.isEmpty(scoreValue)) {
+ return 0D;
+ }
+ try {
+ return Double.parseDouble(scoreValue.trim());
+ } catch (NumberFormatException e) {
+ log.warn("鍒嗘暟鏍煎紡闈炴硶锛屾寜 0 澶勭悊锛屽師濮嬪�硷細{}", scoreValue);
+ return 0D;
+ }
+ }
+
+ /**
+ * 灏嗙疮鍔犲悗鐨勫垎鍊兼牸寮忓寲涓鸿惤搴撳瓧绗︿覆锛屽幓鎺夊浣欑殑灏忔暟浣嶏紙濡� 5.0 -> 5锛�
+ *
+ * @param scoreValue 鍒嗗��
+ * @return 鍒嗘暟瀛楃涓�
+ */
+ private String formatScore(double scoreValue) {
+ if (Double.isNaN(scoreValue) || Double.isInfinite(scoreValue)) {
+ log.warn("鍒嗘暟璁$畻缁撴灉闈炴硶锛屾寜 0 澶勭悊锛屽師濮嬪�硷細{}", scoreValue);
+ return "0";
+ }
+ return BigDecimal.valueOf(scoreValue).stripTrailingZeros().toPlainString();
+ }
+
+ /**
+ * 瀹夊叏瑙f瀽寮傚父鏍囪锛歯ull銆佺┖涓层�侀潪娉曟牸寮忎竴寰嬫寜 0锛堟甯革級澶勭悊
+ *
+ * @param isabnormalFlag 寮傚父鏍囪瀛楃涓�
+ * @return 寮傚父鏍囪鍊�
+ */
+ private Integer parseIsabnormal(String isabnormalFlag) {
+ if (StringUtils.isEmpty(isabnormalFlag)) {
+ return 0;
+ }
+ try {
+ return Integer.valueOf(isabnormalFlag.trim());
+ } catch (NumberFormatException e) {
+ log.warn("寮傚父鏍囪鏍煎紡闈炴硶锛屾寜 0 澶勭悊锛屽師濮嬪�硷細{}", isabnormalFlag);
+ return 0;
+ }
+ }
+
+ /**
+ * 褰掍竴鍖栧垎鏁板瓧绗︿覆锛岄伩鍏嶆妸 null 鎴栫┖涓诧紙鍓嶇鏈紶/鏈綔绛旓級鏀惧埌 map 涓紶閫掔粰绱姞閫昏緫
+ *
+ * @param scoreValue 鍘熷鍒嗗��
+ * @return 闈炵┖鍒嗗�硷紝榛樿 "0"
+ */
+ private String normalizeScore(String scoreValue) {
+ return StringUtils.isEmpty(scoreValue) ? "0" : scoreValue.trim();
+ }
/**
* 鏌ヨ浠诲姟闂嵎闂閫夐」
@@ -237,7 +324,7 @@
subtaskCache.put(subtaskCacheKey, initialSubtaskList.get(0));
}
- String score = "0";
+ double scoreTotal = 0D;
Long nextScriptno = null;
aa:
for (String key : targetKeys) {
@@ -271,11 +358,7 @@
if (map == null) continue aa;
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null || score.isEmpty()) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
+ scoreTotal += parseScore(map.get("score"));
}
}
@@ -290,11 +373,7 @@
log.error("nextScriptNo鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
+ scoreTotal += parseScore(map.get("score"));
}
}
}
@@ -313,11 +392,7 @@
Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid, subid);
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null || score.isEmpty()) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
+ scoreTotal += parseScore(map.get("score"));
}
}
@@ -331,11 +406,7 @@
log.error("----nextScriptNo2鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
+ scoreTotal += parseScore(map.get("score"));
}
}
}
@@ -375,7 +446,7 @@
serviceSubtask.setFinishtime(new Date());
serviceSubtask.setUpdateTime(new Date());
log.error("灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}", serviceSubtask);
- if (score != null && !score.isEmpty()) serviceSubtask.setScore(score);
+ serviceSubtask.setScore(formatScore(scoreTotal));
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
//灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴� 9 瀹屾垚锛堢紦瀛� preachform 鏌ヨ锛�
@@ -416,7 +487,7 @@
Long tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
Long pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());
Long subid = Long.valueOf(serviceSubTaskCacheReq.getParam6());
- String score = "0";
+ double scoreTotal = 0D;
if (ObjectUtils.isNotEmpty(serviceSubTaskCacheReq)) {
Long nextScriptno = null;
String isabnormalFlag = "0";
@@ -463,18 +534,16 @@
if (shouldProcess) {
Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid, subid, preServiceSubtaskList, preServiceTask, preDetailIdMap, preTraceIdMap);
- log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (map == null) continue;
+ log.info("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
+ scoreTotal += parseScore(map.get("score"));
+ if (StringUtils.isNotEmpty(map.get("isabnormal"))) {
+ isabnormalFlag = map.get("isabnormal");
}
- isabnormalFlag = map.get("isabnormal");
}
}
} else if (serviceSubTaskCacheReq.getType() == 1) {
@@ -512,12 +581,10 @@
log.error("----nextScriptNo2 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo")))
nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
+ scoreTotal += parseScore(map.get("score"));
+ if (StringUtils.isNotEmpty(map.get("isabnormal"))) {
+ isabnormalFlag = map.get("isabnormal");
}
- isabnormalFlag = map.get("isabnormal");
}
}
}
@@ -533,12 +600,12 @@
serviceSubtask.setTaskid(tid);
serviceSubtask.setPatid(pid);
serviceSubtask.setSubmit(1L);
- serviceSubtask.setIsabnormal(Integer.valueOf(isabnormalFlag));
+ serviceSubtask.setIsabnormal(parseIsabnormal(isabnormalFlag));
serviceSubtask.setSendstate(6L);
serviceSubtask.setExcep(isabnormalFlag);
serviceSubtask.setFinishtime(new Date());
serviceSubtask.setUpdateTime(new Date());
- if (score != null && !score.isEmpty()) serviceSubtask.setScore(score);
+ serviceSubtask.setScore(formatScore(scoreTotal));
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
//灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
@@ -573,13 +640,13 @@
//浣忛櫌
PatMedInhosp patMedInhosp = new PatMedInhosp();
patMedInhosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
- patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+ patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
if (CollectionUtils.isNotEmpty(patMedInhospList)) patid = patMedInhospList.get(0).getPatid();
} else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("2")) {
//闂ㄨ瘖
PatMedOuthospQueryReq patMedOuthosp = new PatMedOuthospQueryReq();
patMedOuthosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
- patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(patMedOuthosp);
+ patMedOuthosps = outhospDataFacade.callSpQueryOuthosp(patMedOuthosp);
if (CollectionUtils.isNotEmpty(patMedOuthosps)) patid = patMedOuthosps.get(0).getPatid();
} else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("3")) {
//鎸囧畾涓�涓儴闂紝鐢ㄦ潵澶勭悊鎶曡瘔寤鸿
@@ -594,7 +661,7 @@
}
if (CollectionUtils.isNotEmpty(serviceSubTaskMYDAnswerReq.getSvyTaskTemplateScriptVOS())) {
- String score = "0";
+ double scoreTotal = 0D;
List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = serviceSubTaskMYDAnswerReq.getSvyTaskTemplateScriptVOS();
Long nextScriptno = null;
@@ -628,11 +695,7 @@
log.error("nextScriptNo 鐨勪俊鎭负锛歿}", map.get("nextScriptNo"));
if (!Objects.isNull(map.get("nextScriptNo"))) nextScriptno = Long.valueOf(map.get("nextScriptNo"));
- if (score == null || score.isEmpty()) {
- score = map.get("score");
- } else {
- score = String.valueOf(Double.parseDouble(score) + Double.parseDouble(map.get("score")));
- }
+ scoreTotal += parseScore(map.get("score"));
if (!Objects.isNull(map.get("id"))) {
idList.add(Long.valueOf(map.get("id")));
@@ -661,6 +724,7 @@
serviceSubtask.setNurseName(patMedInhospList.get(0).getNurseName());
serviceSubtask.setNurseId(patMedInhospList.get(0).getNurseId());
serviceSubtask.setInhospid(patMedInhospList.get(0).getInhospid());
+ serviceSubtask.setCampusid(patMedInhospList.get(0).getCampusid());
serviceSubtask.setServiceType("6");
} else if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
serviceSubtask.setHospType("1");
@@ -670,6 +734,7 @@
serviceSubtask.setDeptcode(patMedOuthosps.get(0).getDeptcode());
serviceSubtask.setDrname(patMedOuthosps.get(0).getDrname());
serviceSubtask.setDrcode(patMedOuthosps.get(0).getDrcode());
+ serviceSubtask.setCampusid(patMedOuthosps.get(0).getCampusid());
serviceSubtask.setServiceType("14");
}
if (!Objects.isNull(patArchive)) {
@@ -680,6 +745,11 @@
serviceSubtask.setSfzh(patArchive.getIdcardno());
serviceSubtask.setAddr(patArchive.getPlaceOfResidence());
serviceSubtask.setOrgid(patArchive.getOrgid());
+ // 闄㈠尯鍏滃簳锛氫綇闄�/闂ㄦ�ヨ瘖璁板綍鐨勯櫌鍖哄湪鏈簱甯镐负绌猴紝鐢ㄦ偅鑰呮。妗堢殑闄㈠尯琛ヤ笂锛�
+ // 鍚﹀垯缁熻鎺ュ彛锛園AddOrgId 鎸夌櫥褰曠敤鎴烽櫌鍖鸿繃婊� service_subtask.campusid锛変細鎶婅繖浜涘瓙浠诲姟鏁存壒涓㈡帀
+ if (StringUtils.isEmpty(serviceSubtask.getCampusid())) {
+ serviceSubtask.setCampusid(patArchive.getCampusid());
+ }
}
if (StringUtils.isNotEmpty(dealDept)) {
//鎶曡瘔寤鸿鐨勫鐞嗛儴闂�
@@ -694,7 +764,7 @@
serviceSubtask.setUpdateTime(new Date());
serviceSubtask.setCreateTime(new Date());
serviceSubtask.setVisitTime(new Date());
- if (score != null && !score.isEmpty()) serviceSubtask.setScore(score);
+ serviceSubtask.setScore(formatScore(scoreTotal));
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
//灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
@@ -998,7 +1068,7 @@
nextScriptNo = getNextScriptNo(svyTaskTemplateScriptVO.getTemplateID(), svyTaskTemplateScriptVO.getScriptContent());
}
if (svyTaskTemplateScriptVO.getScore() != null) {
- score = String.valueOf(svyTaskTemplateScriptVO.getScore());
+ score = normalizeScore(String.valueOf(svyTaskTemplateScriptVO.getScore()));
}
serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
@@ -1009,7 +1079,7 @@
if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {
serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());
if (svyTaskTemplateScriptVO.getScore() != null) {
- score = String.valueOf(svyTaskTemplateScriptVO.getScore());
+ score = normalizeScore(String.valueOf(svyTaskTemplateScriptVO.getScore()));
}
}
nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
@@ -1153,7 +1223,7 @@
Map<String, String> map = new HashMap<>();
map.put("nextScriptNo", nextScriptNo);
- map.put("score", score);
+ map.put("score", normalizeScore(score));
map.put("id", "" + serviceSubtaskDetail.getId());
map.put("isabnormal", isabnormalFlag.toString());
return map;
@@ -1298,7 +1368,7 @@
}
if (ivrTaskTemplateScriptVO.getScore() != null) {
- score = String.valueOf(ivrTaskTemplateScriptVO.getScore());
+ score = normalizeScore(String.valueOf(ivrTaskTemplateScriptVO.getScore()));
}
if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {
serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll("^\"|\"$", ""));
@@ -1319,7 +1389,7 @@
nextScriptNo = "" + getVoiceNextScriptNo(ivrTaskTemplateScriptVO.getTemplateID(), ivrTaskTemplateScriptVO.getScriptContent());
}
if (ivrTaskTemplateScriptVO.getScore() != null) {
- score = String.valueOf(ivrTaskTemplateScriptVO.getScore());
+ score = normalizeScore(String.valueOf(ivrTaskTemplateScriptVO.getScore()));
}
}
}
@@ -1447,7 +1517,7 @@
Map<String, String> map = new HashMap<>();
map.put("nextScriptNo", nextScriptNo);
- map.put("score", score);
+ map.put("score", normalizeScore(score));
map.put("isabnormal", isabnormalFlag);
return map;
}
--
Gitblit v1.9.3