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