From b065ab13056ee1fc8b8ab9b07fe25bf2e7134d34 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Fri, 17 May 2019 14:49:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A2=9E=E5=80=BC=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=BB=9F=E8=AE=A1=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/master/PatientServiceMapper.java | 34 +++ .../permission/model/ServiceListQuery.java | 99 +++++++++ .../permission/service/PatientServiceService.java | 7 + .../service/impl/PatientServiceServiceImpl.java | 19 ++ .../resources/mainOrm/master/PatientService.xml | 195 ++++++++++++++++ .../web/controller/AreaCountController.java | 30 ++- .../operate/web/facade/AreaCountFacade.java | 247 ++++++++++++++++++++- 7 files changed, 629 insertions(+), 2 deletions(-) create mode 100644 platform-biz-service/src/main/java/com/lyms/platform/permission/model/ServiceListQuery.java 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 86ea349..b0f7560 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 @@ -2,6 +2,8 @@ package com.lyms.platform.permission.dao.master; import com.lyms.platform.permission.model.PatientService; import com.lyms.platform.permission.model.PatientServiceQuery; +import com.lyms.platform.permission.model.ServiceListQuery; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -30,4 +32,36 @@ public interface PatientServiceMapper { int selectOnlyBzServiceCount(PatientServiceQuery query); + /** + * 所有增值服务list + * + * @param query + * @return + */ + Map getServiceList(@Param("query") ServiceListQuery query); + + + /** + * 根据状态统计数量 + * + * @param param + * @return + */ + int countStatusInfo(@Param("param") ServiceListQuery param); + + /** + * 所有增值服务详情list的总数 + * + * @param param + * @return + */ + int getServeDetailListCount(@Param("param") ServiceListQuery param); + + /** + * 所有增值服务详情list + * + * @param param + * @return + */ + List getServeDetailList(@Param("param") ServiceListQuery param); } \ No newline at end of file diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/model/ServiceListQuery.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/ServiceListQuery.java new file mode 100644 index 0000000..0c098a1 --- /dev/null +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/model/ServiceListQuery.java @@ -0,0 +1,99 @@ +package com.lyms.platform.permission.model; + +import com.lyms.platform.common.dao.BaseQuery; + +import java.util.Date; +import java.util.List; + +/** + * + * @Author dongqin + * @Description 增值服务list请求参数类 + * @Date 15:49 2019/5/15 + **/ + +public class ServiceListQuery extends BaseQuery { + + private Date startTime; + + private String provinceId; + + private String cityId; + + private String areaId; + + private String hospitalId; + + private Integer userId; + + private List hospitalIds; + + /** + * 针对详情列表:-1 全部 1-开通、2-退订、3-过期、4-暂停 + */ + private String serStatus; + + public String getSerStatus() { + return serStatus; + } + + public void setSerStatus(String serStatus) { + this.serStatus = serStatus; + } + + public List getHospitalIds() { + return hospitalIds; + } + + public void setHospitalIds(List hospitalIds) { + this.hospitalIds = hospitalIds; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public String getProvinceId() { + return provinceId; + } + + public void setProvinceId(String provinceId) { + this.provinceId = provinceId; + } + + public String getCityId() { + return cityId; + } + + public void setCityId(String cityId) { + this.cityId = cityId; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } +} 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 bb710bc..63367d6 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 @@ -2,6 +2,7 @@ package com.lyms.platform.permission.service; import com.lyms.platform.permission.model.PatientService; import com.lyms.platform.permission.model.PatientServiceQuery; +import com.lyms.platform.permission.model.ServiceListQuery; import java.util.List; import java.util.Map; @@ -21,4 +22,10 @@ public interface PatientServiceService { List selectOnlyBzService(PatientServiceQuery query); + + Map getServiceList(ServiceListQuery param); + + int countStatusInfo(ServiceListQuery param); + + List getServeDetailList(ServiceListQuery param); } \ No newline at end of file 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 22bf4be..2c3e663 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 @@ -3,6 +3,7 @@ package com.lyms.platform.permission.service.impl; import com.lyms.platform.permission.dao.master.PatientServiceMapper; import com.lyms.platform.permission.model.PatientService; import com.lyms.platform.permission.model.PatientServiceQuery; +import com.lyms.platform.permission.model.ServiceListQuery; import com.lyms.platform.permission.service.PatientServiceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -56,4 +57,22 @@ public class PatientServiceServiceImpl implements PatientServiceService { } return patientServiceMapper.selectOnlyBzService(query); } + + @Override + public Map getServiceList(ServiceListQuery query) { + return patientServiceMapper.getServiceList(query); + } + + @Override + public int countStatusInfo(ServiceListQuery param) { + return patientServiceMapper.countStatusInfo(param); + } + + @Override + public List getServeDetailList(ServiceListQuery param) { + if (param.getNeed() != null) { + param.mysqlBuild(patientServiceMapper.getServeDetailListCount(param)); + } + return patientServiceMapper.getServeDetailList(param); + } } \ No newline at end of file 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 9a94f4a..7eb0625 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/PatientService.xml @@ -393,5 +393,200 @@ select count(1) from patient_service + + + + + \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java index 7ed3005..d3bcea6 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java @@ -5,13 +5,14 @@ import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.operate.web.facade.AreaCountFacade; - +import com.lyms.platform.permission.model.ServiceListQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; /** * @@ -184,5 +185,32 @@ public class AreaCountController extends BaseController { cityId, areaId, loginState.getId(),response, nodeName); } + /** + * 增值服务统计list + * + * @param query + */ + @RequestMapping(value = "/getService/list",method = RequestMethod.POST) + @ResponseBody + @TokenRequired + public BaseResponse getServiceList(@RequestBody @Valid ServiceListQuery query, HttpServletRequest request){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + query.setUserId(loginState.getId()); + return areaCountFacade.getServiceList(query); + } + + /** + * 增值服务统计detailList + * + * @param param + */ + @RequestMapping(value = "/getServiceDetail/list",method = RequestMethod.POST) + @ResponseBody + @TokenRequired + public BaseResponse getServiceDetailList(@RequestBody @Valid ServiceListQuery param, HttpServletRequest request){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + param.setUserId(loginState.getId()); + return areaCountFacade.getServiceDetailList(param); + } } \ No newline at end of file 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 78a6770..8c1292f 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 @@ -10,7 +10,6 @@ import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.*; -import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.FunvCommonUtil; import com.lyms.platform.operate.web.utils.MongoUtil; @@ -18,8 +17,10 @@ import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.operate.web.worker.CheckPointCountWorker; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.model.ServiceListQuery; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.AntExRecordModel; import com.lyms.platform.pojo.BasicConfig; @@ -39,6 +40,8 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; +import java.time.*; +import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -86,6 +89,11 @@ public class AreaCountFacade { @Autowired private MongoUtil mongoUtil; + @Autowired + private PatientServiceService patientServiceService; + + @Autowired + private BabyBookbuildingService babyBookbuildingService; /** * 获取当前用户拥有的医院权限列表并和查询条件取交集 @@ -1019,6 +1027,243 @@ public class AreaCountFacade { public BaseResponse getAreaName(String id) { return RespBuilder.buildSuccess(mongoUtil.findName(id)); } + + /** + * 增值服务统计 + * + * @param param + * @return + */ + public BaseResponse getServiceList(ServiceListQuery param) { + BaseResponse baseResponse = new BaseResponse(); + if (param.getStartTime() == null){ + Date startDate = getStartDate(); + param.setStartTime(startDate); + } + long startTime = System.currentTimeMillis(); + + HashMap objectHashMap = new HashMap<>(16); + LinkedList linkedList = new LinkedList<>(); + + String hospitalId = param.getHospitalId(); + String provinceId = param.getProvinceId(); + String cityId = param.getCityId(); + String areaId = param.getAreaId(); + List hospitalIds = new ArrayList<>(); + if (StringUtils.isEmpty(hospitalId)){ + /* hospitalIds = getCurrentUserHospPermissions(param.getUserId(), + StringUtils.isEmpty(provinceId) ? null : provinceId, StringUtils.isEmpty(cityId) ? null : cityId, StringUtils.isEmpty(areaId) ? null : areaId);*/ + hospitalIds = getCurrentUserHospPermissions2(param.getUserId(), + StringUtils.isEmpty(provinceId) ? null : provinceId, StringUtils.isEmpty(cityId) ? null : cityId, StringUtils.isEmpty(areaId) ? null : areaId); + } else { + hospitalIds.add(hospitalId); + } + long timeMillis = System.currentTimeMillis(); + System.err.println(startTime - timeMillis); + for (String hospital: hospitalIds){ + System.err.print(hospital + ", "); + param.setHospitalId(hospital); + Map map = patientServiceService.getServiceList(param); + System.err.println(System.currentTimeMillis() - timeMillis); + if (map == null){ + continue; + } + HashMap hashMap = new HashMap<>(16); + String id = map.get("provinceId").toString(); + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(id); + hashMap.put("provinceName", basicConfig.getName()); + + id = map.get("cityId").toString(); + basicConfig = basicConfigService.getOneBasicConfigById(id); + hashMap.put("cityName", basicConfig.getName()); + + id = map.get("areaId").toString(); + basicConfig = basicConfigService.getOneBasicConfigById(id); + hashMap.put("areaName", basicConfig.getName()); + hashMap.put("total", Integer.parseInt(map.get("open").toString()) + + Integer.parseInt(map.get("unsubscribe").toString()) + + Integer.parseInt(map.get("expire").toString()) + + Integer.parseInt(map.get("suspend").toString())); + + hashMap.putAll(map); + + + linkedList.add(hashMap); + } + long ttt = System.currentTimeMillis(); + System.err.println(timeMillis - ttt); + ArrayList statusNameList = new ArrayList<>(); + statusNameList.add("开通"); + statusNameList.add("退订"); + statusNameList.add("过期"); + statusNameList.add("暂停"); + + param.setHospitalIds(hospitalIds); + ArrayList statusValList = new ArrayList<>(); + param.setSerStatus("1"); + int number = patientServiceService.countStatusInfo(param); + statusValList.add(number); + param.setSerStatus("2"); + number = patientServiceService.countStatusInfo(param); + statusValList.add(number); + param.setSerStatus("3"); + number = patientServiceService.countStatusInfo(param); + statusValList.add(number); + param.setSerStatus("4"); + number = patientServiceService.countStatusInfo(param); + statusValList.add(number); + + objectHashMap.put("statusNameList",statusNameList); + objectHashMap.put("statusValList", statusValList); + objectHashMap.put("serviceList", linkedList); + + baseResponse.setObject(objectHashMap); + + return baseResponse; + } + + /** + * 本年的起始时间 + * + * @return + */ + private Date getStartDate() { + LocalDate with = LocalDate.now().plusYears(0).with(TemporalAdjusters.firstDayOfYear()); + ZoneId zoneId = ZoneId.systemDefault(); + Instant instant = with.atStartOfDay().atZone(zoneId).toInstant(); + return Date.from(instant); + } + + /** + * 增值服务详情list + * + * @param param + * @return + */ + public BaseResponse getServiceDetailList(ServiceListQuery param) { + param.setNeed("Y"); + param.setSort("desc"); + BaseResponse response = new BaseResponse(); + if (param.getStartTime() == null){ + Date startDate = getStartDate(); + param.setStartTime(startDate); + } + List mapList = patientServiceService.getServeDetailList(param); + for (Map map : mapList){ + String parentId = map.get("parentId").toString(); + String perType = map.get("perType").toString(); + String serType = map.get("serType").toString(); + //String serDoct = map.get("serDoct").toString(); + Date createDate = (Date) map.get("createDate"); + String userName; + if ("1".equals(perType)){ + // 孕妇 + Patients patient = patientsService.findOnePatientById(parentId); + userName = patient.getUsername(); + Date lastMenses = patient.getLastMenses(); + int differentDays = differentDays(lastMenses, createDate); + int week = differentDays / 7; + map.put("openYumSize", week); + + }else { + // 儿童 不显示孕周数和服务周期 + userName = babyBookbuildingService.queryBabyBuildById(parentId).getName(); + map.put("opnYumSize", ""); + map.put("serviceWeek", ""); + } + map.put("patientName", userName); + String serTypeName = getSerTypeName(serType); + map.put("serTypeName", serTypeName); + // String doctorName = usersService.getUsers(Integer.parseInt(serDoct)).getName(); + map.put("doctorName", ""); + + map.remove("parentId"); + map.remove("perType"); + map.remove("serType"); + map.remove("serDoct"); + } + response.setObject(mapList); + return response; + } + + private String getSerTypeName(String serType){ + String str = ""; + switch (serType){ + case "1" : + str = "孕期精准医疗"; + break; + case "2" : + str = "体重管理"; + break; + case "3" : + str = "血糖管理"; + break; + case "4" : + str = "血压管理"; + break; + case "5" : + str = "专家咨询"; + break; + case "6" : + str = "标准服务"; + break; + case "7" : + str = "体温管理"; + break; + case "8" : + str = ""; + break; + case "9" : + str = ""; + break; + case "10" : + str = "精准指导"; + break; + case "11" : + str = "标准服务"; + break; + default: + str = ""; + } + return str; + } + + /** + * 相差天数 + * + * @param date1 + * @param date2 + * @return + */ + public static int differentDays(Date date1,Date date2) { + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(date1); + + Calendar cal2 = Calendar.getInstance(); + cal2.setTime(date2); + int day1= cal1.get(Calendar.DAY_OF_YEAR); + int day2 = cal2.get(Calendar.DAY_OF_YEAR); + + int year1 = cal1.get(Calendar.YEAR); + int year2 = cal2.get(Calendar.YEAR); + if(year1 != year2) { + // 同一年 + int timeDistance = 0 ; + for(int i = year1 ; i < year2 ; i ++) { + if(i%4==0 && i%100!=0 || i%400==0) { + // 闰年 + timeDistance += 366; + } else { + // 不是闰年 + timeDistance += 365; + } + } + return timeDistance + (day2-day1) ; + } else { + // 不同年 + return day2-day1; + } + } } -- 1.8.3.1