diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/param/CommunityQuery.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/param/CommunityQuery.java index 4867a14..8ddc3eb 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/param/CommunityQuery.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/param/CommunityQuery.java @@ -20,8 +20,24 @@ public class CommunityQuery extends BaseQuery { //管辖区域名字 private String gxxq; + private Boolean isGxxqNull; + private Boolean isAreasNull; + public Boolean getIsAreasNull() { + return isAreasNull; + } + + public void setIsAreasNull(Boolean isAreasNull) { + this.isAreasNull = isAreasNull; + } + public Boolean getIsGxxqNull() { + return isGxxqNull; + } + + public void setIsGxxqNull(Boolean isGxxqNull) { + this.isGxxqNull = isGxxqNull; + } public String getOrgAreaId() { return orgAreaId; diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CommunityConfigService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CommunityConfigService.java index c05f571..866fc86 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CommunityConfigService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/CommunityConfigService.java @@ -52,6 +52,11 @@ public class CommunityConfigService { if(null != communityQuery.getKeyword()) { mongoCondition = mongoCondition.orCondition(new MongoCondition[]{new MongoCondition("name", communityQuery.getKeyword(), MongoOper.LIKE), new MongoCondition("gxxq", communityQuery.getKeyword(), MongoOper.LIKE)}); } + + if(null!=communityQuery.getIsGxxqNull()){ + mongoCondition = new MongoCondition("gxxq","", MongoOper.NE); + } + mongoCondition.and("yn", YnEnums.YES.getId(), MongoOper.IS); if(null != communityQuery.getId() ||null!=communityQuery.getOrgAreaId()) { List list = new ArrayList<>(); diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java index 07ece30..8690491 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java @@ -25,7 +25,19 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery{ * 关键字 */ private String keyword; - + /** + * 是否分配社区 + */ + private Boolean isNull; + + public Boolean getIsNull() { + return isNull; + } + + public void setIsNull(Boolean isNull) { + this.isNull = isNull; + } + /** * 产妇名称 */ @@ -40,6 +52,17 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery{ private int visitstatus=-1; private String areaId; + //社区id + private String areaIdOrRestId; + + public String getAreaIdOrRestId() { + return areaIdOrRestId; + } + + public void setAreaIdOrRestId(String areaIdOrRestId) { + this.areaIdOrRestId = areaIdOrRestId; + } + /** * 产妇手机号 */ @@ -193,6 +216,11 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery{ MongoCondition con = MongoCondition.newInstance("username", "^"+keyword, MongoOper.LIKE); condition = condition.orCondition(new MongoCondition[]{con1,con}); } + if(null!=areaIdOrRestId){ + MongoCondition con1= MongoCondition.newInstance("areaId", areaIdOrRestId, MongoOper.IS); + MongoCondition con = MongoCondition.newInstance("areaPostRestId", areaIdOrRestId, MongoOper.IS); + condition=condition.orCondition(new MongoCondition[]{con1, con}); + } if(visitstatus!=-1){ condition= condition.and("isVisit", visitstatus, MongoOper.IS); } @@ -215,9 +243,13 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery{ if(null!=name){ condition=condition.and("username", name, MongoOper.IS); } + if(-1!=yn){ condition=condition.and("yn", yn, MongoOper.IS); } + if(null!=isNull){ + condition=condition.and("communityId", null, MongoOper.IS); + } //去掉type为3 的情况 /* if(-1!=type){ condition=condition.and("type", type, MongoOper.IS); diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/controller/TaskController.java b/platform-data-api/src/main/java/com/lyms/platform/data/controller/TaskController.java index bad71fe..fbd0fc4 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/controller/TaskController.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/controller/TaskController.java @@ -62,6 +62,9 @@ public class TaskController extends BaseController { } else if ("fullUpdatePatients".equals(sid)) { dataImportTaskService.fullUpdatePatients(); writeString(response, "success"); + }else if("updateCommunity".equals(sid)){ + dataImportTaskService.updateCommunity(); + writeString(response, "success"); } else if ("codeinit111".equals(sid)) { try { List list = FileUtils.readLines(new File("d:/streets.csv")); diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/service/DataImportTaskService.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/DataImportTaskService.java index df981f7..7c9e9b8 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/DataImportTaskService.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/DataImportTaskService.java @@ -72,4 +72,9 @@ public interface DataImportTaskService { */ public void updateNewBornsByHospital(String hospitalForeignId, Integer hospitalId, Date startTime); + /** + * 分配社区 + */ + public void updateCommunity() ; + } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/DataImportTaskServiceImpl.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/DataImportTaskServiceImpl.java index dae2b68..1015380 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/DataImportTaskServiceImpl.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/DataImportTaskServiceImpl.java @@ -9,7 +9,6 @@ import com.lyms.platform.common.enums.PermissionTypeEnums; import com.lyms.platform.common.enums.UserTypeEnum; import com.lyms.platform.common.enums.VisitStatusEnums; import com.lyms.platform.common.enums.YnEnums; -import com.lyms.platform.common.utils.Assert; import com.lyms.platform.common.utils.LogUtil; import com.lyms.platform.common.utils.LoginUtil; import com.lyms.platform.data.service.DataImportTaskService; @@ -18,6 +17,7 @@ import com.lyms.platform.permission.service.*; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.CommunityConfig; import com.lyms.platform.pojo.Patients; +import com.lyms.platform.query.PatientsQuery; import com.lymsh.mommybaby.earlydata.dao.PlatMapper; import com.lymsh.mommybaby.earlydata.model.PlatDataContent; import com.lymsh.mommybaby.earlydata.model.PlatDataType; @@ -446,8 +446,7 @@ public class DataImportTaskServiceImpl implements DataImportTaskService { patients.setAreaRegisterId(map.get("P_HUSBANDMOBILEPHONE") == null ? null : map.get("P_HUSBANDMOBILEPHONE").toString()); patients.setVcCardNo(map.get("VC_CARDNO") == null ? null : map.get("VC_CARDNO").toString()); patients.setDeliverOrg(map.get("P_HOSPITALID") == null ? null : map.get("P_HOSPITALID").toString()); - //分配社区 - updateCommunity(patients); + if (patientsService.queryPatientCount(patients.getId()) == 0) { patients.setCreated(patients.getModified()); patients.setIsVisit(VisitStatusEnums.UNVISIT.getId()); @@ -470,26 +469,122 @@ public class DataImportTaskServiceImpl implements DataImportTaskService { } } - private void updateCommunity(Patients patients) { - Assert.notNull(patients, "patient must not null."); - - CommunityQuery communityQuery = null; - CommunityConfig communityConfig = null; - //优先产后修养地,然后现住地址 - if (StringUtils.isNotEmpty(patients.getAreaPostRestId()) && StringUtils.isNotEmpty(patients.getAddressPostRest())) { - communityQuery = new CommunityQuery(); - communityQuery.setOrgAreaId(patients.getAreaPostRestId()); - communityQuery.setGxxq(patients.getAddressPostRest()); - } else if (StringUtils.isNotEmpty(patients.getAddress()) && StringUtils.isNotEmpty(patients.getAreaId())) { - communityQuery = new CommunityQuery(); - communityQuery.setOrgAreaId(patients.getAreaId()); - communityQuery.setGxxq(patients.getAddress()); + private Map> convertToMap(List configs) { + Map> listMap = new HashMap<>(); + for (CommunityConfig config : configs) { + if (StringUtils.isEmpty(config.getGxxq())) { + continue; + } + if (CollectionUtils.isNotEmpty(config.getAreas())) { + String areaId = config.getAreas().get(config.getAreas().size() - 1); + //查看map里面是否存在该区域 + if (listMap.containsKey(areaId)) { + List list = listMap.get(areaId); + list.add(buildCommunity(config)); + listMap.put(areaId, list); + } else { + List list = new ArrayList<>(); + list.add(buildCommunity(config)); + listMap.put(areaId, list); + } + } + } + return listMap; + } + + private SimpleCommunity buildCommunity(CommunityConfig config) { + SimpleCommunity simpleCommunity = new SimpleCommunity(); + simpleCommunity.setId(config.getId()); + String[] a = config.getGxxq().split(","); + List gxxqList = new ArrayList<>(); + for (String a1 : a) { + gxxqList.add(a1.trim()); + } + simpleCommunity.setGxxq(gxxqList); + return simpleCommunity; + } + + private class SimpleCommunity { + private String id; + private List gxxq; + + public List getGxxq() { + return gxxq; + } + + public void setGxxq(List gxxq) { + this.gxxq = gxxq; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + } + + public void updateCommunity() { + //先把所有的社区数据拿出来 + CommunityQuery communityQuery = new CommunityQuery(); + communityQuery.setIsAreasNull(true); + communityQuery.setIsGxxqNull(true); + List list = communityConfigService.queryCommunity(communityQuery); + //把区域id分配成区域id和社区 + Map> map = convertToMap(list); + if (map.isEmpty()) { + return; } - if (null != communityQuery) { - List list = communityConfigService.queryCommunity(communityQuery); - if (CollectionUtils.isNotEmpty(list)) { - communityConfig = list.get(0); - patients.setCommunityId(communityConfig.getId()); + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setIsNull(true); + patientsQuery.setNeed("1"); + patientsQuery.setPage(1); + patientsQuery.setLimit(100); + //每次取50个产妇分配社区 + + Iterator key = map.keySet().iterator(); + while (key.hasNext()) { + boolean isMatch = Boolean.FALSE; + String areaid = key.next(); + patientsQuery.setAreaIdOrRestId(areaid); + List pat = patientsService.queryPatient(patientsQuery); + for (Patients patients : pat) { + //优先产后修养地,然后现住地址 + if (StringUtils.isNotBlank(patients.getAreaPostRestId()) && StringUtils.isNotBlank(patients.getAddressPostRest())) { + List communityList = map.get(patients.getAreaPostRestId()); + if (CollectionUtils.isNotEmpty(communityList)) { + for (SimpleCommunity community : communityList) { + for (String str : community.getGxxq()) { + if (patients.getAddressPostRest().indexOf(str) > -1) { + patients.setCommunityId(community.getId()); + isMatch = true; + break; + } + } + } + } + + } + if (!isMatch&&StringUtils.isNotBlank(patients.getAddress()) && StringUtils.isNotBlank(patients.getAreaId()) ) { + List communityList = map.get(patients.getAreaId()); + if (CollectionUtils.isNotEmpty(communityList)) { + for (SimpleCommunity community : communityList) { + for (String str : community.getGxxq()) { + if (patients.getAddress().indexOf(str) > -1) { + patients.setCommunityId(community.getId()); + isMatch = true; + break; + } + } + } + } + } + if (isMatch){ + patientsService.updatePatient(patients); + isMatch = Boolean.FALSE; + } } } } diff --git a/platform-data-api/src/main/webapp/WEB-INF/vm/task/index.vm b/platform-data-api/src/main/webapp/WEB-INF/vm/task/index.vm index d1bc84b..fca2d24 100644 --- a/platform-data-api/src/main/webapp/WEB-INF/vm/task/index.vm +++ b/platform-data-api/src/main/webapp/WEB-INF/vm/task/index.vm @@ -41,6 +41,14 @@ + + 分配社区 + + 无 + + + +