From 19b588108f63693e936e7cd1e351c2d8f19b681c Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 14 四月 2026 15:02:15 +0800
Subject: [PATCH] 【丽水】出院随访导出
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 214 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 139 insertions(+), 75 deletions(-)
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 10d2848..e9abbe2 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
@@ -1,58 +1,48 @@
package com.ruoyi.web.controller.smartor;
import com.github.pagehelper.ISelect;
-import com.github.pagehelper.Page;
import com.ruoyi.common.annotation.AddOrgId;
import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
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.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.PreachFormEnum;
import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.utils.reflect.ReflectUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ISysUserDeptService;
import com.smartor.domain.*;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.VO.ServiceSubtaskVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
-import com.smartor.mapper.PatMedInhospMapper;
-import com.smartor.mapper.PatMedOuthospMapper;
import com.smartor.service.IServiceSubtaskRecordService;
import com.smartor.service.IServiceSubtaskService;
import com.smartor.service.IServiceTaskService;
-import com.smartor.service.impl.ServiceSubtaskServiceImpl;
-import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import net.bytebuddy.implementation.bytecode.Throw;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cache.annotation.Cacheable;
+import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
-import java.text.DecimalFormat;
import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -67,11 +57,19 @@
@RestController
@RequestMapping("/smartor/serviceSubtask")
public class ServiceSubtaskController extends BaseController {
+ @InitBinder
+ public void initBinder(WebDataBinder binder) {
+ binder.setAutoGrowCollectionLimit(1024); // 鎴� 2048銆�4096 绛�
+ }
+
@Autowired
private IServiceSubtaskService serviceSubtaskService;
@Autowired
private IServiceTaskService serviceTaskService;
+
+ @Autowired
+ private ISysUserDeptService sysUserDeptService;
@Autowired
private IServiceSubtaskRecordService serviceSubtaskRecordService;
@@ -91,12 +89,6 @@
@ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
@PostMapping("/patItem")
public Map<String, Object> patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
-// if (serviceSubtaskVO.getLeavehospitaldistrictcodes() != null && serviceSubtaskVO.getLeavehospitaldistrictcodes().size() > 10) {
-// throw new BaseException("鐥呭尯鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-// }
-// if (serviceSubtaskVO.getLeaveldeptcodes() != null && serviceSubtaskVO.getLeaveldeptcodes().size() > 10) {
-// throw new BaseException("绉戝鏌ヨ鏁伴噺涓嶈兘瓒呰繃10涓�");
-// }
serviceSubtaskVO.setPageNum(PageUtils.getOffset(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()));
List<ServiceSubtaskRes> serviceSubtaskList = null;
@@ -109,29 +101,45 @@
serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
}
- for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
- ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
- serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
- serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());
- if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid())))
- serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
- serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
+ // 鎵归噺鏌� subtask_record锛�1娆QL鏇夸唬寰幆涓璑娆″崟鐙煡
+ List<Long> subtaskIds = serviceSubtaskList.stream().map(ServiceSubtaskRes::getId).filter(ObjectUtils::isNotEmpty).collect(Collectors.toList());
+ Map<Long, List<ServiceSubtaskRecord>> recordMap = serviceSubtaskRecordService.selectRecordMapBySubtaskIds(subtaskIds);
+
+ for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
+ serviceSubtask.setServiceSubtaskRecordList(recordMap.getOrDefault(serviceSubtask.getId(), new ArrayList<>()));
}
-// patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
- Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
+// patItemCount 璧癛edis缂撳瓨鐗堬紝閬垮厤姣忔鍏ㄨ〃鑱氬悎鎵弿
+ Map<String, Object> map = getPatItemCountWithCache(serviceSubtaskEntity);
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
- serviceSubtaskEntity.setPageNum(null);
- serviceSubtaskEntity.setPageSize(null);
- List<ServiceSubtaskRes> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskEntity);
+ // 鐩存帴浠庡凡鏈夎仛鍚堢粨鏋滄帹绠梩otal锛岄伩鍏嶅幓鎺夊垎椤靛悗鍐嶅叏閲忔煡涓�閬嶅ぇ琛�
+ long total = 0L;
+ try {
+// * wzx: 鏈墽琛屾暟閲�
+// * ysf: 宸查殢璁挎暟閲�
+// * fssb: 鍙戦�佸け璐ユ暟閲�
+// * yfs: 宸插彂閫佹暟閲�
+// * dsf: 寰呴殢璁挎暟閲�
- return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
+// long wzx = map.get("wzx") != null ? ((Number) map.get("wzx")).longValue() : 0L;
+// long ysf = map.get("ysf") != null ? ((Number) map.get("ysf")).longValue() : 0L;
+// long dsf = map.get("dsf") != null ? ((Number) map.get("dsf")).longValue() : 0L;
+// long fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
+ total = map.get("total") != null ? ((Number) map.get("total")).longValue() : 0L;
+
+ } catch (Exception e) {
+ // 鍏滃簳锛氬叏閲廲ount
+ serviceSubtaskEntity.setPageNum(null);
+ serviceSubtaskEntity.setPageSize(null);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity);
+ total = CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L;
+ }
+
+ return getDataTable3(total, list);
}
/**
@@ -146,42 +154,48 @@
ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
- // 閫氳繃redis璁板綍缁撴灉
- Map<String, Object> redisMap = new HashMap<>();
LoginUser loginUser = getLoginUser();
- SysUser user = null;
Long userId = null;
- if (ObjectUtils.isNotEmpty(loginUser)) {
- user = loginUser.getUser();
- if (ObjectUtils.isNotEmpty(user)) {
- userId = user.getUserId();
- }
+ if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+ userId = loginUser.getUser().getUserId();
}
if (ObjectUtils.isNotEmpty(userId)) {
- redisMap = redisCache.getCacheObject(userId + "patItemCount");
- //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+ map = getPatItemCountWithCache(serviceSubtaskEntity);
+ }
+
+ map.put("code", HttpStatus.SUCCESS);
+ return map;
+ }
+
+ /**
+ * 甯edis缂撳瓨鐨勭粺璁℃煡璇紝渚沺atItem鍜宲atItemCount鍏辩敤锛屾潯浠朵笉鍙樻椂鐩存帴鍛戒腑缂撳瓨
+ */
+ private Map<String, Object> getPatItemCountWithCache(ServiceSubtaskEntity serviceSubtaskEntity) {
+ Map<String, Object> map = new HashMap<>();
+ LoginUser loginUser = getLoginUser();
+ Long userId = null;
+ if (ObjectUtils.isNotEmpty(loginUser) && ObjectUtils.isNotEmpty(loginUser.getUser())) {
+ userId = loginUser.getUser().getUserId();
+ }
+ if (ObjectUtils.isNotEmpty(userId)) {
+ Map<String, Object> redisMap = redisCache.getCacheObject(userId + "patItemCount");
Boolean redisFlag = false;
- ServiceSubtaskEntity oldCondition = null;
if (MapUtils.isNotEmpty(redisMap)) {
- oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
- // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
+ ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
- // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
redisFlag = true;
map = redisMap;
redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
}
}
-
- // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
if (!redisFlag) {
map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
map.put("searchCondition", serviceSubtaskEntity);
redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
}
+ } else {
+ map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
}
-
- map.put("code", HttpStatus.SUCCESS);
return map;
}
@@ -204,23 +218,30 @@
@Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
@PostMapping("/patItemExport")
public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
+ LoginUser loginUser = getLoginUser();
+ SysUser user = loginUser.getUser();
+ serviceSubtaskVO.setOrgid(user.getOrgid());
List<ServiceSubtaskRes> serviceSubtaskList = null;
if (serviceSubtaskVO != null) {
- if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)
- PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
}
- List<ServiceSubtaskExprot> serviceSubtaskExprots = null;
+ List<ServiceSubtaskExport> serviceSubtaskExports = null;
if (!CollectionUtils.isEmpty(serviceSubtaskList)) {
- serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class);
- for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) {
- String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform());
- serviceSubtaskExprot.setPreachform(pf);
+ serviceSubtaskExports = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExport.class);
+ for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
+ String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform());
+ serviceSubtaskExport.setPreachform(pf);
+
+ //璁$畻鍑洪櫌澶╂暟
+ if (!Objects.isNull(serviceSubtaskExport.getEndtime())) {
+ Integer endDay = DateUtils.differentDaysByMillisecond(serviceSubtaskExport.getEndtime(), new Date());
+ serviceSubtaskExport.setEndDay(endDay);
+ }
}
}
- ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);
- util.exportExcel(response, serviceSubtaskExprots, "鎮h�呴殢璁夸俊鎭〃鍗�");
+ ExcelUtil<ServiceSubtaskExport> util = new ExcelUtil<ServiceSubtaskExport>(ServiceSubtaskExport.class);
+ util.exportExcel(response, serviceSubtaskExports, "鎮h�呴殢璁夸俊鎭〃鍗�");
}
@@ -538,9 +559,7 @@
@PostMapping("/getSfStatisticsExport")
public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) {
List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatisticsExport(serviceSubtaskCountReq);
-
ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);
-
String sheetName = "";
String fileName = "";
if (active.equals("ls") || active.equals("druid")) {
@@ -578,6 +597,30 @@
}
return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
}
+
+
+
+ /**
+ * 寤剁画鎶ょ悊缁熻
+ */
+ @ApiOperation("寤剁画鎶ょ悊缁熻")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+ @PostMapping("/getContinueNerseCount")
+ public AjaxResult getContinueNerseCount(@RequestBody ServiceSubtaskCotinueCountVO serviceSubtaskCotinueCountVO) {
+ SysUser user = getLoginUser().getUser();
+ serviceSubtaskCotinueCountVO.setOrgid(user.getOrgid());
+ serviceSubtaskCotinueCountVO.setCampusid(user.getCampusid());
+ boolean hasDistrict = !CollectionUtils.isEmpty(serviceSubtaskCotinueCountVO.getLeavehospitaldistrictcodes());
+ boolean hasDept = !CollectionUtils.isEmpty(serviceSubtaskCotinueCountVO.getDeptcodes());
+ if (hasDistrict && hasDept) {
+ return error("鐥呭尯Code闆嗗悎涓庣瀹ode闆嗗悎浜掓枼锛屼笉鑳藉悓鏃朵紶鍏�");
+ }
+ return success(serviceSubtaskService.getContinueNurseCount(serviceSubtaskCotinueCountVO));
+ }
+
+
+
+
/**
* 鑾峰彇闅忚鍒嗙被缁熻鏄庣粏
@@ -654,10 +697,12 @@
/**
* 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堜紭鍖栫増锛�
+ *
* @return Map<String, Object> 鍖呭惈鍚勭姸鎬佺粺璁℃暟鎹�
- * pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
- * failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
- * abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+ * pendingVisitCount: 褰撳墠鐧诲綍浜烘埅姝粖鏃ュ緟闅忚鎬婚噺
+ * failedVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″け璐ユ�婚噺
+ * abnormalVisitVount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔″紓甯告�婚噺
+ * allVisitCount: 褰撳墠鐧诲綍浜洪殢璁夸换鍔℃�婚噺
*/
@ApiOperation("鑾峰彇褰撳墠鐢ㄦ埛闅忚鏁伴噺缁熻")
@PostMapping("/getCurrentUserServiceSubtaskCount")
@@ -665,14 +710,33 @@
Map<String, Object> map = new HashMap<>();
LoginUser loginUser = getLoginUser();
SysUser sysUser = loginUser.getUser();
+ SysUserDept sysUserDept = new SysUserDept();
+ sysUserDept.setUserId(sysUser.getUserId());
+ sysUserDept.setOrgid(sysUser.getOrgid());
+ sysUserDept.setDeptType("1");
+ List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept);
+ SysUserDept sysUserWard = new SysUserDept();
+ sysUserWard.setUserId(sysUser.getUserId());
+ sysUserWard.setOrgid(sysUser.getOrgid());
+ sysUserWard.setDeptType("2");
+ List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard);
+ List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
+ List<String> wardCodes = sysUserWards.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList());
+ ServiceSubtaskEntity entity = new ServiceSubtaskEntity();
+ entity.setOrgid(sysUser.getOrgid());
+ entity.setLeaveldeptcodes(deptCodes);
+ entity.setLeavehospitaldistrictcodes(wardCodes);
if (ObjectUtils.isNotEmpty(sysUser)) {
- List<String> deptCodes = sysUser.getDeptCodes();
- List<String> wardCodes = sysUser.getWardCodes();
- ServiceSubtaskEntity entity = new ServiceSubtaskEntity();
- entity.setLeaveldeptcodes(deptCodes);
- entity.setLeavehospitaldistrictcodes(wardCodes);
- map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
+ if (!("admin").equals(sysUser.getUserName())) {
+ if (ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)) {
+ map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
+ }
+ } else {
+ map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity);
+ }
}
return map;
}
+
+
}
--
Gitblit v1.9.3