From f1864f6d2d85b49fc901b22e9f6759a5d0fb360b Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 26 十一月 2024 09:33:03 +0800 Subject: [PATCH] 开发更新 --- server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Areas.java | 109 +++++++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java | 458 ++++++++++++++++++++++++++++++ server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/AreasCloudController.java | 115 +++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AreasDto.java | 23 + server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/AreasMapper.java | 12 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/AreasService.java | 124 ++++++++ 6 files changed, 841 insertions(+), 0 deletions(-) diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/AreasCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/AreasCloudController.java new file mode 100644 index 0000000..480b024 --- /dev/null +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/AreasCloudController.java @@ -0,0 +1,115 @@ +package com.doumee.cloud.admin; + +import com.doumee.api.BaseController; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.business.dto.AreasDto; +import com.doumee.dao.business.model.Areas; +import com.doumee.service.business.AreasService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * @author 姹熻箘韫� + * @date 2023/02/15 08:55 + */ +@Api(tags = "鐪佸競鍖轰俊鎭〃") +@RestController +@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/areas") +public class AreasCloudController extends BaseController { + + @Autowired + private AreasService areasService; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("business:areas:create") + public ApiResponse create(@RequestBody Areas areas,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + areas.setLoginUserInfo(getLoginUser(token)); + return ApiResponse.success(areasService.create(areas)); + } + + @ApiOperation("鏍规嵁ID鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("business:areas:delete") + public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + areasService.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("business:areas:delete") + public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + areasService.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("鏍规嵁ID淇敼") + @PostMapping("/updateById") + @RequiresPermissions("business:areas:update") + public ApiResponse updateById(@RequestBody Areas areas,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + areas.setLoginUserInfo(getLoginUser(token)); + areasService.updateById(areas); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") +// @RequiresPermissions("business:areas:query") + public ApiResponse<PageData<Areas>> findPage (@RequestBody PageWrap<Areas> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(areasService.findPage(pageWrap)); + } + + @ApiOperation("鍏ㄩ儴鏍戝舰鏌ヨ") + @PostMapping("/treeList") +// @RequiresPermissions("business:areas:query") + public ApiResponse<List<Areas>> treeList (@RequestBody AreasDto pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + Areas a = new Areas(); + BeanUtils.copyProperties(pageWrap,a); + return ApiResponse.success(areasService.findList(a)); + } + @ApiOperation("鏍规嵁鐖惰妭鐐规煡涓�") + @PostMapping("/listByParentId") +// @RequiresPermissions("business:areas:query") + public ApiResponse<List<Areas>> listByParentId (@RequestBody AreasDto pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + Areas a = new Areas(); + BeanUtils.copyProperties(pageWrap,a); +// PageWrap<Areas> wrap = new PageWrap<>(); +// wrap.setPage(Constants.ONE); +// wrap.setCapacity(9999); +// wrap.setModel(a); + return ApiResponse.success(areasService.listByParentId(a)); + } + @ApiOperation("瀵煎嚭Excel") + @PostMapping("/exportExcel") + @RequiresPermissions("business:areas:exportExcel") + public void exportExcel (@RequestBody PageWrap<Areas> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + ExcelExporter.build(Areas.class).export(areasService.findPage(pageWrap).getRecords(), "鐪佸競鍖轰俊鎭〃", response); + } + + @ApiOperation("鏍规嵁ID鏌ヨ") + @GetMapping("/{id}") + @RequiresPermissions("business:areas:query") + public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(areasService.findById(id)); + } +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/AreasMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/AreasMapper.java new file mode 100644 index 0000000..6e66e24 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/AreasMapper.java @@ -0,0 +1,12 @@ +package com.doumee.dao.business; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.doumee.dao.business.model.Areas; + +/** + * @author 姹熻箘韫� + * @date 2023/02/15 08:55 + */ +public interface AreasMapper extends BaseMapper<Areas> { + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AreasDto.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AreasDto.java new file mode 100644 index 0000000..12db167 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/AreasDto.java @@ -0,0 +1,23 @@ +package com.doumee.dao.business.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author Eva.Caesar Liu + * @date 2023/02/14 11:14 + */ +@Data +@ApiModel("鐪佸競鍖烘煡璇㈠弬鏁�") +public class AreasDto implements Serializable { + + @ApiModelProperty(value = "鍚嶇О" ) + private String name; + @ApiModelProperty(value = "绫诲瀷 0鐪� 1甯� 2鍖哄幙", example = "1") + private Integer type; + @ApiModelProperty(value = "鐖惰妭鐐圭紪鐮�", example = "1") + private Integer parentId; +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Areas.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Areas.java new file mode 100644 index 0000000..4176a9d --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Areas.java @@ -0,0 +1,109 @@ +package com.doumee.dao.business.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.doumee.core.annotation.excel.ExcelColumn; +import com.doumee.core.model.LoginUserModel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 鐪佸競鍖轰俊鎭〃 + * @author 姹熻箘韫� + * @date 2023/02/15 08:55 + */ +@Data +@ApiModel("鐪佸競鍖轰俊鎭〃") +@TableName("`areas`") +public class Areas extends LoginUserModel implements Cloneable{ + + @ApiModelProperty(value = "涓婚敭", example = "1") + @ExcelColumn(name="涓婚敭") + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1") + @ExcelColumn(name="鍒涘缓浜虹紪鐮�") + private Integer creator; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @ExcelColumn(name="鍒涘缓鏃堕棿") + private Date createDate; + + @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1") + @ExcelColumn(name="鏇存柊浜虹紪鐮�") + private Integer editor; + + @ApiModelProperty(value = "鏇存柊鏃堕棿") + @ExcelColumn(name="鏇存柊鏃堕棿") + private Date editDate; + + @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1") + @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�") + private Integer isdeleted; + + @ApiModelProperty(value = "鍚嶇О") + @ExcelColumn(name="鍚嶇О") + private String name; + + @ApiModelProperty(value = "澶囨敞") + @ExcelColumn(name="澶囨敞") + private String info; + + @ApiModelProperty(value = "琛屾斂鍖轰唬鐮�") + @ExcelColumn(name="琛屾斂鍖轰唬鐮�") + private String code; + + @ApiModelProperty(value = "鐖剁骇缂栫爜锛堝叧鑱攁reas琛級", example = "1") + @ExcelColumn(name="鐖剁骇缂栫爜锛堝叧鑱攁reas琛級") + private Integer parentId; + + @ApiModelProperty(value = "绫诲瀷 0鐪� 1甯� 2鍖哄幙", example = "1") + @ExcelColumn(name="绫诲瀷 0鐪� 1甯� 2鍖哄幙") + private Integer type; + @ApiModelProperty(value = "鎺掑簭鐮�", example = "1") + @ExcelColumn(name="鎺掑簭鐮�") + private Integer sortnum; + + @TableField(exist = false) + private List<Areas> childList; + @TableField(exist = false) + private Integer provinceId; + @TableField(exist = false) + private String provinceName; + @TableField(exist = false) + private Integer cityId; + @TableField(exist = false) + private String cityName; + //瀹炵幇Cloneable鐨刢lone鏂规硶锛屽皢clone瀹氫箟涓簆ublic + public Areas clone() { + try { + return (Areas) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; + } + @Override + public String toString() { + return "Areas{" + + "id=" + id + + ", creator=" + creator + + ", createDate=" + createDate + + ", editor=" + editor + + ", editDate=" + editDate + + ", isdeleted=" + isdeleted + + ", name='" + name + '\'' + + ", info='" + info + '\'' + + ", code='" + code + '\'' + + ", parentId=" + parentId + + ", type=" + type + + '}'; + } +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/AreasService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/AreasService.java new file mode 100644 index 0000000..5248c94 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/AreasService.java @@ -0,0 +1,124 @@ +package com.doumee.service.business; + +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.dao.business.model.Areas; + +import java.util.List; + +/** + * 鐪佸競鍖轰俊鎭〃Service瀹氫箟 + * @author 姹熻箘韫� + * @date 2023/02/15 08:55 + */ +public interface AreasService { + + /** + * 鍒涘缓 + * + * @param areas 瀹炰綋瀵硅薄 + * @return Integer + */ + Integer create(Areas areas); + + /** + * 涓婚敭鍒犻櫎 + * + * @param id 涓婚敭 + */ + void deleteById(Integer id); + + /** + * 鍒犻櫎 + * + * @param areas 瀹炰綋瀵硅薄 + */ + void delete(Areas areas); + + /** + * 鎵归噺涓婚敭鍒犻櫎 + * + * @param ids 涓婚敭闆� + */ + void deleteByIdInBatch(List<Integer> ids); + + /** + * 涓婚敭鏇存柊 + * + * @param areas 瀹炰綋瀵硅薄 + */ + void updateById(Areas areas); + + /** + * 鎵归噺涓婚敭鏇存柊 + * + * @param areass 瀹炰綋闆� + */ + void updateByIdInBatch(List<Areas> areass); + + /** + * 涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return Areas + */ + Areas findById(Integer id); + + /** + * 鏍规嵁id鍜宼ype鏌ヨ瀵硅薄淇℃伅 + * @param id + * @param type null 鏌ヨ鍏ㄩ儴 0鐪佷唤 1鍩庡競 2鍖哄煙 + * @return + */ + Areas findById(Integer id,Integer type); + + + Areas findByName(String name,Integer type); + Areas findByNameAndParentId(String name,Integer type,Integer parentId); + + List<Areas> findByParentId(Integer type,Integer parentId); + + List<Areas> findChildByParentId(Integer id,List<Areas> list); + + boolean isAreaValid(String proName,String cityName,String areaName); + + /** + * 鏉′欢鏌ヨ鍗曟潯璁板綍 + * + * @param areas 瀹炰綋瀵硅薄 + * @return Areas + */ + Areas findOne(Areas areas); + + /** + * 鏉′欢鏌ヨ + * + * @param areas 瀹炰綋瀵硅薄 + * @return List<Areas> + */ + List<Areas> findList(Areas areas); + + /** + * 鍒嗛〉鏌ヨ + * + * @param pageWrap 鍒嗛〉瀵硅薄 + * @return PageData<Areas> + */ + PageData<Areas> findPage(PageWrap<Areas> pageWrap); + + /** + * 鏉′欢缁熻 + * + * @param areas 瀹炰綋瀵硅薄 + * @return long + */ + long count(Areas areas); + + void cacheData(); + + Areas findByCityAndArea(String cityName, String areasName); + + String getAddress(Integer cityId,Integer areaId); + + List<Areas> listByParentId(Areas model); +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java new file mode 100644 index 0000000..1b2ed39 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java @@ -0,0 +1,458 @@ +package com.doumee.service.business.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.model.LoginUserInfo; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.Utils; +import com.doumee.dao.business.AreasMapper; +import com.doumee.dao.business.model.Areas; +import com.doumee.service.business.AreasService; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 鐪佸競鍖轰俊鎭〃Service瀹炵幇 + * @author 姹熻箘韫� + * @date 2023/02/15 08:55 + */ +@Service +public class AreasServiceImpl implements AreasService { + public static List<Areas> ALL_AREA_LIST; + public static List<Areas> PROVINCE_LIST; + public static List<Areas> CITY_LIST; + public static List<Areas> AREA_LIST; + public static List<Areas> ALL_AREA_TREE; + + @Autowired + private AreasMapper areasMapper; + + @Override + public Integer create(Areas areas) { + LoginUserInfo user = areas.getLoginUserInfo(); +/* + + if (Objects.isNull(areas.getParentId())){ + areas.setType(Constants.ZERO); + }else { + Areas parentArea = areasMapper.selectById(areas.getParentId()); + if (Objects.isNull(parentArea)){ + areas.setType(Constants.ZERO); + }else { + areas.setType(parentArea.getType()+Constants.ONE); + } + }*/ + areas.setCreateDate(new Date()); + areas.setEditDate(new Date()); + areas.setCreator(user.getId()); + areas.setEditor(user.getId()); + areas.setIsdeleted(Constants.ZERO); + areasMapper.insert(areas); + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + return areas.getId(); + } + + @Override + public void deleteById(Integer id) { + areasMapper.deleteById(id); + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + } + + @Override + public void delete(Areas areas) { + UpdateWrapper<Areas> deleteWrapper = new UpdateWrapper<>(areas); + areasMapper.delete(deleteWrapper); + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + } + + @Override + public void deleteByIdInBatch(List<Integer> ids) { + if (CollectionUtils.isEmpty(ids)) { + return; + } + areasMapper.deleteBatchIds(ids); + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + } + + @Override + public void updateById(Areas areas) { + + UpdateWrapper<Areas> wrapper = new UpdateWrapper<>(); + wrapper.lambda().eq(Areas::getId,areas.getId()); + Areas update = new Areas(); + update.setName(areas.getName()); + update.setSortnum(areas.getSortnum()); + areasMapper.update(update,wrapper); + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + } + + @Override + public void updateByIdInBatch(List<Areas> areass) { + if (CollectionUtils.isEmpty(areass)) { + return; + } + for (Areas areas: areass) { + this.updateById(areas); + } + //鍒锋柊缂撳瓨鏁版嵁 + cacheData(); + } + + @Override + public Areas findById(Integer id) { + if(ALL_AREA_LIST!=null){ + for(Areas a : ALL_AREA_LIST){ + if(Constants.equalsInteger(a.getId(),id)){ + return a; + } + } + } + // return areasMapper.selectById(id); + return null; + } + @Override + public Areas findById(Integer id,Integer type) { + List<Areas> list = null; + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + if(list!=null){ + for(Areas a : list){ + if(Constants.equalsInteger(a.getId(),id)){ + return a; + } + } + } + return null; + } + + + @Override + public Areas findByName(String name,Integer type){ + List<Areas> list = null; + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + if(list!=null){ + for(Areas a : list){ + if(StringUtils.equals(name,a.getName())){ + return a; + } + } + } + return null; + } + @Override + public Areas findByNameAndParentId(String name,Integer type,Integer parentId){ + List<Areas> list = null; + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + if(list!=null){ + for(Areas a : list){ + if(StringUtils.equals(name,a.getName()) && Constants.equalsInteger(parentId,a.getParentId())){ + return a; + } + } + } + return null; + } + + @Override + public List<Areas> findByParentId(Integer type, Integer parentId) { + + List<Areas> list = null; + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + if(list!=null){ + return list.stream().filter(s->Constants.equalsInteger(s.getParentId(),parentId)).collect(Collectors.toList()); + } + return null; + } + + @Override + public List<Areas> findChildByParentId(Integer id,List<Areas> list){ + List<Areas> result =null; + if(list == null){ + list = ALL_AREA_LIST; + } + if(list!=null && list.size()>0){ + for(Areas model :list){ + if(Constants.equalsInteger(id,model.getParentId())){ + if(result == null){ + result = new ArrayList<>(); + } + result.add(model ); + } + } + } + return result; + } + + @Override + public boolean isAreaValid(String proName,String cityName,String areaName){ + Areas pro = findByName(proName,Constants.ZERO); + if(pro == null){ + return false; + } + Areas city = findByName(proName,Constants.ONE); + if(city == null && !Constants.equalsInteger(city.getParentId(),pro.getId())){ + return false; + } + Areas area = findByName(proName,Constants.TWO); + if(area == null && !Constants.equalsInteger(area.getParentId(),city.getId())){ + return false; + } + return false; + } + @Override + public Areas findOne(Areas areas) { + QueryWrapper<Areas> wrapper = new QueryWrapper<>(areas); + return areasMapper.selectOne(wrapper); + } + + @Override + public List<Areas> findList(Areas areas) { + List<Areas> list = null; + Integer type =areas.getType(); + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + List<Areas> result = null; + if(StringUtils.isNotBlank(areas.getName())){ + for(Areas a : list){ + if(StringUtils.contains(a.getName(),areas.getName())){ + if(result == null){ + result = new ArrayList<>(); + } + result.add(a); + } + } + return result; + } + return list; + } + + @Override + public List<Areas> listByParentId(Areas areas) { + List<Areas> list = null; + Integer type =areas.getType(); + if(type == null){ + list = ALL_AREA_LIST; + }else if(Constants.equalsInteger(type,Constants.ZERO)){ + list = PROVINCE_LIST; + }else if(Constants.equalsInteger(type,Constants.ONE)){ + list = CITY_LIST; + } else if (Constants.equalsInteger(type,Constants.TWO)){ + list = AREA_LIST; + } + List<Areas> result = null; + if(list!=null){ + for(Areas a : list){ + if(result == null){ + result = new ArrayList<>(); + } + if( areas.getParentId() == null + ||(areas.getParentId() !=null) && Constants.equalsInteger(a.getParentId(),areas.getParentId())){ + Areas t = new Areas(); + BeanUtils.copyProperties(a,t); + t.setChildList(null); + result.add(t); + } + } + } + return result; + } + @Override + public void cacheData() { + Areas a = new Areas(); + a.setIsdeleted(Constants.ZERO); + ALL_AREA_LIST = null; + PROVINCE_LIST =null; + CITY_LIST=null; + AREA_LIST = null; + ALL_AREA_TREE = null; + ALL_AREA_LIST = areasMapper.selectList(new QueryWrapper<>(a).lambda().orderByDesc(Areas::getSortnum)); + if(ALL_AREA_LIST!=null){ + for(Areas model : ALL_AREA_LIST){ + if(Constants.equalsInteger(model.getType(),Constants.ZERO)){ + if(PROVINCE_LIST == null){ + PROVINCE_LIST = new ArrayList<>(); + } + PROVINCE_LIST.add(model); + }else if(Constants.equalsInteger(model.getType(),Constants.ONE)){ + if(CITY_LIST == null){ + CITY_LIST = new ArrayList<>(); + } + CITY_LIST.add(model); + if(model.getParentId() != null){ + Areas p = findById(model.getParentId()); + if(p!=null ){ + model.setProvinceId(p.getId()); + model.setProvinceName(p.getName()); + } + } + }else if(Constants.equalsInteger(model.getType(),Constants.TWO)){ + if(AREA_LIST == null){ + AREA_LIST = new ArrayList<>(); + } + AREA_LIST.add(model); + Areas city = findById(model.getParentId()); + if(city!=null ){ + model.setCityId(city.getId()); + model.setCityName(city.getName()); + if(city!=null && city.getParentId()!=null){ + Areas p = findById(city.getParentId()); + if(p!=null ){ + model.setProvinceId(p.getId()); + model.setProvinceName(p.getName()); + } + } + } + } + } + } + if(CITY_LIST!=null){ + for(Areas aa : CITY_LIST){ + aa.setChildList(findChildByParentId(aa.getId(), AREA_LIST)); + } + } + if(PROVINCE_LIST!=null){ + for(Areas aa : PROVINCE_LIST){ + aa.setChildList(findChildByParentId(aa.getId(),CITY_LIST)); + } + } + System.out.println("================="); + } + + @Override + public PageData<Areas> findPage(PageWrap<Areas> pageWrap) { + IPage<Areas> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); + QueryWrapper<Areas> queryWrapper = new QueryWrapper<>(); + Utils.MP.blankToNull(pageWrap.getModel()); + if (pageWrap.getModel().getId() != null) { + queryWrapper.lambda().eq(Areas::getId, pageWrap.getModel().getId()); + } + + if (pageWrap.getModel().getCreator() != null) { + queryWrapper.lambda().eq(Areas::getCreator, pageWrap.getModel().getCreator()); + } + if (pageWrap.getModel().getCreateDate() != null) { + queryWrapper.lambda().ge(Areas::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); + queryWrapper.lambda().le(Areas::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); + } + if (pageWrap.getModel().getEditor() != null) { + queryWrapper.lambda().eq(Areas::getEditor, pageWrap.getModel().getEditor()); + } + if (pageWrap.getModel().getEditDate() != null) { + queryWrapper.lambda().ge(Areas::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); + queryWrapper.lambda().le(Areas::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); + } + if (pageWrap.getModel().getIsdeleted() != null) { + queryWrapper.lambda().eq(Areas::getIsdeleted, pageWrap.getModel().getIsdeleted()); + } + if (pageWrap.getModel().getName() != null) { + queryWrapper.lambda().eq(Areas::getName, pageWrap.getModel().getName()); + } + if (pageWrap.getModel().getInfo() != null) { + queryWrapper.lambda().eq(Areas::getInfo, pageWrap.getModel().getInfo()); + } + if (pageWrap.getModel().getCode() != null) { + queryWrapper.lambda().eq(Areas::getCode, pageWrap.getModel().getCode()); + } + if (pageWrap.getModel().getParentId() != null) { + queryWrapper.lambda().eq(Areas::getParentId, pageWrap.getModel().getParentId()); + } + if (pageWrap.getModel().getType() != null) { + queryWrapper.lambda().eq(Areas::getType, pageWrap.getModel().getType()); + } + for(PageWrap.SortData sortData: pageWrap.getSorts()) { + if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { + queryWrapper.orderByDesc(sortData.getProperty()); + } else { + queryWrapper.orderByAsc(sortData.getProperty()); + } + } + return PageData.from(areasMapper.selectPage(page, queryWrapper)); + } + + @Override + public long count(Areas areas) { + QueryWrapper<Areas> wrapper = new QueryWrapper<>(areas); + return areasMapper.selectCount(wrapper); + } + + @Override + public Areas findByCityAndArea(String cityName, String areasName) { + Areas city = findByName(cityName,Constants.ONE); + if(city !=null){ + return findByNameAndParentId(areasName,Constants.TWO,city.getId()); + } + return null; + } + + @Override + public String getAddress(Integer cityId,Integer areaId){ + Areas cityAreas = findById(cityId, Constants.ONE); + Areas areas = findById(areaId, Constants.TWO); + + String cityName = Optional.ofNullable(cityAreas) + .map(s -> s.getProvinceName() + s.getName()) + .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST)); + String areaName = Optional.ofNullable(areas).map(s -> s.getName()).orElse(""); + + return cityName+areaName; + } +} -- Gitblit v1.9.3