diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BasicConfigService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BasicConfigService.java index 3f0b7d1..5430f55 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BasicConfigService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/BasicConfigService.java @@ -2,15 +2,19 @@ package com.lyms.platform.biz.service; import com.google.common.cache.*; import com.lyms.platform.biz.dal.IBasicConfigDao; +import com.lyms.platform.common.constants.ErrorCodeConstants; 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.dao.operator.Page; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.utils.AddressUtil; import com.lyms.platform.common.utils.CacheHelper; import com.lyms.platform.common.utils.ExceptionUtils; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.query.BasicConfigQuery; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -18,8 +22,7 @@ import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.stereotype.Service; -import java.util.Collection; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; @Service("basicConfigService") @@ -88,4 +91,283 @@ public class BasicConfigService implements InitializingBean { } },400,3); } + + public BaseObjectResponse getAddressItems(String address) { + + Map map = new HashMap<>(); + System.out.println(address); + List items = AddressUtil.getAddress(address); + System.out.println("result = " + items); + + BasicConfigQuery regionsQuery = new BasicConfigQuery(); + regionsQuery.setYn(YnEnums.YES.getId()); + if (items != null && items.size() == 4) + { + regionsQuery.setOrName(items.get(0)); + + List provinceList = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(provinceList)) + { + regionsQuery = new BasicConfigQuery(); + regionsQuery.setParentId(provinceList.get(0).getId()); + map.put("provinceId",provinceList.get(0).getId()); + + List cityList = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(cityList)) + { + List cityIds = new ArrayList<>(); + for (BasicConfig basicConfig : cityList) + { + cityIds.add(basicConfig.getId()); + } + + regionsQuery = new BasicConfigQuery(); + regionsQuery.setOrName(items.get(1)); + regionsQuery.setParentIds(cityIds); + List area = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(area)) + { + map.put("cityId",area.get(0).getParentId()); + map.put("areaId",area.get(0).getId()); + + + regionsQuery = new BasicConfigQuery(); + regionsQuery.setOrName(items.get(2)); + regionsQuery.setParentId(area.get(0).getId()); + + List street = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(area)) + { + map.put("streetId",street.get(0).getId()); + } + + } + } + + } + map.put("address",items.get(items.size()-1)); + } + else if (items != null && items.size() == 5) + { + regionsQuery.setOrName(items.get(0)); + + List provinceList = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(provinceList)) + { + map.put("provinceId",provinceList.get(0).getId()); + + regionsQuery = new BasicConfigQuery(); + regionsQuery.setParentId(provinceList.get(0).getId()); + regionsQuery.setOrName(items.get(1)); + + List cityList = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(cityList)) + { + map.put("cityId",cityList.get(0).getId()); + + regionsQuery = new BasicConfigQuery(); + regionsQuery.setOrName(items.get(2)); + regionsQuery.setParentId(cityList.get(0).getId()); + List area = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(area)) + { + map.put("areaId",area.get(0).getId()); + regionsQuery = new BasicConfigQuery(); + regionsQuery.setOrName(items.get(3)); + regionsQuery.setParentId(area.get(0).getId()); + + List street = queryBasicConfig(regionsQuery); + if (CollectionUtils.isNotEmpty(area)) + { + map.put("streetId",street.get(0).getId()); + } + + } + } + + } + map.put("address",items.get(items.size()-1)); + + } + + + +// if (items != null && items.size() >3) +// { +// BasicConfigQuery regionsQuery = new BasicConfigQuery(); +// regionsQuery.setName(items.get(items.size()-2)); +// regionsQuery.setYn(YnEnums.YES.getId()); +// +// List list = queryBasicConfig(regionsQuery); +// boolean isArea = false; +// if (CollectionUtils.isNotEmpty(list)) +// { +// for(BasicConfig bc : list) +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setId(bc.getParentId()); +// regionsQuery.setYn(YnEnums.YES.getId()); +// List list1 = queryBasicConfig(regionsQuery); +// if (CollectionUtils.isNotEmpty(list1)) { +// for (BasicConfig bc1 : list1) { +// if (bc1.getName().trim().equals(items.get(items.size()-3)) || bc1.getName().trim().equals("抚宁区")) +// { +// map.put("streetId",bc.getId()); +// map.put("areaId",bc1.getId()); +// map.put("cityId",bc1.getParentId()); +// +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setId(bc1.getParentId()); +// regionsQuery.setYn(YnEnums.YES.getId()); +// List list2 = queryBasicConfig(regionsQuery); +// +// if (CollectionUtils.isNotEmpty(list2)) { +// for (BasicConfig bc2 : list2) { +// if (bc2.getName().trim().equals(items.get(0))) +// { +// map.put("provinceId",bc2.getId()); +// break; +// } +// } +// } +// isArea = true; +// break; +// } +// } +// } +// } +// if (!isArea) +// { +// if (items.size() == 5) +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setName(items.get(2)); +// regionsQuery.setYn(YnEnums.YES.getId()); +// +// list = queryBasicConfig(regionsQuery); +// //area找到 +// if (CollectionUtils.isNotEmpty(list)) +// { +// for (BasicConfig bc1 : list) { +// +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setId(bc1.getParentId()); +// regionsQuery.setYn(YnEnums.YES.getId()); +// List cityList = queryBasicConfig(regionsQuery); +// +// if (CollectionUtils.isNotEmpty(cityList)) +// { +// for (BasicConfig cl : cityList) { +// if (cl.getName().trim().equals(items.get(1))) +// { +// map.put("cityId",cl.getId()); +// map.put("provinceId",cl.getParentId()); +// break; +// } +// } +// } +// } +// } +// else +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setName(items.get(1)); +// regionsQuery.setYn(YnEnums.YES.getId()); +// +// list = queryBasicConfig(regionsQuery); +// //city找到 +// if (CollectionUtils.isNotEmpty(list)) { +// boolean isFind = false; +// for (BasicConfig bc1 : list) { +// if (bc1.getName().trim().equals(items.get(1))) +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setId(bc1.getParentId()); +// regionsQuery.setYn(YnEnums.YES.getId()); +// List list2 = queryBasicConfig(regionsQuery); +// +// if (CollectionUtils.isNotEmpty(list2)) { +// for (BasicConfig bc2 : list2) { +// if (bc2.getName().trim().equals(items.get(0))) +// { +// map.put("cityId",bc1.getId()); +// map.put("provinceId",bc2.getId()); +// isFind = true; +// } +// } +// } +// if (isFind) +// { +// break; +// } +// } +// } +// +// } +// } +// } +// else if (items.size() == 4) +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setName(items.get(1)); +// regionsQuery.setYn(YnEnums.YES.getId()); +// +// list = queryBasicConfig(regionsQuery); +// //area找到 +// if (CollectionUtils.isNotEmpty(list)) +// { +// boolean isFind = false; +// for (BasicConfig bc1 : list) { +// if (bc1.getName().trim().equals(items.get(1))) +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setId(bc1.getParentId()); +// regionsQuery.setYn(YnEnums.YES.getId()); +// List list2 = queryBasicConfig(regionsQuery); +// if (CollectionUtils.isNotEmpty(list2)) { +// for (BasicConfig bc2 : list2) { +// if (bc2.getName().trim().equals(items.get(0))) +// { +// map.put("areaId",bc1.getId()); +// map.put("cityId",bc1.getParentId()); +// map.put("provinceId",bc2.getId()); +// isFind = true; +// } +// } +// } +// if (isFind) +// { +// break; +// } +// } +// } +// } +// else +// { +// regionsQuery = new BasicConfigQuery(); +// regionsQuery.setName(items.get(0)); +// regionsQuery.setYn(YnEnums.YES.getId()); +// +// list = queryBasicConfig(regionsQuery); +// //province找到 +// if (CollectionUtils.isNotEmpty(list)) { +// for (BasicConfig bc1 : list) { +// map.put("provinceId",bc1.getId()); +// break; +// } +// +// } +// } +// } +// } +// map.put("address",items.get(items.size()-1)); +// } +// } + + BaseObjectResponse objectResponse = new BaseObjectResponse(); + objectResponse.setData(map); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } } \ No newline at end of file diff --git a/platform-common/pom.xml b/platform-common/pom.xml index 04012d4..f3b7ed0 100644 --- a/platform-common/pom.xml +++ b/platform-common/pom.xml @@ -11,6 +11,17 @@ platform-common + org.wltea.analyzer + IKAnalyzer + 2012_u6 + + + + org.apache.lucene + lucene-core + 3.6.0 + + commons-httpclient commons-httpclient diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/AddressUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/AddressUtil.java new file mode 100644 index 0000000..24c8239 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/AddressUtil.java @@ -0,0 +1,55 @@ +package com.lyms.platform.common.utils; + +import org.apache.commons.lang.StringUtils; +import org.wltea.analyzer.core.IKSegmenter; +import org.wltea.analyzer.core.Lexeme; + +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2017-02-09. + */ +public class AddressUtil { + + public static boolean isNumeric(String str) { + return StringUtils.isNumeric(str); + } + + public static List getAddress(String address) { + List list = new ArrayList(); + StringReader input = new StringReader(address.trim()); + IKSegmenter ikSeg = new IKSegmenter(input, true); // true 用智能分词 + StringBuffer sb = new StringBuffer(); // ,false细粒度 + try { + int i = 0; + for (Lexeme lexeme = ikSeg.next(); lexeme != null; lexeme = ikSeg + .next()) { + i++; + String item = lexeme.getLexemeText(); + if (item != null && !isNumeric(item) && item.length() > 1) + { + if (i < 5) + { + list.add(item); + } + else + { + sb.append(item); + } + + } + else + { + sb.append(item); + } + } + } catch (Exception e) { + ExceptionUtils.catchException(e,"地址解析出错"); + return null; + } + list.add(sb.toString()); + return list; + } +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/FileUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/FileUtil.java new file mode 100644 index 0000000..9e5c536 --- /dev/null +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/FileUtil.java @@ -0,0 +1,36 @@ +package com.lyms.platform.common.utils; + +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by Administrator on 2017-02-10. + */ +public class FileUtil { + + public static void getFileItem() throws IOException { + File rootFile = new File("F:\\data_location-gh-pages\\town"); + File[] files = rootFile.listFiles(); + List towns = new ArrayList<>(); + for (File file : files) + { + String json = FileUtils.readFileToString(file); + Map maps = JsonUtil.getMap(json); + for (String key : maps.keySet()) + { + //towns.add(maps.get(key)); + System.out.println(maps.get(key).trim().equals("街道")); + } + + } + } + + public static void main(String[] args) throws IOException { + getFileItem(); + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BasicConfigQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BasicConfigQuery.java index d960c18..d927f0a 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/BasicConfigQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/BasicConfigQuery.java @@ -17,10 +17,12 @@ public class BasicConfigQuery extends BaseQuery implements IConvertToNativeQuery private List ids; private String parentId; + private List parentIds; private String code; private String name; + private String orName; private String keyword; @@ -54,9 +56,19 @@ public class BasicConfigQuery extends BaseQuery implements IConvertToNativeQuery if (null != name) { condition = condition.and("name", name, MongoOper.IS); } + if (null != orName) { + MongoCondition con1= MongoCondition.newInstance("alias", orName, MongoOper.LIKE); + MongoCondition con = MongoCondition.newInstance("name", orName, MongoOper.IS); + condition = condition.orCondition(new MongoCondition[]{con1, con}); + } if (null != parentId) { condition = condition.and("parentId", parentId, MongoOper.IS); } + + if (null != parentIds) { + condition = condition.and("parentId", parentIds, MongoOper.IN); + } + if (null != typeId) { condition = condition.and("typeId", typeId, MongoOper.IS); } @@ -74,6 +86,22 @@ public class BasicConfigQuery extends BaseQuery implements IConvertToNativeQuery return condition.toMongoQuery(); } + public List getParentIds() { + return parentIds; + } + + public void setParentIds(List parentIds) { + this.parentIds = parentIds; + } + + public String getOrName() { + return orName; + } + + public void setOrName(String orName) { + this.orName = orName; + } + public List getIds() { return ids; } diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java index be13431..17d6de1 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java @@ -183,7 +183,7 @@ public class AmsMessageService { public static void main(String[] args) { - Map> list = getMessageTemplateMap("241", + Map> list = getMessageTemplateMap("248", AmsServiceTypeEnum.CHILD_GUIDE); List msgs = list.get("高血压"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java index 35baa13..41ea361 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/Test.java @@ -28,7 +28,11 @@ import java.util.List; public class Test { public static void main(String[] args) { - String id="1"; - System.out.print(String.format("%07d", id)); +// String id="1"; +// System.out.print(String.format("%07d", id)); + + String addr="四川省华蓥市双河街道办事处民太村"; + + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RegionController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RegionController.java index fcb20d8..d646754 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RegionController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RegionController.java @@ -8,6 +8,7 @@ import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.UserTypeEnum; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.utils.ResultUtils; import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.permission.model.Organization; @@ -17,15 +18,20 @@ import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.query.BasicConfigQuery; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,7 +49,10 @@ public class RegionController extends BaseController{ private UsersService usersService; @Autowired private OrganizationService organizationService; - + /** + * mongo 里面省市区的id + */ + public static final String CHINA_BASIC_ID = "f6c505dd-835a-43d7-b0bb-fdb9eb0b7b31"; @TokenRequired @RequestMapping(value = "/regions",method = RequestMethod.GET) public void getRegions(@RequestParam(value = "parentId", required = false) String parentId, @@ -139,4 +148,58 @@ public class RegionController extends BaseController{ } ResultUtils.buildSuccessResultAndWrite(httpServletResponse, list); } + @RequestMapping(value = "/getAddress",method = RequestMethod.GET) + public void getAddress() { + BasicConfigQuery regionsQuery = new BasicConfigQuery(); + regionsQuery.setParentId(CHINA_BASIC_ID); + regionsQuery.setYn(YnEnums.YES.getId()); + List basicConfigList = basicConfigService.queryBasicConfig(regionsQuery); + List list = new ArrayList<>(); + for(BasicConfig bc : basicConfigList) + { + list.add(bc.getName()); + regionsQuery.setParentId(bc.getId()); + List list1 = basicConfigService.queryBasicConfig(regionsQuery); + for(BasicConfig bc1 : list1) + { + list.add(bc1.getName()); + + regionsQuery.setParentId(bc1.getId()); + List list2 = basicConfigService.queryBasicConfig(regionsQuery); + for(BasicConfig bc2 : list2) + { + list.add(bc2.getName()); + + regionsQuery.setParentId(bc2.getId()); + List list3 = basicConfigService.queryBasicConfig(regionsQuery); + for(BasicConfig bc3 : list3) + { + list.add(bc3.getName()); + } + + } + + } + + } + try { + FileUtils.writeLines(new File("F:\\ext.dic"), list); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + + /** + * 解析身份证地址 + * @param address + * @return + */ + @RequestMapping(value = "/getAddressItems", method = RequestMethod.GET) + @ResponseBody + public BaseObjectResponse getAddressItems(@RequestParam(required = true)String address) throws UnsupportedEncodingException { + address = new String(address.getBytes("ISO-8859-1"),"UTF-8"); + return basicConfigService.getAddressItems(address); + } } \ No newline at end of file