From e4872d9fdd9f277eacc518459418cb406570b99a Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 11 九月 2026 10:57:28 +0800
Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/smartor
---
smartor/src/main/java/com/smartor/service/IServiceExternalService.java | 6
smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java | 50 +++
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java | 148 +++++++++-
smartor/src/main/java/com/smartor/domain/PatSatisfaction.java | 4
smartor/src/main/resources/mapper/smartor/PatSatisfactionMapper.xml | 7
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java | 88 ++++++
ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java | 58 ++++
smartor/src/main/java/com/smartor/mapper/PatMedOperationItemMapper.java | 24 +
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml | 7
ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml | 11
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | 2
smartor/src/main/java/com/smartor/service/IPatSatisfactionService.java | 8
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java | 16
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml | 1
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 99 ++++---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 11
ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java | 40 ++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 13
smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java | 6
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 14
smartor/src/main/resources/mapper/smartor/PatMedOperationItemMapper.xml | 100 +++++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatSatisfactionController.java | 10
22 files changed, 617 insertions(+), 106 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatSatisfactionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatSatisfactionController.java
index acac05a..544bf9d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatSatisfactionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatSatisfactionController.java
@@ -121,14 +121,8 @@
@Log(title = "鎮h�呮弧鎰忓害", businessType = BusinessType.INSERT)
@PostMapping("/batchinsert")
public AjaxResult batchinsert(@RequestBody List<PatSatisfaction> patSatisfaction) {
- LoginUser loginUser = getLoginUser();
- SysUser user = loginUser.getUser();
- for (PatSatisfaction patSatisfaction1 : patSatisfaction) {
- patSatisfaction1.setCreateBy(user.getNickName());
- patSatisfaction1.setOrgid(user.getOrgid());
- patSatisfactionService.insertPatSatisfaction(patSatisfaction1);
- }
- return toAjax(1);
+ Integer row = patSatisfactionService.batchInsert(patSatisfaction);
+ return toAjax(row);
}
/**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index c78d43a..3db95ac 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -1000,9 +1000,14 @@
@PostMapping("/syncMedOperForShiyi")
public AjaxResult syncMedOperForShiyi(@RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime) {
// 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
- CompletableFuture.runAsync(() -> {
- collectHISService.syncOper(startTime, endTime);
- });
+ collectHISService.syncOper(startTime, endTime);
return AjaxResult.success("鍚屾浠诲姟宸插惎鍔紝璇风◢鍚庢煡鐪嬬粨鏋�");
}
+
+ @PostMapping("/dealSubtaskDeadline")
+ public AjaxResult dealSubtaskDeadline(@RequestParam("orgid") String orgid, @RequestParam("day") Integer day) {
+ // 绔嬪嵆杩斿洖锛屽悗鍙板紓姝ユ墽琛�
+ ryTask.dealSubtaskDeadline(orgid, day);
+ return AjaxResult.success("銆恉ealSubtaskDeadline銆戝悓姝ヤ换鍔″凡鍚姩锛屽ぉ鏁颁负" + day + "澶╋紝璇风◢鍚庢煡鐪嬬粨鏋�");
+ }
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java
index 3824360..7134d02 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java
@@ -14,12 +14,18 @@
import com.ruoyi.system.service.ISysUserService;
import com.smartor.domain.SSOTokenResponse;
import com.smartor.domain.SSOUserInfo;
+import com.smartor.domain.ServiceSubtask;
import com.smartor.domain.VO.ServiceSubtaskVO;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
+import com.smartor.service.IServiceSubtaskService;
+import com.smartor.service.impl.ServiceSubtaskServiceImpl;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
+
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.ObjectUtils;
@@ -32,9 +38,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.*;
/**
* SSO鍗曠偣鐧诲綍鎺у埗鍣�
@@ -93,6 +97,9 @@
private ISysConfigService sysConfigService;
private final RestTemplate restTemplate;
+
+ @Autowired
+ private IServiceSubtaskService serviceSubtaskService;
public SSOController() {
// 閰嶇疆RestTemplate瓒呮椂
@@ -188,6 +195,9 @@
@GetMapping("ssoGoServiceSubtaskList")
public RedirectView ssoGoServiceSubtaskList(@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "sfzh", required = false) String sfzh) {
+ // 閲嶅畾鍚戝湴鍧�瀵硅薄(閲嶅畾鍚戝湴鍧�
+ RedirectView redirectView = new RedirectView();
+
log.info("鏀跺埌ssoGoServiceSubtaskList璇锋眰锛屽紑濮嬮噸瀹氬悜鍒版巿鏉冩湇鍔″櫒,code = {}, sfzh = {}",code, sfzh);
String path = sysConfigService.selectConfigByKey("sys.qddz");
String redirectUri = "https://9.208.2.190:8092/prod-api/sso/ssoLoginLyra";
@@ -196,11 +206,21 @@
String clientSecret = "suifangxt";
String scope = "openid";
+ ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
+ subtask.setSfzh(sfzh);
+ subtask.setSort(0);
+ List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.selectServiceSubtaskList(subtask);
+ ServiceSubtask serviceSubtask = null;
+ if(CollectionUtils.isNotEmpty(serviceSubtaskList)){
+ serviceSubtask = serviceSubtaskList.get(0);
+ }else {
+ redirectView.setUrl(path + "/login?error=sso_failed");
+ return redirectView;
+ }
+
// String authorizeUrl = lyraPath + "/mediinfo-lyra-authserver/connect/authorize";
String accessTokenUrl = lyraPath + "/mediinfo-lyra-authserver/connect/token";
String userInfoUrl = lyraPath + "/mediinfo-lyra-authserver/connect/userinfo";
- // 閲嶅畾鍚戝湴鍧�瀵硅薄(閲嶅畾鍚戝湴鍧�
- RedirectView redirectView = new RedirectView();
try {
SSOTokenResponse accessToken = getAccessTokenLyra(code, accessTokenUrl, clientId, clientSecret, redirectUri,true);
log.info("鑾峰彇鍒扮殑token锛�" + accessToken);
@@ -223,8 +243,14 @@
return buildRedirect(path + "/login");
}
- String redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid +
- "&sfzh=" + sfzh + "&orgname=null&ZuHuID=null&deptCode=null";
+ String voiceType = (StringUtils.isNotEmpty(serviceSubtask.getType())
+ && serviceSubtask.getType().equals("1")) ? "1" : "0";
+ String redirectUrl = path + "/loginSSO?token=" + loginToken +
+ "&orgid=" + orgid + "&campusid=" + serviceSubtask.getCampusid() +
+ "&taskid=" + serviceSubtask.getTaskid() + "&patid=" + serviceSubtask.getPatid() +
+ "&id=" + serviceSubtask.getId() + "&voiceType=" + voiceType +
+ "&visitCount=" + serviceSubtask.getVisitCount() + "&sfzh=" + sfzh +
+ "&orgname=null&ZuHuID=null&deptCode=null";
log.info("銆怱SO鐧诲綍銆戦噸瀹氬悜鍦板潃锛歿}", redirectUrl);
return buildRedirect(redirectUrl);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 7562a08..2553843 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserDept;
@@ -220,18 +221,18 @@
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
- List<SysUserDept> sysUserDeptKSs = null;
- List<SysUserDept> sysUserDeptBQs = null;
+ List<SysDept> sysDeptKSs = null;
+ List<SysDept> sysDeptBQs = null;
SysUserDept sysUserDept = new SysUserDept();
sysUserDept.setUserId(user.getUserId());
sysUserDept.setDeptType("1");
sysUserDept.setOrgid(user.getOrgid());
sysUserDept.setCampusid(user.getCampusid());
- sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
- ajax.put("belongDepts", sysUserDeptKSs);
+ sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
+ ajax.put("belongDepts", sysDeptKSs);
sysUserDept.setDeptType("2");
- sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
- ajax.put("belongWards", sysUserDeptBQs);
+ sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept);
+ ajax.put("belongWards", sysDeptBQs);
return ajax;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
new file mode 100644
index 0000000..0b3d55d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
@@ -0,0 +1,58 @@
+package com.ruoyi.common.utils;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public class ArrayListUtils {
+
+ /**
+ * 鏍规嵁ID灏嗕袱涓狶ist鎷嗗垎涓猴細浠匧ist1鐙湁銆佷粎List2鐙湁銆佷袱鑰呭叡鏈�
+ *
+ * @param list1 鍒楄〃1
+ * @param list2 鍒楄〃2
+ * @param idExtractor ID鎻愬彇鍑芥暟
+ * @return Map鍖呭惈涓変釜Key: "onlyIn1", "onlyIn2", "common"
+ */
+ public static <T, K> Map<String, List<T>> splitListsById(List<T> list1, List<T> list2, Function<T, K> idExtractor) {
+ // 1. 鎻愬彇ID闆嗗悎锛岀敤浜庡揩閫熷垽鏂瓨鍦ㄦ��
+ Set<K> ids1 = list1.stream().map(idExtractor).collect(Collectors.toSet());
+ Set<K> ids2 = list2.stream().map(idExtractor).collect(Collectors.toSet());
+
+ // 2. 璁$畻ID灞傞潰鐨勫樊闆嗗拰浜ら泦
+ Set<K> onlyIn1Ids = new HashSet<>(ids1);
+ onlyIn1Ids.removeAll(ids2); // List1鐙湁鐨処D
+
+ Set<K> onlyIn2Ids = new HashSet<>(ids2);
+ onlyIn2Ids.removeAll(ids1); // List2鐙湁鐨処D
+
+ Set<K> commonIds = new HashSet<>(ids1);
+ commonIds.retainAll(ids2); // 鍏辨湁鐨処D
+
+ // 3. 鏍规嵁ID杩囨护鍘熷瀵硅薄鍒楄〃
+ List<T> onlyIn1 = list1.stream()
+ .filter(item -> onlyIn1Ids.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList());
+
+ List<T> onlyIn2 = list2.stream()
+ .filter(item -> onlyIn2Ids.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList());
+
+ // 娉ㄦ剰锛氬叡鏈夐儴鍒嗛�氬父鍚堝苟涓や釜鍒楄〃涓殑鍏冪礌锛屾垨鑰呭彧鍙栧叾涓竴涓��
+ // 杩欓噷绛栫暐鏄細淇濈暀list1鍜宭ist2涓墍鏈塈D閲嶅悎鐨勫璞★紙濡傛灉涓氬姟瑕佹眰鍘婚噸鎴栧悎骞跺璞″睘鎬э紝闇�棰濆澶勭悊锛�
+ List<T> common = new ArrayList<>();
+ common.addAll(list1.stream()
+ .filter(item -> commonIds.contains(idExtractor.apply(item)))
+ .collect(Collectors.toList()));
+// common.addAll(list2.stream()
+// .filter(item -> commonIds.contains(idExtractor.apply(item)))
+// .collect(Collectors.toList()));
+
+ Map<String, List<T>> result = new HashMap<>();
+ result.put("onlyIn1", onlyIn1);
+ result.put("onlyIn2", onlyIn2);
+ result.put("common", common);
+
+ return result;
+ }
+}
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index 3760141..fc3499a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -4,10 +4,13 @@
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysUserDept;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.ArrayListUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.quartz.mapper.CollectHISMapper;
import com.ruoyi.quartz.service.ICollectHISService;
import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatMedOuthospService;
import lombok.extern.slf4j.Slf4j;
@@ -60,6 +63,9 @@
private PatArchiveMapper patArchiveMapper;
@Autowired
+ private ServiceSubtaskMapper serviceSubtaskMapper;
+
+ @Autowired
private ThreadPoolTaskExecutor taskExecutor;
@Autowired
@@ -67,6 +73,9 @@
@Autowired
private UtilsMapper utilsMapper;
+
+ @Autowired
+ private RedisCache redisCache;
private static final long SHARDING_THRESHOLD = 5_000_000L;
private static final String PAT_ARCHIVE_TABLE = "pat_archive";
@@ -339,6 +348,11 @@
log.info("鍚屾鎵嬫湳淇℃伅鏁伴噺" + patMedOperations.size());
for (PatMedOperation operation : patMedOperations) {
try {
+ if(ObjectUtils.isNotEmpty(operation.getCanceltime())){
+ //浣滃簾鍒犻櫎鎿嶄綔
+ cancelOper(operation);
+ continue;
+ }
Long patId = patIdHisMap.get(operation.getPatidHis());
if (patId == null) {
patId = syncSinglePatient(operation.getPatidHis());
@@ -351,12 +365,12 @@
operation.setPatid(patId);
}
PatMedOperation oper = new PatMedOperation();
- oper.setOpid(operation.getOpid());
+ oper.setOpreqid(operation.getOpreqid());
List<PatMedOperation> patMedOperations1 = patMedOperationMapper.selectPatMedOperationList(oper);
if (CollectionUtils.isNotEmpty(patMedOperations1)) {
operation.setId(patMedOperations1.get(0).getId());
operation.setUpdateTime(new Date());
- count += patMedOperationMapper.updatePatMedOperation(patMedOperations1.get(0));
+ count += patMedOperationMapper.updatePatMedOperation(operation);
syncOperItem(operation);
} else {
operation.setCreateTime(new Date());
@@ -370,6 +384,59 @@
return count;
}
+ private Integer cancelOper(PatMedOperation oper){
+ PatMedOperation operationVo = new PatMedOperation();
+ operationVo.setOpreqid(oper.getOpreqid());
+ List<PatMedOperation> operations = patMedOperationMapper.selectPatMedOperationList(operationVo);
+ PatMedOperation operation = new PatMedOperation();
+ if(CollectionUtils.isEmpty(operations)){
+ return 0;
+ }else {
+ operation = operations.get(0);
+ }
+ log.info("鎵嬫湳浣滃簾id=" + operation.getId());
+ PatMedOperationItem pmoi = new PatMedOperationItem();
+ //鑾峰彇闇�瑕佸嚭闄㈡墜鏈殢璁匡紝鏈鐞嗙殑鏁版嵁
+ pmoi.setOpid(operation.getId().toString());
+ List<PatMedOperationItem> patMedOperationItems
+ = patMedOperationItemMapper.selectOperationItemList(pmoi);
+ List<Long> operationItemIds = patMedOperationItems.stream()
+ .map(PatMedOperationItem::getId)
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+
+ //涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=1,2,3,5,7鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝
+ //鏈夌殑璇濓紝绔嬪嵆鍋滀簡
+ List<Long> sendstates = Arrays.asList(1L, 2L, 3L, 5L, 7L);
+ List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setOrgid(operation.getOrgid());
+ serviceSubtaskVO.setPatid(operation.getPatid());
+ serviceSubtaskVO.setSendstates(sendstates);
+ serviceSubtaskVO.setOperationItemIds(operationItemIds);
+ serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ //鍘籸edis涓紝鏌ヨ鏄惁鏈塻ubid锛屾湁鐨勮瘽绉婚櫎cache-exist
+ if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+ for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ log.info("闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+ serviceSubtask.setSendstate(4L);
+ serviceSubtask.setRemark("鎵嬫湳鎾ら攢");
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
+ }
+ }
+ operation.setUpdateTime(new Date());
+ patMedOperationMapper.updatePatMedOperation(operation);
+ patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(operation.getOpid());
+ return 1;
+ }
+
/**
* 鍚屾鎵嬫湳淇℃伅
*
@@ -377,34 +444,67 @@
* @return
*/
private Integer syncOperItem(PatMedOperation operation) {
+ if(ObjectUtils.isNotEmpty(operation.getId())){
+ operation.setOpid(operation.getId().toString());
+ }
+ operation.setUpdateTime(new Date());
+ patMedOperationMapper.updatePatMedOperation(operation);
+
Integer count = 0;
- PatMedOperationItem patMedOperationItem = new PatMedOperationItem();
- patMedOperationItem.setOrgid(operation.getOrgid());
if(StringUtils.isNotEmpty(operation.getOpid())){
- patMedOperationItem.setOpid(operation.getOpid());
- patMedOperationItem.setLastStartTime(operation.getLastStartTime());
- patMedOperationItem.setLastEndTime(operation.getLastEndTime());
- List<PatMedOperationItem> patMedOperationItems = chMapper.selectOperItemList(patMedOperationItem);
+ PatMedOperationItem patMedOperationItem = new PatMedOperationItem();
+ //patMedOperation.opReqid = patMedOperationItem.operationid
+ List<PatMedOperationItem> patMedOperationItems = new ArrayList<>();
+ if (ObjectUtils.isNotEmpty(operation.getOpreqid())){
+ patMedOperationItem.setOperationid(operation.getOpreqid());
+ patMedOperationItems = chMapper.selectOperItemList(patMedOperationItem);
+ }else {
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:鎵嬫湳鐢宠鍗旾D涓虹┖!");
+ return count;
+ }
+
+ PatMedOperationItem operItem = new PatMedOperationItem();
+ operItem.setOperationid(operation.getOpreqid());
+ List<PatMedOperationItem> patMedOperationItems1 = patMedOperationItemMapper.selectPatMedOperationItemList(operItem);
+
+ Map<String, List<PatMedOperationItem>> maps = ArrayListUtils.splitListsById(patMedOperationItems,
+ patMedOperationItems1, PatMedOperationItem::getOperationid);
+ //鍙湪瑙嗗浘鐨勬暟鎹笉鍦ㄦ湰鍦扮殑鏁版嵁锛屾墽琛屾柊澧炴搷浣�
+ List<PatMedOperationItem> addItems = maps.get("onlyIn1");
+ //鍙湪鏈湴鐨勬暟鎹笉鍦ㄨ鍥剧殑鏁版嵁锛屾墽琛屽垹闄ゆ搷浣�
+ List<PatMedOperationItem> delItems = maps.get("onlyIn2");
+ //閲嶅彔鐨勬暟鎹紝鎵ц鏇存柊鎿嶄綔 patMedOperationItems鐨勬暟鎹�
+ List<PatMedOperationItem> editItems = maps.get("common");
+
log.info("鍚屾鎵嬫湳璇︽儏淇℃伅鏁伴噺" + patMedOperationItems.size());
- for (PatMedOperationItem operationItem : patMedOperationItems) {
- try {
+
+ try{
+ for (PatMedOperationItem operationItem : addItems) {
operationItem.setInhospstate(operation.getInhospstate());
operationItem.setSerialnum(operation.getSerialnum());
- PatMedOperationItem operItem = new PatMedOperationItem();
- operItem.setOpid(operationItem.getOpid());
- operItem.setOperationid(operationItem.getOperationid());
- List<PatMedOperationItem> patMedOperationItems1 = patMedOperationItemMapper.selectPatMedOperationItemList(operItem);
- if (CollectionUtils.isNotEmpty(patMedOperationItems1)) {
- operationItem.setId(patMedOperationItems1.get(0).getId());
- operationItem.setUpdateTime(new Date());
- count += patMedOperationItemMapper.updatePatMedOperationItem(operationItem);
- } else {
- operation.setCreateTime(new Date());
- count += patMedOperationItemMapper.insertPatMedOperationItem(operationItem);
- }
- } catch (Exception ex) {
- log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
+ operationItem.setOpid(operation.getId().toString());
+ operationItem.setOperationid(operation.getOpreqid());
+ operationItem.setOpercheckFlag("0");
+ operationItem.setCreateTime(new Date());
+ count += patMedOperationItemMapper.insertPatMedOperationItem(operationItem);
}
+
+ for (PatMedOperationItem operationItem : delItems) {
+ operationItem.setUpdateTime(new Date());
+ count += patMedOperationItemMapper.deletePatMedOperationItemByOperationid(operationItem.getOperationid());
+ }
+
+ for (PatMedOperationItem operationItem : editItems) {
+ operationItem.setInhospstate(operation.getInhospstate());
+ operationItem.setSerialnum(operation.getSerialnum());
+ operationItem.setOpid(operation.getId().toString());
+ operationItem.setOperationid(operation.getOpreqid());
+ operationItem.setUpdateTime(new Date());
+ count += patMedOperationItemMapper.updatePatMedOperationItemByOperationid(operationItem);
+ }
+ log.info("鍚屾鎵嬫湳id={}璇︽儏淇℃伅鏁伴噺, 鏂板{}鏉★紝鍒犻櫎{}鏉★紝淇敼{}鏉�", operation.getId(), addItems.size(), delItems.size(), editItems.size());
+ } catch (Exception ex) {
+ log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
}
// try {
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index a7b1e7b..805cca7 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1771,48 +1771,65 @@
* 澶勭悊瓒呮椂闅忚浠诲姟
* @return
*/
- public void dealSubtaskDeadline(Integer deadlineDay){
+ public void dealSubtaskDeadline(String orgid, Integer deadlineDay){
+ //鑾峰彇浠诲姟淇℃伅
+ ServiceTask st = new ServiceTask();
+ st.setDelFlag("0");
+ st.setLongTask(1);
+ st.setNexttaskflag("1");
+ st.setOrgid(orgid);
+ List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+ for (ServiceTask serviceTask : serviceTasks) {
+ deadlineDay = -deadlineDay;
+ Date deadline = DateUtils.addDays(new Date(), deadlineDay);
+ //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setOrgid(orgid);
+ serviceSubtaskVO.setSendstate(7L);
+ //鍙壂鎻忛娆¢殢璁跨殑
+ serviceSubtaskVO.setVisitCount(1);
+ serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
+ serviceSubtaskVO.setEndOutHospTime(deadline);
+ List<ServiceSubtask> serviceSubtaskList
+ = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ log.info("銆恉ealSubtaskDeadline銆戣幏鍙栧埌{}涓秴鏃朵换鍔�, taskid={}", serviceSubtaskList.size(), serviceTask.getTaskid());
+ for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ PatMedInhosp patMedInhospVo = new PatMedInhosp();
+ patMedInhospVo.setOrgid(serviceSubtask.getOrgid());
+ patMedInhospVo.setInhospid(serviceSubtask.getInhospid());
+ List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhospVo);
+ PatMedInhosp patMedInhosp = new PatMedInhosp();
+ if (!patMedInhospList.isEmpty()) {
+ patMedInhosp = patMedInhospList.get(0);
+ }else {
+ continue;
+ }
+ if(ObjectUtils.isEmpty(serviceTask.getNexttaskid())){
+ continue;
+ }
+ ServiceTask nextServiceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceTask.getNexttaskid());
+ PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
+ String config = configService.selectConfigByKey("visit.early.day");
+ Integer type = 1;
- Date deadline = DateUtils.addDays(new Date(), deadlineDay);
- //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
- ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setSendstate(7L);
- serviceSubtaskVO.setVisitCount(1);
- serviceSubtaskVO.setEndOutHospTime(deadline);
- List<ServiceSubtask> serviceSubtaskList
- = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
- log.info("銆恉ealSubtaskDeadline銆戣幏鍙栧埌{}涓秴鏃朵换鍔�", serviceSubtaskList.size());
- for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
- PatMedInhosp patMedInhosp = new PatMedInhosp();
- patMedInhosp.setInhospid(serviceSubtask.getInhospid());
- List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhosp);
-
- if (patMedInhospList.size() > 0) {
- serviceSubtask.setIsVisitAgain(2);
- serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�" : "鎮h�呭啀鍏ラ櫌浜�");
- serviceSubtask.setSendstate(4L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
- }else {
- continue;
- }
- //鏂板鍐嶆闅忚浠诲姟
- ServiceSubtask serviceSubtaskAgain = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);
- serviceSubtaskAgain.setId(null);
- serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
- serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1);
- serviceSubtaskAgain.setSendstate(2L);
- serviceSubtaskAgain.setCreateTime(new Date());
- serviceSubtaskAgain.setUpdateTime(new Date());
- serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType());
- serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
- serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName());
- int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain);
- if (i == 1) {
- //鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛鍚庯紝鍘熶换鍔℃敼涓哄け璐ョ姸鎬�
- serviceSubtask.setIsVisitAgain(2);
- serviceSubtask.setSendstate(5L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ //鏂板鍐嶆闅忚浠诲姟
+ ServiceSubtask serviceSubtaskAgain = iPatMedInhospService.boxedServiceSubtask(nextServiceTask,
+ patMedInhosp, patArchive, config, type);
+ serviceSubtaskAgain.setId(null);
+ serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
+ serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1);
+ serviceSubtaskAgain.setSendstate(2L);
+ serviceSubtaskAgain.setCreateTime(new Date());
+ serviceSubtaskAgain.setUpdateTime(new Date());
+ serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType());
+ serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
+ serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName());
+ int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain);
+ if (i == 1) {
+ //鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛鍚庯紝鍘熶换鍔℃敼涓哄け璐ョ姸鎬�
+ serviceSubtask.setSendstate(5L);
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ }
}
}
}
diff --git a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
index 9489fe5..9443222 100644
--- a/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
+++ b/ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
@@ -826,6 +826,7 @@
o.paname,
o.opreqid,
o.opreqcode,
+ o.canceltime,
o.opsstatus,
o.optypecode,
o.optypename,
@@ -887,7 +888,7 @@
o.nurse_name ,
o.check_flag ,
o.long_task_reason,
- o.opid ,
+ null as opid ,
o.opcode ,
o.opdesc,
o.oplevelcode ,
@@ -897,6 +898,9 @@
where 1=1
<if test="orgid != null and orgid != ''">
AND o.orgid = #{orgid}
+ </if>
+ <if test="opreqid != null and opreqid != ''">
+ AND o.opreqid = #{opreqid}
</if>
<if test="lastStartTime != null and lastStartTime != ''">
and to_char(o.last_Update_Time, 'YYYY-MM-DD HH24:MI:SS') >= #{lastStartTime}
@@ -910,7 +914,7 @@
resultMap="PatMedOperationItemResult">
select
oi.operationid,
- oi.opid,
+ null as opid,
oi.opcode,
oi.opdesc,
oi.main_flag,
@@ -940,6 +944,9 @@
<if test="opid != null and opid != ''">
AND oi.opid = #{opid}
</if>
+ <if test="operationid != null and operationid != ''">
+ AND oi.operationid = #{operationid}
+ </if>
<if test="lastStartTime != null and lastStartTime != ''">
and oi.last_Update_Time >= to_date(#{lastStartTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 4350001..1b37417 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -291,7 +291,7 @@
and d.del_flag = 0
and ud.del_flag = 0
<if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if>
- <if test="campusid != null">and d.campusid = #{campusid} and ud.campusid = #{campusid}</if>
+ <if test="campusid != null">and d.campusid = #{campusid}</if>
<if test="userId != null">and ud.user_id = #{userId}</if>
<if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
</select>
diff --git a/smartor/src/main/java/com/smartor/domain/PatSatisfaction.java b/smartor/src/main/java/com/smartor/domain/PatSatisfaction.java
index cc29281..775146a 100644
--- a/smartor/src/main/java/com/smartor/domain/PatSatisfaction.java
+++ b/smartor/src/main/java/com/smartor/domain/PatSatisfaction.java
@@ -8,6 +8,7 @@
import lombok.Data;
import java.util.Date;
+import java.util.List;
/**
* 鎮h�呮弧鎰忓害瀵硅薄 pat_satisfaction
@@ -155,6 +156,9 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
+ @ApiModelProperty(value = "涓婚敭Id闆嗗悎")
+ private List<Long> ids;
+
/**
* pageNum
*/
diff --git a/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
index de813bc..0ff3281 100644
--- a/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
+++ b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -799,4 +799,10 @@
// @Excel(name = " 鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇) 2 寰呭彂閫� 3 宸插彂閫� 4 涓嶆墽琛� 5 鍙戦�佸け璐� 6 宸插畬鎴怽") ")
@ApiModelProperty(value = "椤甸潰灞曠ず鐘舵�� 锛�1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級")
private Long sendstateView;
+
+ @ApiModelProperty(value = "鎵嬫湳璁板綍id 瀵瑰簲pat_med_operation_item.id")
+ private Long operationItemId;
+
+ @ApiModelProperty(value = "鎵嬫湳璁板綍id闆嗗悎")
+ private List<Long> operationItemIds;
}
diff --git a/smartor/src/main/java/com/smartor/mapper/PatMedOperationItemMapper.java b/smartor/src/main/java/com/smartor/mapper/PatMedOperationItemMapper.java
index fdab6ef..440bf66 100644
--- a/smartor/src/main/java/com/smartor/mapper/PatMedOperationItemMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/PatMedOperationItemMapper.java
@@ -53,6 +53,14 @@
public int updatePatMedOperationItem(PatMedOperationItem patMedOperationItem);
/**
+ * 淇敼鎮h�呮鏌ユ楠岃褰曞瓙
+ *
+ * @param patMedOperationItem 鎮h�呮鏌ユ楠岃褰曞瓙
+ * @return 缁撴灉
+ */
+ public int updatePatMedOperationItemByOperationid(PatMedOperationItem patMedOperationItem);
+
+ /**
* 鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙
*
* @param id 鎮h�呮鏌ユ楠岃褰曞瓙涓婚敭
@@ -77,6 +85,22 @@
public int deleteHardPatMedOperationItemByOpId(String opid);
/**
+ * 鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙
+ *
+ * @param operationid 鎮h�呮鏌ユ楠岃褰曞瓙涓婚敭
+ * @return 缁撴灉
+ */
+ public int deletePatMedOperationItemByOperationid(Long operationid);
+
+ /**
+ * 鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙
+ *
+ * @param opid 鎮h�呮鏌ユ楠岃褰曞瓙涓婚敭
+ * @return 缁撴灉
+ */
+ public int deleteSoftPatMedOperationItemByOpId(String opid);
+
+ /**
* 鏌ヨ鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃
*
* @param patMedOperationItem 鎮h�呮鏌ユ楠岃褰曞瓙
diff --git a/smartor/src/main/java/com/smartor/service/IPatSatisfactionService.java b/smartor/src/main/java/com/smartor/service/IPatSatisfactionService.java
index 413a9c6..9282b42 100644
--- a/smartor/src/main/java/com/smartor/service/IPatSatisfactionService.java
+++ b/smartor/src/main/java/com/smartor/service/IPatSatisfactionService.java
@@ -40,6 +40,14 @@
public int insertPatSatisfaction(PatSatisfaction patSatisfaction);
/**
+ * 鎵归噺鏂板鎮h�呮弧鎰忓害
+ *
+ * @param patSatisfactions 鎮h�呮弧鎰忓害
+ * @return 缁撴灉
+ */
+ public int batchInsert(List<PatSatisfaction> patSatisfactions);
+
+ /**
* 淇敼鎮h�呮弧鎰忓害
*
* @param patSatisfaction 鎮h�呮弧鎰忓害
diff --git a/smartor/src/main/java/com/smartor/service/IServiceExternalService.java b/smartor/src/main/java/com/smartor/service/IServiceExternalService.java
index 33d169d..06fde72 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceExternalService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceExternalService.java
@@ -119,6 +119,12 @@
public Boolean addOperationInfo(@RequestBody Map dataMap);
/**
+ * 鎾ら攢鎵嬫湳淇℃伅
+ */
+ public Boolean cancelOperationInfo(@RequestBody Map dataMap);
+
+
+ /**
* 鏂板鍖荤枟缁勫尰鐢�
*/
public Boolean addMedicalTeam(Map dataMap);
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index 114c2c1..eecbe29 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -300,7 +300,7 @@
} catch (Exception e) {
log.error("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
patMedInhosp1.setInDeptcheckFlag("2");
- patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛�" + e.getMessage());
+ patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡");
patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
}
}
@@ -727,7 +727,7 @@
//鍐嶅叆闄㈤�昏緫
//鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
boolean firstVisit = false;
- if (orgId.equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+ if (orgId.equals("47255004333112711A1001")) {
firstVisit = true;
}
if (!firstVisit) {
@@ -865,7 +865,7 @@
if (CollectionUtils.isEmpty(serviceTasks)) {
log.info("璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓猴細{}", taskid);
patMedOperationItem.setOpercheckFlag("2");
- patMedOperationItem.setLongTaskReason(longTaskReason + " & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid);
+ patMedOperationItem.setLongTaskReason(" & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid +";");
patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
return;
} else {
@@ -971,7 +971,7 @@
PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
patMedOperationItem2.setId(patMedOperationItem.getId());
patMedOperationItem2.setOpercheckFlag("2");
- patMedOperationItem2.setRemark("鐢熸垚瀛愪换鍔″け璐� 4");
+ patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔″け璐� 4;");
patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
}
} catch (Exception e) {
@@ -981,7 +981,7 @@
PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
patMedOperationItem2.setId(patMedOperationItem.getId());
patMedOperationItem2.setOpercheckFlag("2");
- patMedOperationItem2.setRemark("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4");
+ patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4;");
patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
e.printStackTrace();
}
@@ -1188,7 +1188,7 @@
newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
} else {
patMedOperationItem.setOpercheckFlag("2");
- patMedOperationItem.setRemark(patMedOperationItem.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鎵嬫湳璇︽儏ID涓�:" + patMedOperationItem.getId());
+ patMedOperationItem.setLongTaskReason("璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鎵嬫湳璇︽儏ID涓�:" + patMedOperationItem.getId() + ";");
patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
// patMedInhosp1.setDeptcheckFlag("2");
// patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
@@ -1251,7 +1251,7 @@
}
//鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
boolean firstVisit = false;
- if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+ if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
firstVisit = true;
}
if (!firstVisit) {
@@ -1324,7 +1324,7 @@
if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId());
patMedOperationItem.setOpercheckFlag("2");
- patMedOperationItem.setLongTaskReason(patMedOperationItem.getLongTaskReason() + "鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
+ patMedOperationItem.setLongTaskReason("鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
} else {
for (ServiceTaskoper serviceTaskoper : serviceTaskopers) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
index 8fd54d1..fd6b774 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
@@ -5,7 +5,11 @@
import java.util.*;
import java.util.stream.Collectors;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysUserDept;
+import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.Arith;
+import com.ruoyi.common.utils.ArrayListUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.domain.*;
@@ -19,6 +23,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smartor.service.IPatSatisfactionService;
+
+import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
/**
* 鎮h�呮弧鎰忓害Service涓氬姟灞傚鐞�
@@ -101,6 +107,50 @@
}
/**
+ * 鏂板鎮h�呮弧鎰忓害
+ *
+ * @param patSatisfactions 鎮h�呮弧鎰忓害
+ * @return 缁撴灉
+ */
+ @Override
+ public int batchInsert(List<PatSatisfaction> patSatisfactions) {
+ if(CollectionUtils.isEmpty(patSatisfactions)){
+ return 0;
+ }
+ List<Long> ids = patSatisfactions.stream().map(PatSatisfaction::getId).
+ distinct().collect(Collectors.toList());
+ List<PatSatisfaction> patSatisfactionsOld = new ArrayList<>();
+ PatSatisfaction patSatisfactionVo = new PatSatisfaction();
+ patSatisfactionVo.setIds(ids);
+ patSatisfactionsOld = patSatisfactionMapper.selectPatSatisfactionList(patSatisfactionVo);
+ Map<String, List<PatSatisfaction>> maps = ArrayListUtils.splitListsById(patSatisfactions,
+ patSatisfactionsOld, PatSatisfaction::getId);
+ //鍙湪patSatisfactions鐨勬暟鎹紝鎵ц鏂板鎿嶄綔
+ List<PatSatisfaction> addItems = maps.get("onlyIn1");
+ //鍙湪patSatisfactionsOld鐨勬暟鎹紝鎵ц鍒犻櫎鎿嶄綔
+// List<PatSatisfaction> delItems = maps.get("onlyIn2");
+ //閲嶅彔鐨勬暟鎹紝鎵ц鏇存柊鎿嶄綔
+ List<PatSatisfaction> editItems = maps.get("common");
+ Integer count = 0;
+ LoginUser loginUser = getLoginUser();
+ SysUser user = loginUser.getUser();
+ for (PatSatisfaction patSatisfaction0 : editItems) {
+ patSatisfaction0.setUpdateBy(user.getNickName());
+ patSatisfaction0.setUpdateTime(DateUtils.getNowDate());
+ count = count + patSatisfactionMapper.updatePatSatisfaction(patSatisfaction0);
+ }
+
+ for (PatSatisfaction patSatisfaction1 : addItems) {
+ patSatisfaction1.setCreateBy(user.getNickName());
+ patSatisfaction1.setOrgid(user.getOrgid());
+ patSatisfaction1.setCreateTime(DateUtils.getNowDate());
+ patSatisfaction1.setUpdateTime(DateUtils.getNowDate());
+ count = count + patSatisfactionMapper.insertPatSatisfaction(patSatisfaction1);
+ }
+ return count;
+ }
+
+ /**
* 淇敼鎮h�呮弧鎰忓害
*
* @param patSatisfaction 鎮h�呮弧鎰忓害
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index a83ab65..e7c2dc4 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -816,10 +816,16 @@
patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
}
- patMedInhosp1.setInhospstate("1");
+ String orgid = ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null;
+ if(StringUtils.isNotEmpty(orgid) && orgid.equals("47246103233112211A1001")){
+ //缂欎簯浜岄櫌 浣忛櫌璁板綍涓嶆洿鏂扮姸鎬�
+ }else {
+ patMedInhosp1.setInhospstate("1");
+ }
+
if (CollectionUtils.isNotEmpty(patMedInhospList)) {
patMedInhosp1.setUpdateTime(new Date());
- patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+ patMedInhosp1.setOrgid(orgid);
if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
//涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
patMedInhosp1.setFuflag("0");
@@ -832,7 +838,7 @@
patMedInhosp1.setHospitalcode(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
patMedInhosp1.setLeavehospitaldistrictname(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianBQMC")) ? BingRenXX.get("DangQianBQMC").toString() : null);
patMedInhosp1.setLeavehospitaldistrictcode(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianBQID")) ? BingRenXX.get("DangQianBQID").toString() : null);
- patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+ patMedInhosp1.setOrgid(orgid);
//涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
patMedInhosp1.setCampusid("1");
patMedInhosp1.setPatno(ObjectUtils.isNotEmpty(BingRenXX.get("BingRenID")) ? BingRenXX.get("BingRenID").toString() : null);
@@ -1514,6 +1520,81 @@
return true;
}
+ @Override
+ public Boolean cancelOperationInfo(Map dataMap) {
+ log.info("ServiceExternalServiceImpl---cancelOperationInfo鐨勬挙閿�鐨勫�间负锛歿}", dataMap);
+
+ Map yeWuXX = (Map) dataMap.get("YeWuXX");
+ Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
+ ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
+ PatArchive patArchive = addPatArchive(externalInHospPatientInfo, null, null);
+ //鎵嬫湳鎾ら攢
+ Map<String, Object> sscx = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("ShouShuCX") : null;
+ ExternalOperationInfo externalOperationInfo = null;
+ if (ObjectUtils.isNotEmpty(sscx))
+ externalOperationInfo = BeanUtil.mapToBean(sscx, ExternalOperationInfo.class, true);
+ PatMedOperation patMedOperation = new PatMedOperation();
+ patMedOperation.setPatid(patArchive.getId());
+ patMedOperation.setOrgid(patArchive.getOrgid());
+ patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
+ //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
+ List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+ if (CollectionUtils.isNotEmpty(patMedOperations)) {
+ for(PatMedOperation operation : patMedOperations){
+ Long id = operation.getId();
+ //濡傛灉鎵嬫湳鎾ら攢锛岀洿鎺ュ垹闄よ鏉℃墜鏈俊鎭�
+ if (ObjectUtils.isNotEmpty(sscx)) {
+ operation.setId(id);
+ operation.setCheckFlag("1");
+ operation.setDelFlag("1");
+ //鍚屾椂鍘绘煡璇紝鏄惁鍦╯ubtask涓敓鎴愪换鍔★紝濡傛灉鐢熸垚鍑哄緱绔嬮┈鍒犻櫎
+ // 鎵嬫湳闅忚
+ PatMedOperationItem pmoi = new PatMedOperationItem();
+ //鑾峰彇闇�瑕佸嚭闄㈡墜鏈殢璁匡紝鏈鐞嗙殑鏁版嵁
+ pmoi.setOpid(operation.getId().toString());
+ List<PatMedOperationItem> patMedOperationItems
+ = patMedOperationItemMapper.selectOperationItemList(pmoi);
+ List<Long> operationItemIds = patMedOperationItems.stream()
+ .map(PatMedOperationItem::getId)
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+
+
+ //涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=1,2,3,5,7鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝
+ //鏈夌殑璇濓紝绔嬪嵆鍋滀簡
+ List<Long> sendstates = Arrays.asList(1L, 2L, 3L, 5L, 7L);
+ List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+ serviceSubtaskVO.setOrgid(patArchive.getOrgid());
+ serviceSubtaskVO.setPatid(patArchive.getId());
+ serviceSubtaskVO.setSendstates(sendstates);
+ serviceSubtaskVO.setOperationItemIds(operationItemIds);
+ serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ //鍘籸edis涓紝鏌ヨ鏄惁鏈塻ubid锛屾湁鐨勮瘽绉婚櫎cache-exist
+ if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+ for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ log.info("闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+ serviceSubtask.setSendstate(4L);
+ serviceSubtask.setRemark("鎵嬫湳鎾ら攢");
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
+ redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
+ }
+ }
+ operation.setUpdateTime(new Date());
+ patMedOperationMapper.updatePatMedOperation(operation);
+ patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(operation.getOpid());
+ }
+ }
+ }
+ return true;
+ }
+
//鏂板鎮h�呭熀鏈俊鎭�
private PatArchive addPatArchive(ExternalInHospPatientInfo externalInHospPatientInfo, ExternalInHospPatientAddrInfo externalInHospPatientAddrInfo, ExternalInHospPatientLiaisonInfo externalInHospPatientLiaisonInfo) {
Date parse = null;
@@ -2007,6 +2088,7 @@
return true;
case "SM_SQ_CheXiao":
log.info("鎵嬫湳鎾ら攢鍏ュ弬绫诲瀷涓猴細{}", type);
+ cancelOperationInfo(dataMap);
return true;
case "TJ_YW_BaoGaoXX":
log.info("浣撴鎶ュ憡鍏ュ弬绫诲瀷涓猴細{}", type);
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index a79ba27..06ffc4c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -706,8 +706,12 @@
patMedInhosp.setInhospstate("0");
List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());
-
- if (patMedInhospList.size() > 0) {
+ //鏅畞 鏂板鍐嶆闅忚涓嶈兘瑙﹀彂鎮h�呭啀鍏ラ櫌
+ boolean inhospAgain = true;
+ if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
+ inhospAgain = false;
+ }
+ if (patMedInhospList.size() > 0 && inhospAgain) {
serviceSubtask1.setIsVisitAgain(2);
serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�" : "鎮h�呭啀鍏ラ櫌浜�");
serviceSubtask1.setSendstate(4L);
@@ -2887,6 +2891,12 @@
collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
break;
case "management_doctor_code":
+ rawData = rawData.stream()
+ .peek(item -> {
+ item.setDrname(item.getManagementDoctor());
+ item.setDrcode(item.getManagementDoctorCode());
+ })
+ .collect(Collectors.toList());
collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getManagementDoctorCode()).orElse("Unknown")));
break;
case "deptcode":
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index 5f9666b..8344a5f 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -246,6 +246,7 @@
AND a.del_flag = 0
AND b.del_flag = 0
AND a.idcardno IS NOT NULL
+ <if test="inhospid != null">and b.inhospid = #{inhospid}</if>
<if test="startOutHospTime != null ">and date_format(b.endtime,'%y%m%d') >=
date_format(#{startOutHospTime},'%y%m%d')
</if>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOperationItemMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOperationItemMapper.xml
index 8f3df5b..f654970 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedOperationItemMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedOperationItemMapper.xml
@@ -309,6 +309,86 @@
where id = #{id}
</update>
+ <update id="updatePatMedOperationItemByOperationid" parameterType="com.smartor.domain.PatMedOperationItem">
+ update pat_med_operation_item
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="opid != null">opid =
+ #{opid},
+ </if>
+ <if test="opcode != null">opcode =
+ #{opcode},
+ </if>
+ <if test="opdesc != null">opdesc =
+ #{opdesc},
+ </if>
+ <if test="mainFlag != null">main_flag =
+ #{mainFlag},
+ </if>
+ <if test="incitypecode != null">incitypecode =
+ #{incitypecode},
+ </if>
+ <if test="incitypedesc != null">incitypedesc =
+ #{incitypedesc},
+ </if>
+ <if test="oplevelcode != null">oplevelcode =
+ #{oplevelcode},
+ </if>
+ <if test="opleveldesc != null">opleveldesc =
+ #{opleveldesc},
+ </if>
+ <if test="opposition != null">opposition =
+ #{opposition},
+ </if>
+ <if test="delFlag != null">del_flag =
+ #{delFlag},
+ </if>
+ <if test="updateBy != null">update_by =
+ #{updateBy},
+ </if>
+ <if test="updateTime != null">update_time =
+ #{updateTime},
+ </if>
+ <if test="createBy != null">create_by =
+ #{createBy},
+ </if>
+ <if test="createTime != null">create_time =
+ #{createTime},
+ </if>
+ <if test="isupload != null">isupload =
+ #{isupload},
+ </if>
+ <if test="uploadTime != null">upload_time =
+ #{uploadTime},
+ </if>
+ <if test="orgid != null">orgid =
+ #{orgid},
+ </if>
+ <if test="pguid != null">pguid =
+ #{pguid},
+ </if>
+ <if test="guid != null">guid =
+ #{guid},
+ </if>
+ <if test="pid != null">pid =
+ #{pid},
+ </if>
+ <if test="opercheckFlag != null">opercheck_flag =
+ #{opercheckFlag},
+ </if>
+ <if test="longTaskReason != null">long_task_reason =
+ #{longTaskReason},
+ </if>
+ <if test="inhospstate != null">inhospstate =
+ #{inhospstate},
+ </if>
+ <if test="serialnum != null">serialnum =
+ #{serialnum},
+ </if>
+ </trim>
+ where operationid = #{operationid}
+ and opcode = #{opcode}
+ </update>
+
<insert id="insertPatMedOperationItems">
insert into pat_med_operation_item
<trim prefix="(" suffix=")" suffixOverrides=",">
@@ -442,7 +522,25 @@
<delete id="deleteHardPatMedOperationItemByOpId" parameterType="String">
delete from pat_med_operation_item
where opid = #{opid}
+ and opercheck_flag != 1
</delete>
+
+ <update id="deletePatMedOperationItemByOperationid" parameterType="Long">
+ update pat_med_operation_item
+ <trim prefix="SET" suffixOverrides=",">
+ del_flag =1
+ </trim>
+ where operationid = #{operationid}
+ and opercheck_flag != 1
+ </update>
+
+ <update id="deleteSoftPatMedOperationItemByOpId" parameterType="String">
+ update pat_med_operation_item
+ <trim prefix="SET" suffixOverrides=",">
+ del_flag =1
+ </trim>
+ where opid = #{opid}
+ </update>
<select id="selectOperationItemList" parameterType="com.smartor.domain.PatMedOperationItem"
resultMap="PatMedOperationItemResult">
@@ -457,7 +555,7 @@
from pat_med_operation pmo
join pat_med_operation_item pmoi
on pmoi.opid = pmo.opid
- left join pat_med_inhosp pmi
+ join pat_med_inhosp pmi
on pmo.serialnum = pmi.serialnum
where
pmo.del_flag = '0'
diff --git a/smartor/src/main/resources/mapper/smartor/PatSatisfactionMapper.xml b/smartor/src/main/resources/mapper/smartor/PatSatisfactionMapper.xml
index 17eb494..21125bd 100644
--- a/smartor/src/main/resources/mapper/smartor/PatSatisfactionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatSatisfactionMapper.xml
@@ -114,6 +114,13 @@
<if test="endTime != null">
AND date_format(update_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d')
</if>
+ <if test="ids != null and ids.size()>0">
+ AND id IN
+ <foreach collection="ids" item="idItem" open="(" separator=","
+ close=")">
+ #{idItem}
+ </foreach>
+ </if>
</select>
<select id="selectPatSatisfactionById" parameterType="Long"
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 118719e..4910e68 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -358,6 +358,12 @@
#{itemTaskId}
</foreach>
</if>
+ <if test="operationItemIds != null and operationItemIds.size() > 0">
+ AND operation_item_id IN
+ <foreach collection="operationItemIds" item="operationItemIdItem" open="(" separator="," close=")">
+ #{operationItemIdItem}
+ </foreach>
+ </if>
<if test="templateid != null and templateid != ''">and templateid = #{templateid}</if>
<if test="templatename != null and templatename != ''">and templatename like concat('%', #{templatename},
'%')
@@ -483,6 +489,7 @@
<if test="libtemplatename != null ">and libtemplatename = #{libtemplatename}</if>
<if test="openid != null ">and openid = #{openid}</if>
<if test="sendstate != null ">and sendstate = #{sendstate}</if>
+ <if test="operationItemId != null ">and operation_item_id = #{operationItemId}</if>
<if test="drname != null and drname != ''">and drname like concat('%', #{drname}, '%')</if>
<if test="taskName != null and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
<if test="drcode != null and drcode != ''">and (drcode = #{drcode}</if>
--
Gitblit v1.9.3