liusheng
23 小时以前 459aa78c84cf552ebea6ef056d978c2531d71ac8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -25,6 +25,8 @@
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import com.smartor.domain.*;
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;
@@ -86,19 +88,27 @@
     * 查询患者随访信息
     */
    @ApiOperation("查询患者随访信息")
    //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
//    @Cacheable(value = "patItem", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskVO.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
    @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<ServiceSubtask> serviceSubtaskList = null;
        List<ServiceSubtaskRes> serviceSubtaskList = null;
        LoginUser loginUser = getLoginUser();
        SysUser user = loginUser.getUser();
        serviceSubtaskVO.setOrgid(user.getOrgid());
        ServiceSubtaskEntity serviceSubtaskEntity = null;
        if (serviceSubtaskVO != null) {
            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
            serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
            serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
        }
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
        for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
            serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());
@@ -111,14 +121,14 @@
        }
//      patItemCount 调用redisCache记录统计数据
        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
        map.put("serviceSubtaskList", serviceSubtaskList);
        List<Map<String, Object>> list = new ArrayList<>();
        list.add(map);
        serviceSubtaskVO.setPageNum(null);
        serviceSubtaskVO.setPageSize(null);
        List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskVO);
        List<ServiceSubtaskRes> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskEntity);
        return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
    }
@@ -131,6 +141,10 @@
    @PostMapping("/patItemCount")
    public Map<String, Object> patItemCount(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        Map<String, Object> map = new HashMap<>();
        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();
@@ -146,11 +160,11 @@
            redisMap = redisCache.getCacheObject(userId + "patItemCount");
            //记录是否有可用缓存
            Boolean redisFlag = false;
            ServiceSubtaskVO oldCondition = null;
            ServiceSubtaskEntity oldCondition = null;
            if (MapUtils.isNotEmpty(redisMap)) {
                oldCondition = (ServiceSubtaskVO) redisMap.get("searchCondition");
                oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
                // 比较查询条件是否一致
                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskVO)) {
                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
                    // 条件一致,使用缓存
                    redisFlag = true;
                    map = redisMap;
@@ -160,8 +174,8 @@
            // 如果没有缓存或者条件不一致,重新查询
            if (!redisFlag) {
                map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
                map.put("searchCondition", serviceSubtaskVO);
                map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
                map.put("searchCondition", serviceSubtaskEntity);
                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
            }
        }
@@ -174,7 +188,7 @@
     * 比较两个ServiceSubtaskVO的查询条件是否一致
     * 使用反射比较所有字段,排除分页参数和无关字段
     */
    private boolean isSameCondition(ServiceSubtaskVO oldCondition, ServiceSubtaskVO newCondition) {
    private boolean isSameCondition(ServiceSubtaskEntity oldCondition, ServiceSubtaskEntity newCondition) {
        // 使用ReflectUtils的通用方法比较,排除分页参数等无关字段
        return ReflectUtils.equalsAllFields(oldCondition, newCondition,
                // 排除的字段:分页参数、序列化ID、时间戳等
@@ -188,8 +202,8 @@
    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
    @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT)
    @PostMapping("/patItemExport")
    public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {
        List<ServiceSubtask> serviceSubtaskList = null;
    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
        List<ServiceSubtaskRes> serviceSubtaskList = null;
        if (serviceSubtaskVO != null) {
            if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)
                PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -218,9 +232,12 @@
    @PostMapping("/patItemByCondition")
    public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        List<ServiceSubtask> serviceSubtaskList = null;
        if (serviceSubtaskVO != null) {
            PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskVO);
        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
        if (serviceSubtaskEntity != null) {
            PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskEntity);
        }
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
@@ -230,7 +247,7 @@
        }
//      patItemCount 调用redisCache记录统计数据
//      Map<String, Object> map = patItemCount(serviceSubtaskVO);
        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
        map.put("serviceSubtaskList", serviceSubtaskList);
        List<Map<String, Object>> list = new ArrayList<>();
@@ -241,7 +258,7 @@
            public void doSelect() {
                serviceSubtaskVO.setPageNum(null);
                serviceSubtaskVO.setPageSize(null);
                serviceSubtaskService.patItem2(serviceSubtaskVO);
                serviceSubtaskService.patItem2(serviceSubtaskEntity);
            }
        });
        return getDataTable2(total, list);
@@ -254,7 +271,7 @@
    @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {
        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
        ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
        util.exportExcel(response, list, "单一任务(随访)数据");
@@ -267,9 +284,11 @@
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/querySubtaskList")
    public AjaxResult querySubtaskList(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
        serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
        return success(serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO));
        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
        PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
        serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity);
        return success(serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity));
    }
@@ -280,9 +299,11 @@
    @Log(title = "再次随访数据查询", businessType = BusinessType.EXPORT)
    @PostMapping("/querySubtaskListAgain")
    public TableDataInfo querySubtaskListAgain(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO);
        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO));
        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
        PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskEntity);
        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskEntity));
    }
@@ -395,9 +416,10 @@
    @ApiOperation("根据条件查询任务信息")
    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
    @PostMapping("/queryTaskByCondition")
    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
        //根据入参查询信息
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);
        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtask.class);
        serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask);
        return success(ivrTaskVO);
    }