package cn.ksource.web.controller.business.pages.xtpz.sjzd.address; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.beans.CONFIG_DATA_DICTIONARY_AREA; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.page.PageInfo; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.TreeNode; import cn.ksource.web.service.DataDictionaryService; @Service("addressFacade") public class AddressFacadeImpl implements AddressFacade { @Autowired private BaseDao baseDao; @Autowired private DataDictionaryService dataDictionaryService; /** * 根据ID查询地址信息 * 返回map */ @Override public Map getAddressById(String id) { String sql="SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE Id=:id"; Map map = baseDao.queryForMap(sql, new SqlParameter().addValue("id", id)); return map; } /** * 根据名称查询地址信息 * 返回map */ @Override public Map getAddressByName(String address_name) { String addressName = StringUtil.decode_utf(address_name); String sql="SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE ADDRESS_NAME=:address_name"; Map map = baseDao.queryForMap(sql, new SqlParameter().addValue("address_name", addressName)); return map; } /** * 查询所有地址信息 * 返回list */ @Override public List getAddressList() { String sql = "SELECT * FROM CONFIG_DATA_DICTIONARY_AREA ORDER BY ADDRESS_SN ASC"; List list= baseDao.queryForList(sql); return list; } /** * 根据上级ID查询下级所有地址信息 * 返回list */ @Override public PageInfo getAddressList(PageInfo pageInfo,String up_id) { String sql = "SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE 1=1" ; if (StringUtils.isNotBlank(up_id) && !up_id.toString().equalsIgnoreCase("0")) { sql += " AND UP_ID=:up_id "; } else { sql += " AND UP_ID IS NULL "; } sql += " ORDER BY ADDRESS_SN ASC "; Map paramMap = new HashedMap(); paramMap.put("up_id", up_id); PageInfo list = baseDao.queryforSplitPageInfo(pageInfo, sql, paramMap); return list; } @Override public int getAddressCount(String up_id) { String sql = "SELECT COUNT(ID) FROM CONFIG_DATA_DICTIONARY_AREA WHERE 1=1" ; if (StringUtils.isNotBlank(up_id) && !up_id.toString().equalsIgnoreCase("0")) { sql += " AND UP_ID=:up_id "; } else { sql += " AND UP_ID IS NULL "; } Map paramMap = new HashedMap(); paramMap.put("up_id", up_id); int count = baseDao.queryForInteger(sql,paramMap); return count; } /** * 保存地址信息 * 返回integer */ @Override public Integer saveAddress(CONFIG_DATA_DICTIONARY_AREA address) { address.insertOrUpdate(); dataDictionaryService.updateAreaListByParentID(address.getUp_id()); dataDictionaryService.updateAreaById(address.getId()); return 0; } /** * 获取地址树形菜单 * 返回TreeNode */ @Override public TreeNode getAddressTree(String id) { TreeNode root = new TreeNode("0","地址字典"); String sql = "select * from CONFIG_DATA_DICTIONARY_AREA where ADDRESS_STATUS=1 "; if (StringUtils.isNotBlank(id)) { sql += " and up_id = :id "; } else { sql += " and level=1 "; } sql += " order by ADDRESS_SN asc "; List addressList = baseDao.queryForList(sql, new SqlParameter("id",id)); for (Map map : addressList) { TreeNode tree = new TreeNode(map.get("ID").toString(),map.get("ADDRESS_NAME").toString()); tree.setIsOpen(false); root.addChild(tree); continue; } return root; } /** * 根据ID删除地址信息 * 无返回值 */ @Override public void delAddress(String id) { CONFIG_DATA_DICTIONARY_AREA area = new CONFIG_DATA_DICTIONARY_AREA(id).getInstanceById(); dataDictionaryService.updateAreaListByParentID(area.getUp_id()); dataDictionaryService.updateAreaById(area.getId()); area.deleteById(); } /** * 根据名称验证是否存在重名 * 返回String */ @Override public String check(String id,String address_name) { String addressName = StringUtil.decode_utf(address_name); String sql="SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE ADDRESS_NAME=:address_name"; Map addressMap = baseDao.queryForMap(sql, new SqlParameter().addValue("address_name", addressName)); Object addressId = addressMap.get("ID"); if(addressId == null){ return "1"; } else if(!(addressId == null)&&addressId.equals(id)) { return "1"; } else { return "2"; } } /** * 分页获取地址信息地址信息 * 返回map */ public Map getAddressListForPagination(HttpServletRequest request){ String up_id = request.getParameter("up_id"); int pageindex = ConvertUtil.obj2Integer(request.getParameter("page")); //当前页码 int pagesize = ConvertUtil.obj2Integer(request.getParameter("rows")); //每页展示数量 int begin = (pageindex-1)* pagesize ; int end = (pageindex-1)* pagesize + pagesize; int infoCount = getAddressCount(up_id);//获取总条数 String sql = "SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE 1=1" ; if (StringUtils.isNotBlank(up_id) && !up_id.toString().equalsIgnoreCase("0")) { sql += " AND UP_ID=:up_id "; } else { sql += " AND UP_ID IS NULL "; } sql += " ORDER BY ADDRESS_SN ASC LIMIT :begin,:end"; Map paramMap = new HashedMap(); paramMap.put("up_id", up_id); paramMap.put("begin", begin); paramMap.put("end", end); List list = baseDao.queryForList(sql,paramMap); Map rootMap = new HashMap(); rootMap.put("total", infoCount); //信息总数 rootMap.put("rows", list); return rootMap; } @Override public List addressData(HttpServletRequest request) { // TODO Auto-generated method stub return null; } @Override public List queryAddressYjList(HttpServletRequest request) { Map paramMap = new HashMap(); StringBuilder builder = new StringBuilder("SELECT * FROM CONFIG_DATA_DICTIONARY_AREA WHERE ADDRESS_STATUS=1 ORDER BY UP_ID,ADDRESS_SN ASC"); List trees = baseDao.queryForList(builder.toString(),paramMap); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); for (Map map : trees) { String treeId = ConvertUtil.obj2StrBlank(map.get("ID")); String parentId = ConvertUtil.obj2StrBlank(map.get("UP_ID")); //一级树 if (!StringUtil.notEmpty(parentId)) { yjgnCache.put(treeId, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); resultList.add(map); continue; } //二级树 String pId = map.get("UP_ID").toString(); if(yjgnCache.containsKey(pId)) { Map yjgnMap = yjgnCache.get(pId); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); } } System.out.println(JsonUtil.list2Json(resultList)); return resultList; } @Override public List getAreaTree(String areaId) { String proviceId = new String(); String cityId = new String(); String townId = new String(); if(StringUtil.notEmpty(areaId) && areaId.split("-").length==3) { String[] address = areaId.split("-"); proviceId = address[0]; cityId = address[1]; townId = address[2]; } String selectSql = "SELECT A.* FROM CONFIG_DATA_DICTIONARY_AREA A WHERE A.ADDRESS_STATUS = 1 ORDER BY A.LEVEL,A.ADDRESS_SN "; List categoryList = baseDao.queryForList(selectSql); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); if(proviceId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } resultList.add(map); continue; } //二级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("UP_ID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(cityId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } ejgnCache.put(id, map); continue; } //三级树 if (map.get("LEVEL").toString().equalsIgnoreCase("3")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(townId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } if(null!=map.get("UP_ID")){ String upId = map.get("UP_ID").toString(); if(ejgnCache.containsKey(upId)) { Map ejgnMap = ejgnCache.get(upId); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } return resultList; } @Override public List getProtypeTree(String typeId,String gysId, String goodsTypeId) { String proviceId = new String(); String cityId = new String(); String townId = new String(); if(StringUtil.notEmpty(typeId) && typeId.split("-").length==3) { String[] address = typeId.split("-"); proviceId = address[0]; cityId = address[1]; townId = address[2]; } String selectSql = "SELECT C.TYPE,A.* FROM YSY_GYS_GOODS_CATE A,YSY_GOODS_CATEGORY C WHERE A.CATE_ID = C.ID AND A.STATE = 2 AND A.GYS_ID=:gysId "; if(StringUtil.isNotBlank(goodsTypeId)){ selectSql = selectSql + " AND C.TYPE=:goodsTypeId "; } selectSql = selectSql + " ORDER BY A.LV "; List categoryList = baseDao.queryForList(selectSql,new SqlParameter().put("gysId", gysId).put("goodsTypeId", goodsTypeId)); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LV").toString().equalsIgnoreCase("1")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); if(proviceId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } resultList.add(map); continue; } //二级树 if (map.get("LV").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("PID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(cityId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } ejgnCache.put(id, map); continue; } //三级树 if (map.get("LV").toString().equalsIgnoreCase("3")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(townId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } if(null!=map.get("PID")){ String upId = map.get("PID").toString(); if(ejgnCache.containsKey(upId)) { Map ejgnMap = ejgnCache.get(upId); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } return resultList; } @Override public List getProtypeTree_PT(String typeId,String goodsTypeId) { String proviceId = new String(); String cityId = new String(); String townId = new String(); if(StringUtil.notEmpty(typeId) && typeId.split("-").length==3) { String[] address = typeId.split("-"); proviceId = address[0]; cityId = address[1]; townId = address[2]; } String selectSql = "SELECT A.ID,LV1_NAME AS CATE_NAME,A.LEVEL,A.UP_ID FROM YSY_GOODS_CATEGORY A WHERE A.STATE = 1 AND A.LEVEL=1"; if(StringUtil.isNotBlank(goodsTypeId)){ selectSql = selectSql + " AND A.TYPE=:goodsTypeId "; } List categoryList=new ArrayList(); List categoryList1 = baseDao.queryForList(selectSql,new SqlParameter().put("goodsTypeId", goodsTypeId)); selectSql = "SELECT A.ID,LV2_NAME CATE_NAME ,A.LEVEL,A.UP_ID FROM YSY_GOODS_CATEGORY A WHERE A.STATE = 1 AND A.LEVEL=2"; if(StringUtil.isNotBlank(goodsTypeId)){ selectSql = selectSql + " AND A.TYPE=:goodsTypeId "; } List categoryList2 = baseDao.queryForList(selectSql,new SqlParameter().put("goodsTypeId", goodsTypeId)); selectSql = "SELECT A.ID,LV3_NAME CATE_NAME ,A.LEVEL,A.UP_ID FROM YSY_GOODS_CATEGORY A WHERE A.STATE = 1 AND A.LEVEL=3"; if(StringUtil.isNotBlank(goodsTypeId)){ selectSql = selectSql + " AND A.TYPE=:goodsTypeId "; } List categoryList3 = baseDao.queryForList(selectSql,new SqlParameter().put("goodsTypeId", goodsTypeId)); categoryList.addAll(categoryList1); categoryList.addAll(categoryList2); categoryList.addAll(categoryList3); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); if(proviceId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } resultList.add(map); continue; } //二级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("UP_ID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(cityId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } ejgnCache.put(id, map); continue; } //三级树 if (map.get("LEVEL").toString().equalsIgnoreCase("3")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(townId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } if(null!=map.get("UP_ID")){ String upId = map.get("UP_ID").toString(); if(ejgnCache.containsKey(upId)) { Map ejgnMap = ejgnCache.get(upId); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } return resultList; } @Override public List getZskTree(Map params) { // TODO Auto-generated method stub String type=params.get("type"); String address=params.get("treeId"); String yjId = new String(); String ejId = new String(); String sjId = new String(); if(StringUtil.notEmpty(address) && address.split("-").length==3) { String[] address1 = address.split("-"); yjId = address1[0]; ejId = address1[1]; sjId = address1[2]; } String sql = "SELECT * FROM YSY_PT_KNOWLEDGE_CATEGORY WHERE STATE=1"; if(StringUtil.notEmpty(type)){ sql+=" AND TYPE=:type"; } sql+=" ORDER BY LEVEL,ORDER_NUM"; List categoryList = baseDao.queryForList(sql,params); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); yjgnCache.put(id, map); List ejgnList = new LinkedList(); map.put("ejTree", ejgnList); if(yjId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } resultList.add(map); continue; } //二级树 if (map.get("LEVEL").toString().equalsIgnoreCase("2")) { Map yjgnMap = yjgnCache.get(map.get("P_ID").toString()); List list = (List)yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); list.add(map); String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(ejId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } ejgnCache.put(id, map); continue; } //三级树 if (map.get("LEVEL").toString().equalsIgnoreCase("3")) { String id = ConvertUtil.obj2StrBlank(map.get("ID").toString()); if(sjId.equals(id)) { map.put("check", 1); } else { map.put("check", 2); } if(null!=map.get("P_ID")){ String upId = map.get("P_ID").toString(); if(ejgnCache.containsKey(upId)) { Map ejgnMap = ejgnCache.get(upId); List list = (List)ejgnMap.get("sjTree"); list.add(map); } } } } return resultList; } }