From 628e3b8bae1bba23da8c727e7493782f0bb3fd7d Mon Sep 17 00:00:00 2001 From: liquanyu Date: Tue, 9 Aug 2016 10:39:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/biz/dal/IBabyBookBuildingDao.java | 2 + .../lyms/platform/biz/dal/IYunBookBuildingDao.java | 4 ++ .../biz/dal/impl/AntenatalExaminationDaoImpl.java | 2 +- .../biz/dal/impl/BabyBookbuildingDaoImpl.java | 35 ++++++++++ .../biz/dal/impl/YunBookbuildingDaoImpl.java | 66 ++++++++++++++++++ .../biz/service/BabyBookbuildingService.java | 4 ++ .../biz/service/YunBookbuildingService.java | 7 ++ .../com/lyms/platform/common/utils/DateUtil.java | 14 ++++ .../lyms/platform/common/utils/StringUtils.java | 15 +++++ .../main/java/com/lyms/platform/pojo/Patients.java | 10 +++ .../platform/data/controller/SmsController.java | 2 +- .../com/lyms/platform/data/service/SmsService.java | 2 + .../platform/data/service/impl/SmsServiceImpl.java | 78 +++++++++++++++------- .../main/resources/spring/applicationContext.xml | 1 + .../operate/web/facade/BookbuildingFacade.java | 21 ++++++ 15 files changed, 237 insertions(+), 26 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBabyBookBuildingDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBabyBookBuildingDao.java index d40817f..bca034b 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBabyBookBuildingDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IBabyBookBuildingDao.java @@ -21,4 +21,6 @@ public interface IBabyBookBuildingDao { List queryBabyYuYueRecord(Date yuYueDate, String tempHid); List queryBabyOrder(Date startDate, String tempHid, String pid); + + List getBirthBabies(String dateStr); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IYunBookBuildingDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IYunBookBuildingDao.java index 8c0cef5..0e4053b 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IYunBookBuildingDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IYunBookBuildingDao.java @@ -11,4 +11,8 @@ public interface IYunBookBuildingDao { public void updatePatient(Patients obj, String id); public List queryPatientWithQuery(MongoQuery id); + + List getBirthIds(String dateStr); + + List getBirthHusbands(String dateStr); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java index 8769b2c..7f3e3b2 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java @@ -62,7 +62,7 @@ public class AntenatalExaminationDaoImpl extends BaseMongoDAOImpl queryYuyueAntenatalExamination(Date yuYueDate,String hospitalId) { - AggregationOperation match = Aggregation.match(Criteria.where("nextCheckTime").gte(yuYueDate).and("nextCheckTime").lte(yuYueDate).and("hospitalId").is(hospitalId)); + AggregationOperation match = Aggregation.match(Criteria.where("nextCheckTime").gte(yuYueDate).lte(yuYueDate).and("hospitalId").is(hospitalId)); AggregationOperation group = Aggregation.group("parentId").max("modified").as("modified"); Aggregation aggregation = Aggregation.newAggregation(match, group); AggregationResults result = this.mongoTemplate.aggregate(aggregation, "lyms_antex", AntenatalExaminationModel.class); diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BabyBookbuildingDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BabyBookbuildingDaoImpl.java index ebe1b3c..5442319 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BabyBookbuildingDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/BabyBookbuildingDaoImpl.java @@ -1,6 +1,11 @@ package com.lyms.platform.biz.dal.impl; +import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.pojo.BabyCheckModel; +import com.mongodb.DBCollection; +import com.mongodb.DBObject; +import com.mongodb.MapReduceCommand; +import com.mongodb.MapReduceOutput; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationOperation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; @@ -14,6 +19,7 @@ import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.pojo.BabyModel; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -58,4 +64,33 @@ public class BabyBookbuildingDaoImpl extends BaseMongoDAOImpl impleme return result.getMappedResults(); } + @Override + public List getBirthBabies(String dateStr) { + String map = "function(){"+ + "if (this.birth != null) {"+ + "var dateStr = (this.birth.getMonth()+1) + \"-\" +this.birth.getDate();"+ + "if (\""+dateStr+"\" == dateStr)"+ + "{"+ + " emit(this._id,{bdate:dateStr});"+ + "}"+ + " }}"; + + String reduce = "function(key, values) { return values;} "; + DBCollection collections =this.mongoTemplate.getCollection("lyms_baby"); + MapReduceCommand cmd = new MapReduceCommand(collections, map, reduce, + null, MapReduceCommand.OutputType.INLINE, null); + + MapReduceOutput out = collections.mapReduce(cmd); + + List ids = new ArrayList<>(); + + for (DBObject o : out.results()) { + if (o != null && o.get("_id") != null && StringUtils.isNotEmpty(String.valueOf(o.get("_id")))) + { + ids.add(String.valueOf(o.get("_id"))); + } + } + return ids; + } + } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/YunBookbuildingDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/YunBookbuildingDaoImpl.java index b5e56c6..89194f7 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/YunBookbuildingDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/YunBookbuildingDaoImpl.java @@ -3,6 +3,12 @@ package com.lyms.platform.biz.dal.impl; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.mongodb.DBCollection; +import com.mongodb.DBObject; +import com.mongodb.MapReduceCommand; +import com.mongodb.MapReduceOutput; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationOperation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; @@ -13,6 +19,8 @@ import com.lyms.platform.biz.dal.IYunBookBuildingDao; import com.lyms.platform.common.dao.BaseMongoDAOImpl; import com.lyms.platform.pojo.Patients; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @Repository("yunBookBuildingDao") @@ -33,4 +41,62 @@ public class YunBookbuildingDaoImpl extends BaseMongoDAOImpl implement public List queryPatientWithQuery(MongoQuery query) { return find(query.convertToMongoQuery()); } + @Override + public List getBirthIds(String dateStr) + { + String map = "function(){"+ + "if (this.birth != null) {"+ + "var dateStr = (this.birth.getMonth()+1) + \"-\" +this.birth.getDate();"+ + "if (\""+dateStr+"\" == dateStr)"+ + "{"+ + " emit(this._id,{bdate:dateStr});"+ + "}"+ + " }}"; + + String reduce = "function(key, values) { return values;} "; + DBCollection collections =this.mongoTemplate.getCollection("lyms_patient"); + MapReduceCommand cmd = new MapReduceCommand(collections, map, reduce, + null, MapReduceCommand.OutputType.INLINE, null); + + MapReduceOutput out = collections.mapReduce(cmd); + + List ids = new ArrayList<>(); + + for (DBObject o : out.results()) { + if (o != null && o.get("_id") != null && StringUtils.isNotEmpty(String.valueOf(o.get("_id")))) + { + ids.add(String.valueOf(o.get("_id"))); + } + } + return ids; + } + + @Override + public List getBirthHusbands(String dateStr) { + String map = "function(){"+ + "if (this.husbandBirth != null) {"+ + "var dateStr = (this.husbandBirth.getMonth()+1) + \"-\" +this.husbandBirth.getDate();"+ + "if (\""+dateStr+"\" == dateStr)"+ + "{"+ + " emit(this._id,{bdate:dateStr});"+ + "}"+ + " }}"; + + String reduce = "function(key, values) { return values;} "; + DBCollection collections =this.mongoTemplate.getCollection("lyms_patient"); + MapReduceCommand cmd = new MapReduceCommand(collections, map, reduce, + null, MapReduceCommand.OutputType.INLINE, null); + + MapReduceOutput out = collections.mapReduce(cmd); + + List ids = new ArrayList<>(); + + for (DBObject o : out.results()) { + if (o != null && o.get("_id") != null && StringUtils.isNotEmpty(String.valueOf(o.get("_id")))) + { + ids.add(String.valueOf(o.get("_id"))); + } + } + return ids; + } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BabyBookbuildingService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BabyBookbuildingService.java index 40e105c..93ecee3 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BabyBookbuildingService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BabyBookbuildingService.java @@ -60,4 +60,8 @@ public class BabyBookbuildingService { public List queryBabyOrder(Date startDate, String tempHid, String pid) { return babyBookBuildingDao.queryBabyOrder(startDate, tempHid, pid); } + + public List getBirthBabies(String dateStr) { + return babyBookBuildingDao.getBirthBabies(dateStr); + } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/YunBookbuildingService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/YunBookbuildingService.java index e6c3ac5..4912ee4 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/YunBookbuildingService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/YunBookbuildingService.java @@ -39,6 +39,13 @@ public class YunBookbuildingService { return yunBookBuildingDao.queryPatientWithQuery(query.addOrder(Sort.Direction.DESC, "created")); } + public List getBirthPatients(String dateStr) { + return yunBookBuildingDao.getBirthIds(dateStr); + } + + public List getBirthHusbands(String dateStr) { + return yunBookBuildingDao.getBirthHusbands(dateStr); + } } diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java index 52641be..dcfc8dc 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java @@ -596,6 +596,16 @@ public class DateUtil { return parseYMD(time); } + public static String formatSimpleDate(Date date) + { + if (date == null) + { + return ""; + } + SimpleDateFormat md = new SimpleDateFormat("M-d"); + return md.format(date); + } + public static void main(String[] arg) { /* Date today = new Date(1448336360000L); @@ -637,6 +647,10 @@ public class DateUtil { // // Date actualSendDate = DateUtil.addDay(d, -2); // String sendDateStr = DateUtil.getDD(actualSendDate); + +// SimpleDateFormat md = new SimpleDateFormat("M-d"); +// String st = md.format(new Date()); +// System.out.print(st); } catch (Exception e) { diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java b/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java index d29db2c..b5c6998 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java @@ -1,5 +1,7 @@ package com.lyms.platform.common.utils; +import java.util.Date; + /** * 添加类的一句话简单描述。 *

@@ -99,6 +101,19 @@ public final class StringUtils { } return ""; } + + public static Date getBirthDay(String idCard){ + if (isEmpty(idCard)) + { + return null; + } + String year = idCard.substring(6, 10); + String mouth = idCard.substring(10, 12); + String day = idCard.substring(12, 14); + String birthday = year + "-" + mouth + "-" + day; + return DateUtil.parseYMD(birthday); + } + // public static void main(String[] arg) { // System.out.print(encryPhone("18382670036")); // } diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java index 2fb3f36..11b0b4b 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java @@ -210,6 +210,8 @@ public class Patients extends BaseModel { private String mommyPatientId; private String husbandName; private String husbandPhone; + //丈夫生日 + private Date husbandBirth; private String vcCardNo; //丈夫文化程度Id @@ -221,6 +223,14 @@ public class Patients extends BaseModel { //person表主键 private String pid; + public Date getHusbandBirth() { + return husbandBirth; + } + + public void setHusbandBirth(Date husbandBirth) { + this.husbandBirth = husbandBirth; + } + public String getPid() { return pid; } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java b/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java index a7ffefa..11cecaf 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java @@ -22,7 +22,7 @@ public class SmsController extends BaseController { */ @RequestMapping(value = "/template") public void productSms(HttpServletResponse response){ - smsService.productTemplateSms(); + smsService.getBirthPatients(); // MessageListRequest list = new MessageListRequest(); // List messages = new ArrayList<>(); diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/service/SmsService.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/SmsService.java index 45f2c5f..a78a96a 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/SmsService.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/SmsService.java @@ -15,4 +15,6 @@ public interface SmsService { void productChanAmsSms(); void serviceEnd(); + + void getBirthPatients(); } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java index ea063ba..a7d0601 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java @@ -735,38 +735,53 @@ public class SmsServiceImpl implements SmsService{ if (specialDateType == SpecialDateEnums.ZFSR.getId()) { Date birthday = DateUtil.addDay(new Date(),sendTimeType); - //生成年月日时间去匹配丈夫身份证号 - String bstr = DateUtil.getYmd(birthday); - patientsQuery.setHcertificateNum(bstr); - - //查询符合条件丈夫信息 - List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); - if (CollectionUtils.isNotEmpty(patients)) + List ids = yunBookbuildingService.getBirthHusbands(DateUtil.formatSimpleDate(birthday)); + if(CollectionUtils.isNotEmpty(ids)) { - for (Patients pat : patients) + for(String id : ids) { - if (pat != null && StringUtils.isEmpty(pat.getHusbandPhone())) + patientsQuery.setId(id); + //查询符合条件丈夫信息 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) { - continue; + for (Patients pat : patients) + { + if (pat != null && StringUtils.isEmpty(pat.getPhone())) + { + continue; + } + + //短信前缀 + String messagePrefix = getSmsPrefix(config,pat.getBookbuildingDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = replaceName(pat.getHusbandName(), messageContent); + MessageRequest request = getMessageRequest( messageContent,pat.getPhone(),ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), + pat.getHospitalId(),template.getId(),pat.getId()); + + messages.add(request); + } } - - //短信前缀 - String messagePrefix = getSmsPrefix(config,pat.getBookbuildingDoctor()); - String messageContent = "【"+messagePrefix+"】"+template.getContent(); - messageContent = replaceName(pat.getHusbandName(), messageContent); - MessageRequest request = getMessageRequest( messageContent,pat.getPhone(),ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), - pat.getHospitalId(),template.getId(),pat.getId()); - - messages.add(request); } } + + } //孕妇生日 else if(specialDateType == SpecialDateEnums.MMSR.getId()) { Date birthday = DateUtil.addDay(new Date(), sendTimeType); - patientsQuery.setBirth(birthday); - messages.addAll(getYunMessageRequestList(patientsQuery, config, template)); + String dateStr = DateUtil.formatSimpleDate(birthday); + List ids = yunBookbuildingService.getBirthPatients(dateStr); + if (CollectionUtils.isNotEmpty(ids)) + { + for(String id : ids) + { + patientsQuery.setId(id); + messages.addAll(getYunMessageRequestList(patientsQuery, config, template)); + } + } + } } //特殊日期中的公历和农历 每年的公历/农历 @@ -1057,11 +1072,19 @@ public class SmsServiceImpl implements SmsService{ Integer specialDateType = template.getSpecialDateType(); //儿童生日 if (specialDateType == SpecialDateEnums.ETSR.getId()) { + Date birthday = DateUtil.addDay(new Date(), sendTimeType); - babyModelQuery.setBirthStart(birthday); - babyModelQuery.setBirthEnd(birthday); + String dateStr = DateUtil.formatSimpleDate(birthday); + List ids = babyBookbuildingService.getBirthBabies(dateStr); + if (CollectionUtils.isNotEmpty(ids)) + { + for(String id : ids) + { + babyModelQuery.setId(id); + messages.addAll(getBabyMessageRequestList(babyModelQuery, config, template)); + } + } - messages.addAll(getBabyMessageRequestList(babyModelQuery, config, template)); } } //儿童 每年的公历和农历 else if (sendDateType == SendDateEnums.GL.getId() || sendDateType == SendDateEnums.NL.getId()) @@ -2268,4 +2291,11 @@ public class SmsServiceImpl implements SmsService{ return data; } + + @Override + public void getBirthPatients() { + String dateStr = DateUtil.formatSimpleDate(new Date()); + yunBookbuildingService.getBirthPatients(dateStr); + } + } diff --git a/platform-data-api/src/main/resources/spring/applicationContext.xml b/platform-data-api/src/main/resources/spring/applicationContext.xml index 00717f0..d1e6e4b 100644 --- a/platform-data-api/src/main/resources/spring/applicationContext.xml +++ b/platform-data-api/src/main/resources/spring/applicationContext.xml @@ -89,4 +89,5 @@ + \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index fc374dd..1631fad 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -67,6 +67,9 @@ public class BookbuildingFacade { @Autowired private PatientsService patientsService; + @Autowired + private BasicConfigService basicConfigService; + /** * 添加孕妇建档 * @param yunRequest @@ -506,6 +509,24 @@ public class BookbuildingFacade { //丈夫信息 patient.setHusbandName(yunRequest.getHusbandName()); patient.setHcertificateTypeId(yunRequest.getHusbandCertificateTypeId()); + + if (StringUtils.isNotEmpty(yunRequest.getHusbandCertificateTypeId()) && StringUtils.isNotEmpty(yunRequest.getHusbandCertificateNum())) + { + BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); + basicConfigQuery.setId(yunRequest.getHusbandCertificateTypeId()); + basicConfigQuery.setYn(YnEnums.YES.getId()); + List data = basicConfigService.queryBasicConfig(basicConfigQuery); + if (CollectionUtils.isNotEmpty(data)) { + //身份证类型得到丈夫的生日 必须为身份证类型 + if ("SFZ".endsWith(data.get(0).getCode())) + { + String cardNo = yunRequest.getHusbandCertificateNum(); + Date birth = StringUtils.getBirthDay(cardNo); + patient.setHusbandBirth(birth); + } + } + } + patient.setHcertificateNum(yunRequest.getHusbandCertificateNum()); patient.setHusbandPhone(yunRequest.getHusbandPhone()); patient.setHcountryId(yunRequest.getHusbandCountryId()); -- 1.8.3.1