diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/PatientServiceMapper.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/PatientServiceMapper.java index 371dea8..184548d 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/PatientServiceMapper.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/PatientServiceMapper.java @@ -38,7 +38,7 @@ public interface PatientServiceMapper { * @param query * @return */ - Map getServiceList(@Param("query") ServiceListQuery query); + Map getServiceList(@Param("query") ServiceListQuery query, @Param("id") String id); /** @@ -47,7 +47,7 @@ public interface PatientServiceMapper { * @param param * @return */ - int countStatusInfo(@Param("param") ServiceListQuery param); + int countStatusInfo(@Param("param") ServiceListQuery param, @Param("ids") List ids, @Param("serStatus") String serStatus); /** * 所有增值服务详情list的总数 diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/PatientServiceService.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/PatientServiceService.java index 594853f..831a728 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/PatientServiceService.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/PatientServiceService.java @@ -23,9 +23,9 @@ public interface PatientServiceService { List selectOnlyBzService(PatientServiceQuery query); - Map getServiceList(ServiceListQuery param); + Map getServiceList(ServiceListQuery param, String id); - int countStatusInfo(ServiceListQuery param); + int countStatusInfo(ServiceListQuery param, List ids, String setStatus); List> getServeDetailList(ServiceListQuery param); diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/PatientServiceServiceImpl.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/PatientServiceServiceImpl.java index d2c3c41..e5c36fd 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/PatientServiceServiceImpl.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/service/impl/PatientServiceServiceImpl.java @@ -59,13 +59,13 @@ public class PatientServiceServiceImpl implements PatientServiceService { } @Override - public Map getServiceList(ServiceListQuery query) { - return patientServiceMapper.getServiceList(query); + public Map getServiceList(ServiceListQuery query, String id) { + return patientServiceMapper.getServiceList(query, id); } @Override - public int countStatusInfo(ServiceListQuery param) { - return patientServiceMapper.countStatusInfo(param); + public int countStatusInfo(ServiceListQuery param, List ids, String serStatus) { + return patientServiceMapper.countStatusInfo(param, ids, serStatus); } @Override diff --git a/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml b/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml index 50ab907..f284fb9 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml @@ -393,101 +393,17 @@ select count(1) from patient_service - SELECT o.name as "name", o.province_id as "provinceId", o.city_id as "cityId", o.area_id as "areaId", - o.id as "hospitalId", - (SELECT Count(1) - FROM patient_service ps - join organization o ON o.id = ps.hospital_id - WHERE ps.hospital_id = #{query.hospitalId} - AND ps.ser_status = 1 - - AND ps.create_date >= #{query.startTime} - - - AND ps.create_date <= #{query.endTime} - - - and o.province_id = #{query.provinceId} - - - and o.city_id = #{query.cityId} - - - and o.area_id = #{query.areaId} - - ) as "open", - (SELECT Count(1) - FROM patient_service ps - join organization o ON o.id = ps.hospital_id - WHERE ps.hospital_id = #{query.hospitalId} - AND ps.ser_status = 2 - - AND ps.create_date >= #{query.startTime} - - - AND ps.create_date <= #{query.endTime} - - - and o.province_id = #{query.provinceId} - - - and o.city_id = #{query.cityId} - - - and o.area_id = #{query.areaId} - - ) as "unsubscribe", - (SELECT Count(1) - FROM patient_service ps - join organization o ON o.id = ps.hospital_id - WHERE ps.hospital_id = #{query.hospitalId} - AND ps.ser_status = 3 - - AND ps.create_date >= #{query.startTime} - - - AND ps.create_date <= #{query.endTime} - - - and o.province_id = #{query.provinceId} - - - and o.city_id = #{query.cityId} - - - and o.area_id = #{query.areaId} - - ) as "expire", - (SELECT Count(1) - FROM patient_service ps - join organization o ON o.id = ps.hospital_id - WHERE ps.hospital_id = #{query.hospitalId} - AND ps.ser_status = 4 - - AND ps.create_date >= #{query.startTime} - - - AND ps.create_date <= #{query.endTime} - - - and o.province_id = #{query.provinceId} - - - and o.city_id = #{query.cityId} - - - and o.area_id = #{query.areaId} - - ) as "suspend" + o.id as "hospitalId" FROM patient_service ps JOIN organization o ON o.id = ps.hospital_id - WHERE ps.hospital_id = #{query.hospitalId} + WHERE ps.hospital_id = #{id} AND ps.create_date >= #{query.startTime} @@ -507,14 +423,14 @@ o.city_id, o.area_id - select count(1) from patient_service ps join organization o on o.id = ps.hospital_id where 1=1 and ps.create_date >= #{param.startTime} AND ps.create_date <= #{param.endTime} - and ps.ser_status = #{param.serStatus} + and ps.ser_status = #{serStatus} and o.province_id = #{param.provinceId} @@ -524,9 +440,9 @@ and o.area_id = #{param.areaId} - + and ps.hospital_id in - + #{item} @@ -607,22 +523,15 @@ AND ps.create_date <= #{param.endTime} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java index c28e58a..cb36663 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java @@ -1059,7 +1059,7 @@ public class AreaCountFacade { } ExecutorService threadPool = Executors.newFixedThreadPool(5); //param.setHospitalIds(hospitalIds); - //List ids = patientServiceService.getHospitalIds(param, hospitalIds); + hospitalIds = patientServiceService.getHospitalIds(param, hospitalIds); int size = hospitalIds.size(); int batchSize = 2; int end = 0; @@ -1070,18 +1070,19 @@ public class AreaCountFacade { if (end > hospitalIds.size()) { end = hospitalIds.size(); } - Future>> listFuture = threadPool.submit(new ServiceListWorker(hospitalIds.subList(i, end), param, patientServiceService, basicConfigService)); + Future>> listFuture = threadPool.submit(new ServiceListWorker( hospitalIds.subList(i, end), param, patientServiceService, basicConfigService)); futureArrayList.add(listFuture); } - threadPool.shutdown(); - while (true){ - if (threadPool.isTerminated()){ - for (Future future : futureArrayList){ - mapList.addAll((List)future.get()); - } - break; + for (Future future : futureArrayList){ + if (future != null){ + Object o = future.get(); + if (o instanceof Collection){ + Collection collection = (Collection) o; + if (CollectionUtils.isNotEmpty(collection)){ + mapList.addAll(collection); + } + } } - Thread.sleep(1000); } ArrayList statusNameList = new ArrayList<>(); statusNameList.add("开通"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListBySerStatusWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListBySerStatusWorker.java index 1480b5d..6feaa85 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListBySerStatusWorker.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListBySerStatusWorker.java @@ -3,6 +3,7 @@ package com.lyms.platform.operate.web.worker; import com.lyms.platform.permission.model.ServiceListQuery; import com.lyms.platform.permission.service.PatientServiceService; +import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; @@ -29,9 +30,9 @@ public class ServiceListBySerStatusWorker implements Runnable{ public void run() { try { int number = 0; - if (!param.getHospitalIds().isEmpty()){ - param.setSerStatus(serStatus); - number = patientServiceService.countStatusInfo(param); + List hospitalIds = param.getHospitalIds(); + if (!hospitalIds.isEmpty()){ + number = patientServiceService.countStatusInfo(param, hospitalIds, serStatus ); } statusValList.add(number); }finally { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListWorker.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListWorker.java index 0d77303..9bf39ac 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListWorker.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/ServiceListWorker.java @@ -9,9 +9,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; -import java.util.concurrent.CopyOnWriteArrayList; /** * @@ -21,13 +19,13 @@ import java.util.concurrent.CopyOnWriteArrayList; **/ public class ServiceListWorker implements Callable< List>> { - private List hospitals; private ServiceListQuery param; private PatientServiceService patientServiceService; private BasicConfigService basicConfigService; + private List hospitals; - public ServiceListWorker(List hospitals, ServiceListQuery param, - PatientServiceService patientServiceService, BasicConfigService basicConfigService) { + public ServiceListWorker(List hospitals, ServiceListQuery param, + PatientServiceService patientServiceService, BasicConfigService basicConfigService) { this.hospitals = hospitals; this.param = param; this.patientServiceService = patientServiceService; @@ -38,10 +36,25 @@ public class ServiceListWorker implements Callable< List>> { public List> call() throws Exception { List> mapList = new ArrayList<>(); for (String hospital : hospitals){ + param.setHospitalId(hospital); - Map map = patientServiceService.getServiceList(param); + Map map = patientServiceService.getServiceList(param, hospital); if (map != null){ + ArrayList strings = new ArrayList<>(); + strings.add(hospital); + int openSize = patientServiceService.countStatusInfo(param, strings, "1"); + map.put("open", openSize); + + int unsubscribeSize = patientServiceService.countStatusInfo(param, strings, "2"); + map.put("unsubscribe", unsubscribeSize); + + int expireSize = patientServiceService.countStatusInfo(param, strings, "3"); + map.put("expire", expireSize); + + int suspendSize = patientServiceService.countStatusInfo(param, strings, "4"); + map.put("suspend", suspendSize); + HashMap hashMap = new HashMap<>(16); String id = map.get("provinceId").toString(); BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(id); @@ -60,10 +73,12 @@ public class ServiceListWorker implements Callable< List>> { + Integer.parseInt(map.get("suspend").toString())); hashMap.putAll(map); + mapList.add(hashMap); + } } - return mapList; + return mapList; } }