Commit 6a6494de authored by “yiyousong”'s avatar “yiyousong”
parents 72c683de 11f4238d
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.mortals.xhx.common.utils;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.util.CharsetUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.util.DataUtil;
import com.mortals.xhx.common.code.SourceEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.matter.model.MatterEntity;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 解析事项类型,主题,热度等
*/
@Slf4j
public class MatterTypeHtmlParseUtil {
public static Rest<Map<String, Integer>> statSiteMatterCount(Map<String, String> params, String url) {
String matterTotalExp = "//input[@id=\"result_count\"]";
String matterPageExp = "//input[@id=\"pageNum\"]";
Map<String, Integer> resultMap = new HashMap<>();
try {
Document dom = Jsoup.connect(url).data(params).get();
Elements elements = dom.selectXpath(matterTotalExp);
if (elements.size() > 0) {
Integer total = elements.get(0) == null ? 0 : DataUtil.converStr2Int(elements.get(0).attr("value"), 0);
resultMap.put("total", total);
}
elements = dom.selectXpath(matterPageExp);
if (elements.size() > 0) {
Integer pageNum = elements.get(0) == null ? 0 : DataUtil.converStr2Int(elements.get(0).attr("value"), 0);
resultMap.put("pageNum", pageNum);
}
} catch (Exception e) {
log.error("获取事项数量异常!params:" + JSON.toJSONString(params), e);
return Rest.fail(e.getMessage());
}
return Rest.ok(resultMap);
}
public static Rest<List<MatterEntity>> getMatterList(Map<String, String> params, String url) {
String matterListExp = "//div[@class=\"sx_list\"]//span[1]";
String matterListLiExp = "//div[@class=\"sx_list\"]//li/a[1]";
List<MatterEntity> matterEntityList = new ArrayList<>();
try {
Document dom = Jsoup.connect(url).data(params).get();
Elements elements = dom.selectXpath(matterListExp);
for (int i = 0; i < elements.size(); i++) {
Element element = elements.get(i);
if (element == null) {
continue;
}
String title = element.attr("title");
String href = element.firstElementChild().attr("href");
if (href.equalsIgnoreCase("javascript:void(0)")) {
continue;
}
buildMatter(matterEntityList, title, href);
}
elements = dom.selectXpath(matterListLiExp);
for (int i = 0; i < elements.size(); i++) {
Element element = elements.get(i);
if (element == null) {
continue;
}
String title = element.attr("title");
String href = element.attr("href");
buildMatter(matterEntityList, title, href);
}
} catch (Exception e) {
log.error("获取列表异常!params:" + JSON.toJSONString(params), e);
return Rest.fail(e.getMessage());
}
return Rest.ok(matterEntityList);
}
private static void buildMatter(List<MatterEntity> matterEntityList, String title, String href) {
UrlBuilder builder = UrlBuilder.ofHttp(href, CharsetUtil.CHARSET_UTF_8);
String itemCode = builder.getQuery().get("itemCode").toString();
String taskType = builder.getQuery().get("taskType").toString();
String deptCode = builder.getQuery().get("deptCode").toString();
String areaCode = builder.getQuery().get("areaCode").toString();
MatterEntity matterEntity = new MatterEntity();
matterEntity.initAttrValue();
matterEntity.setTcode(itemCode);
matterEntity.setTname(title);
matterEntity.setDeptCode(deptCode);
matterEntity.setMatterNo(itemCode);
matterEntity.setAreaCode(areaCode);
matterEntity.setMatterName(title);
matterEntity.setUrl(href);
matterEntity.setSource(SourceEnum.政务网.getValue());
matterEntityList.add(matterEntity);
}
public static Rest<Map<String, String>> syncThemeBySiteId(Map<String, String> params, String url) {
String deptListExp = "//ul[@class='bm-list']//li";
Map<String, String> map = new HashMap<>();
try {
Document dom = Jsoup.connect(url).data(params).get();
Elements elements = dom.selectXpath(deptListExp);
for (int i = 0; i < elements.size(); i++) {
Element element = elements.get(i);
if (element == null) {
continue;
}
String deptName = element.attr("title");
String href = element.firstElementChild().attr("href");
UrlBuilder builder = UrlBuilder.ofHttp(href, CharsetUtil.CHARSET_UTF_8);
String deptCode = builder.getQuery().get("deptCode").toString();
map.put(deptCode, deptName);
}
} catch (Exception e) {
return Rest.fail(e.getMessage());
}
return Rest.ok("当前站点同步添加部门成功!", map);
}
public static void main(String[] args) {
/* String url = "http://www.sczwfw.gov.cn/jiq/interface/item/tags";
HashMap<String, String> params = new HashMap<>();
params.put("dxType", "21");
params.put("areaCode", "510107000000");
params.put("deptCode", "");
params.put("searchtext", "");
params.put("pageno", "5");
params.put("taskType", "");
Rest<List<MatterEntity>> rest = MatterHtmlParseUtil.getMatterList(params, url);
System.out.println(rest.getData().size());*/
/* HashMap<String, String> params = new HashMap<>();
params.put("areaCode", "510116000000");
MatterHtmlParseUtil.syncDeptBySiteId(params);*/
// String url = "http://www.sczwfw.gov.cn/jiq/front/item/qlqd";
/* String url = "http://www.sczwfw.gov.cn/jiq/interface/item/tags";
HashMap<String, String> params = new HashMap<>();
params.put("areaCode", "510110006007");
params.put("dxType", "56");
params.put("deptCode", "");
params.put("searchtext", "");
params.put("taskType", "");
params.put("pageno", "1");
Rest<Map<String, Integer>> rest = MatterHtmlParseUtil.statSiteMatterCount(params, url);
System.out.println(JSON.toJSONString(rest));
List<MatterEntity> allList = new ArrayList<>();
String url1 = "http://www.sczwfw.gov.cn/jiq/interface/item/tags";
HashMap<String, String> params1 = new HashMap<>();
params1.put("dxType", "56");
params1.put("areaCode", "510110006007");
params1.put("deptCode", "");
params1.put("searchtext", "");
params1.put("taskType", "");
for (int i = 1; i <= rest.getData().get("pageNum"); i++) {
params1.put("pageno", String.valueOf(i));
//System.out.println("params:" + JSON.toJSONString(params1));
Rest<List<MatterEntity>> restList = MatterHtmlParseUtil.getMatterList(params1, url1);
if (restList.getCode() == YesNoEnum.YES.getValue() && !ObjectUtils.isEmpty(restList.getData())) {
// System.out.println("pageno:" + i + " res size:" + restList.getData().size());
allList.addAll(restList.getData());
}
}
// System.out.println("--------------------------------------------project size" + rest.getData().get("total") + "----------" + allList.size());
for (int i = 0; i < allList.size(); i++) {
System.out.println(i + " " + allList.get(i).getMatterName());
}*/
// System.out.println(JSON.toJSONString(allList));
String url = "http://www.sczwfw.gov.cn/jiq/interface/item/tags";
HashMap<String, String> params = new HashMap<>();
params.put("areaCode", "510110006007");
params.put("dxType", "56");
params.put("deptCode", "");
params.put("searchtext", "");
params.put("taskType", "");
params.put("pageno", "1");
Rest<Map<String, Integer>> rest = MatterTypeHtmlParseUtil.statSiteMatterCount(params, url);
System.out.println(JSON.toJSONString(rest));
List<MatterEntity> allList = new ArrayList<>();
String url1 = "http://www.sczwfw.gov.cn/jiq/interface/item/tags";
HashMap<String, String> params1 = new HashMap<>();
params1.put("dxType", "56");
params1.put("areaCode", "510110006007");
params1.put("deptCode", "");
params1.put("searchtext", "");
params1.put("taskType", "");
for (int i = 1; i <= rest.getData().get("pageNum"); i++) {
params1.put("pageno", String.valueOf(i));
Rest<List<MatterEntity>> restList = MatterTypeHtmlParseUtil.getMatterList(params1, url1);
if (restList.getCode() == YesNoEnum.YES.getValue() && !ObjectUtils.isEmpty(restList.getData())) {
allList.addAll(restList.getData());
}
}
// for (int i = 0; i < allList.size(); i++) {
// System.out.println(i + " " + allList.get(i).getMatterName());
// }
url = "http://www.sczwfw.gov.cn/jiq/front/channel/deptSwitch";
params = new HashMap<>();
params.put("areaCode", "510110006007");
//Rest<Map<String, String>> rest1 = MatterTypeHtmlParseUtil.syncDeptBySiteId(params, url);
//System.out.println(JSON.toJSONString(rest1));
}
}
...@@ -52,7 +52,6 @@ public class SyncGovMatterDetailThread implements Runnable { ...@@ -52,7 +52,6 @@ public class SyncGovMatterDetailThread implements Runnable {
log.info("同步事项列表:"+ JSON.toJSONString(rest)); log.info("同步事项列表:"+ JSON.toJSONString(rest));
if(rest.getCode()== YesNoEnum.YES.getValue()){ if(rest.getCode()== YesNoEnum.YES.getValue()){
List<MatterEntity> matterEntityList = matterService.find(new MatterQuery().areaCode(siteEntity.getAreaCode()).source(SourceEnum.政务网.getValue())); List<MatterEntity> matterEntityList = matterService.find(new MatterQuery().areaCode(siteEntity.getAreaCode()).source(SourceEnum.政务网.getValue()));
List<MatterEntity> unSyncDetailMatterList = matterEntityList.stream().filter(f -> f.getHaveGetMatterInfo().equalsIgnoreCase("false")).collect(Collectors.toList()); List<MatterEntity> unSyncDetailMatterList = matterEntityList.stream().filter(f -> f.getHaveGetMatterInfo().equalsIgnoreCase("false")).collect(Collectors.toList());
log.info("同步站点事项到站点....."); log.info("同步站点事项到站点.....");
......
package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import com.mortals.xhx.module.base.service.BaseAreaService;
import com.mortals.xhx.module.dept.service.DeptService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* 同步区域子数据
*
* @author: zxfei
* @date: 2022/4/13 13:34
* @description:
**/
@AllArgsConstructor
@Slf4j
public class SyncSubAreaThread implements Runnable {
private BaseAreaService baseAreaService;
private BaseAreaEntity baseAreaEntity;
private Context context;
@Override
public void run() {
log.info("子区域同步开始!");
Rest<String> rest = baseAreaService.genSubAreaByRootName(baseAreaEntity, context);
log.info("子区域同步结束!结果:{}", JSON.toJSONString(rest));
}
}
...@@ -50,13 +50,10 @@ public class RequestDataController { ...@@ -50,13 +50,10 @@ public class RequestDataController {
Map<String, String> baseInfoMap = matterService.getBaseInfoMap(null); Map<String, String> baseInfoMap = matterService.getBaseInfoMap(null);
//保存为 //保存为
Setting setting = Setting.create(); Setting setting = Setting.create();
setting.putAll(baseInfoMap); setting.putAll(baseInfoMap);
setting.store("E://baseinfo.setting"); setting.store("E://baseinfo.setting");
Map<String, String> sqclInfoMap = matterService.getSqclInfoMap(null); Map<String, String> sqclInfoMap = matterService.getSqclInfoMap(null);
sqclInfoMap.entrySet().stream().peek(item -> { sqclInfoMap.entrySet().stream().peek(item -> {
String[] split = item.getValue().split(","); String[] split = item.getValue().split(",");
if (split.length > 1) { if (split.length > 1) {
......
package com.mortals.xhx.module.area.service; package com.mortals.xhx.module.area.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.service.ICRUDCacheService; import com.mortals.framework.service.ICRUDCacheService;
import java.util.List; import java.util.List;
...@@ -68,4 +69,11 @@ public interface AreaService extends ICRUDCacheService<AreaEntity,Long> { ...@@ -68,4 +69,11 @@ public interface AreaService extends ICRUDCacheService<AreaEntity,Long> {
* @param context * @param context
*/ */
void genSqlByRootName(String rootName, Context context); void genSqlByRootName(String rootName, Context context);
/**
* 清除区域所有数据
* @return
*/
Rest<String> removeAll();
} }
\ No newline at end of file
package com.mortals.xhx.module.area.service.impl; package com.mortals.xhx.module.area.service.impl;
import com.mortals.framework.common.Rest;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.xhx.module.area.model.AreaEntity; import com.mortals.xhx.module.area.model.AreaEntity;
import com.mortals.xhx.module.area.model.AreaQuery; import com.mortals.xhx.module.area.model.AreaQuery;
import com.mortals.xhx.module.area.model.AreaTreeSelect; import com.mortals.xhx.module.area.model.AreaTreeSelect;
import com.mortals.xhx.module.base.service.BaseAreaService;
import com.mortals.xhx.module.site.service.SiteService; import com.mortals.xhx.module.site.service.SiteService;
import org.checkerframework.checker.units.qual.A; import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -30,6 +32,8 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE ...@@ -30,6 +32,8 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE
@Autowired @Autowired
private SiteService siteService; private SiteService siteService;
@Autowired
private BaseAreaService baseAreaService;
/* @Override /* @Override
...@@ -247,9 +251,10 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE ...@@ -247,9 +251,10 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE
@Override @Override
public void genSqlByRootName(String rootName, Context context) { public void genSqlByRootName(String rootName, Context context) {
//查询定位根节点
AreaEntity areaEntity = this.selectOne(new AreaQuery().name(rootName)); AreaEntity areaEntity = this.selectOne(new AreaQuery().name(rootName));
//INSERT INTO `mortals_sys_area` VALUES (1, '', '四川省', '6182157d00ce41559e001a89d87f4057', '0', 'True', 'True', 'true', 'true', '510000000000', 1, '四川省', 'www.sczwfw.gov.cn', 1, '2021-07-19 11:28:28', NULL, '2022-03-17 13:39:30'); //INSERT INTO `mortals_sys_area` VALUES (1, '', '四川省', '6182157d00ce41559e001a89d87f4057', '0', 'True', 'True', 'true', 'true', '510000000000', 1, '四川省', 'www.sczwfw.gov.cn', 1, '2021-07-19 11:28:28', NULL, '2022-03-17 13:39:30');
StringBuilder sql = new StringBuilder(); /* StringBuilder sql = new StringBuilder();
if (!ObjectUtils.isEmpty(areaEntity)) { if (!ObjectUtils.isEmpty(areaEntity)) {
//生成当前节点下的sql //生成当前节点下的sql
List<AreaEntity> areaList = new ArrayList<>(); List<AreaEntity> areaList = new ArrayList<>();
...@@ -263,9 +268,24 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE ...@@ -263,9 +268,24 @@ public class AreaServiceImpl extends AbstractCRUDCacheServiceImpl<AreaDao, AreaE
}); });
log.info(sql.toString()); log.info(sql.toString());*/
if (!ObjectUtils.isEmpty(areaEntity)) {
List<AreaEntity> areaList = new ArrayList<>();
recursionFn(areaList, areaEntity);
} }
} }
@Override
public Rest<String> removeAll() {
HashMap condition = new HashMap();
condition.put("1",1);
int delete = this.dao.delete(condition);
//删除所有缓存数据
this.removeAllCache();
return Rest.ok("清除成功!");
}
} }
\ No newline at end of file
package com.mortals.xhx.module.base.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import java.util.List;
/**
* 区域Dao
* 区域 DAO接口
*
* @author zxfei
* @date 2022-11-22
*/
public interface BaseAreaDao extends ICRUDDao<BaseAreaEntity,Long>{
}
package com.mortals.xhx.module.base.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.base.dao.BaseAreaDao;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 区域DaoImpl DAO接口
*
* @author zxfei
* @date 2022-11-22
*/
@Repository("baseAreaDao")
public class BaseAreaDaoImpl extends BaseCRUDDaoMybatis<BaseAreaEntity,Long> implements BaseAreaDao {
}
package com.mortals.xhx.module.base.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.base.model.vo.BaseAreaVo;
/**
* 区域实体对象
*
* @author zxfei
* @date 2022-11-22
*/
public class BaseAreaEntity extends BaseAreaVo {
private static final long serialVersionUID = 1L;
/**
* 祖级列表,逗号分隔
*/
private String ancestors;
/**
* 区域名称
*/
private String name;
/**
* 一体化的ID号
*/
private String iid;
/**
* 一体化的父id
*/
private String pid;
/**
* 是否有下级区域(True.是,False.否)
*/
private String haveSonArea;
/**
* 是否有下级部门(True.是,False.否)
*/
private String haveSonDept;
/**
* 是否获取部门(true.是,false.否)
*/
private String haveGetDept;
/**
* 是否获取事项列表(true.是,false.否)
*/
private String haveGetMatterList;
/**
* 区域编码
*/
private String areaCode;
/**
* 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
*/
private Integer areaLevel;
/**
* 名称简称
*/
private String shortName;
/**
* 访问地址
*/
private String domain;
/**
* 区域状态 (0.停用,1.正常)
*/
private Integer status;
public BaseAreaEntity(){}
/**
* 获取 祖级列表,逗号分隔
* @return String
*/
public String getAncestors(){
return ancestors;
}
/**
* 设置 祖级列表,逗号分隔
* @param ancestors
*/
public void setAncestors(String ancestors){
this.ancestors = ancestors;
}
/**
* 获取 区域名称
* @return String
*/
public String getName(){
return name;
}
/**
* 设置 区域名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 一体化的ID号
* @return String
*/
public String getIid(){
return iid;
}
/**
* 设置 一体化的ID号
* @param iid
*/
public void setIid(String iid){
this.iid = iid;
}
/**
* 获取 一体化的父id
* @return String
*/
public String getPid(){
return pid;
}
/**
* 设置 一体化的父id
* @param pid
*/
public void setPid(String pid){
this.pid = pid;
}
/**
* 获取 是否有下级区域(True.是,False.否)
* @return String
*/
public String getHaveSonArea(){
return haveSonArea;
}
/**
* 设置 是否有下级区域(True.是,False.否)
* @param haveSonArea
*/
public void setHaveSonArea(String haveSonArea){
this.haveSonArea = haveSonArea;
}
/**
* 获取 是否有下级部门(True.是,False.否)
* @return String
*/
public String getHaveSonDept(){
return haveSonDept;
}
/**
* 设置 是否有下级部门(True.是,False.否)
* @param haveSonDept
*/
public void setHaveSonDept(String haveSonDept){
this.haveSonDept = haveSonDept;
}
/**
* 获取 是否获取部门(true.是,false.否)
* @return String
*/
public String getHaveGetDept(){
return haveGetDept;
}
/**
* 设置 是否获取部门(true.是,false.否)
* @param haveGetDept
*/
public void setHaveGetDept(String haveGetDept){
this.haveGetDept = haveGetDept;
}
/**
* 获取 是否获取事项列表(true.是,false.否)
* @return String
*/
public String getHaveGetMatterList(){
return haveGetMatterList;
}
/**
* 设置 是否获取事项列表(true.是,false.否)
* @param haveGetMatterList
*/
public void setHaveGetMatterList(String haveGetMatterList){
this.haveGetMatterList = haveGetMatterList;
}
/**
* 获取 区域编码
* @return String
*/
public String getAreaCode(){
return areaCode;
}
/**
* 设置 区域编码
* @param areaCode
*/
public void setAreaCode(String areaCode){
this.areaCode = areaCode;
}
/**
* 获取 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @return Integer
*/
public Integer getAreaLevel(){
return areaLevel;
}
/**
* 设置 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevel
*/
public void setAreaLevel(Integer areaLevel){
this.areaLevel = areaLevel;
}
/**
* 获取 名称简称
* @return String
*/
public String getShortName(){
return shortName;
}
/**
* 设置 名称简称
* @param shortName
*/
public void setShortName(String shortName){
this.shortName = shortName;
}
/**
* 获取 访问地址
* @return String
*/
public String getDomain(){
return domain;
}
/**
* 设置 访问地址
* @param domain
*/
public void setDomain(String domain){
this.domain = domain;
}
/**
* 获取 区域状态 (0.停用,1.正常)
* @return Integer
*/
public Integer getStatus(){
return status;
}
/**
* 设置 区域状态 (0.停用,1.正常)
* @param status
*/
public void setStatus(Integer status){
this.status = status;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof BaseAreaEntity) {
BaseAreaEntity tmp = (BaseAreaEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",ancestors:").append(getAncestors());
sb.append(",name:").append(getName());
sb.append(",iid:").append(getIid());
sb.append(",pid:").append(getPid());
sb.append(",haveSonArea:").append(getHaveSonArea());
sb.append(",haveSonDept:").append(getHaveSonDept());
sb.append(",haveGetDept:").append(getHaveGetDept());
sb.append(",haveGetMatterList:").append(getHaveGetMatterList());
sb.append(",areaCode:").append(getAreaCode());
sb.append(",areaLevel:").append(getAreaLevel());
sb.append(",shortName:").append(getShortName());
sb.append(",domain:").append(getDomain());
sb.append(",status:").append(getStatus());
return sb.toString();
}
public void initAttrValue(){
this.ancestors = "";
this.name = null;
this.iid = null;
this.pid = null;
this.haveSonArea = null;
this.haveSonDept = null;
this.haveGetDept = null;
this.haveGetMatterList = null;
this.areaCode = null;
this.areaLevel = 1;
this.shortName = null;
this.domain = null;
this.status = 1;
}
}
\ No newline at end of file
package com.mortals.xhx.module.base.model;
import java.util.List;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
/**
* 区域查询对象
*
* @author zxfei
* @date 2022-11-22
*/
public class BaseAreaQuery extends BaseAreaEntity {
/** 开始 序号,主键,自增长 */
private Long idStart;
/** 结束 序号,主键,自增长 */
private Long idEnd;
/** 增加 序号,主键,自增长 */
private Long idIncrement;
/** 序号,主键,自增长列表 */
private List <Long> idList;
/** 祖级列表,逗号分隔 */
private List<String> ancestorsList;
/** 区域名称 */
private List<String> nameList;
/** 一体化的ID号 */
private List<String> iidList;
/** 一体化的父id */
private List<String> pidList;
/** 是否有下级区域(True.是,False.否) */
private List<String> haveSonAreaList;
/** 是否有下级部门(True.是,False.否) */
private List<String> haveSonDeptList;
/** 是否获取部门(true.是,false.否) */
private List<String> haveGetDeptList;
/** 是否获取事项列表(true.是,false.否) */
private List<String> haveGetMatterListList;
/** 区域编码 */
private List<String> areaCodeList;
/** 开始 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区) */
private Integer areaLevelStart;
/** 结束 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区) */
private Integer areaLevelEnd;
/** 增加 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区) */
private Integer areaLevelIncrement;
/** 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)列表 */
private List <Integer> areaLevelList;
/** 名称简称 */
private List<String> shortNameList;
/** 访问地址 */
private List<String> domainList;
/** 开始 区域状态 (0.停用,1.正常) */
private Integer statusStart;
/** 结束 区域状态 (0.停用,1.正常) */
private Integer statusEnd;
/** 增加 区域状态 (0.停用,1.正常) */
private Integer statusIncrement;
/** 区域状态 (0.停用,1.正常)列表 */
private List <Integer> statusList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 开始 修改时间 */
private String updateTimeStart;
/** 结束 修改时间 */
private String updateTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<BaseAreaQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<BaseAreaQuery> andConditionList;
public BaseAreaQuery(){}
/**
* 获取 开始 序号,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 序号,主键,自增长
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 序号,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 序号,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 祖级列表,逗号分隔
* @return ancestorsList
*/
public List<String> getAncestorsList(){
return this.ancestorsList;
}
/**
* 设置 祖级列表,逗号分隔
* @param ancestorsList
*/
public void setAncestorsList(List<String> ancestorsList){
this.ancestorsList = ancestorsList;
}
/**
* 获取 区域名称
* @return nameList
*/
public List<String> getNameList(){
return this.nameList;
}
/**
* 设置 区域名称
* @param nameList
*/
public void setNameList(List<String> nameList){
this.nameList = nameList;
}
/**
* 获取 一体化的ID号
* @return iidList
*/
public List<String> getIidList(){
return this.iidList;
}
/**
* 设置 一体化的ID号
* @param iidList
*/
public void setIidList(List<String> iidList){
this.iidList = iidList;
}
/**
* 获取 一体化的父id
* @return pidList
*/
public List<String> getPidList(){
return this.pidList;
}
/**
* 设置 一体化的父id
* @param pidList
*/
public void setPidList(List<String> pidList){
this.pidList = pidList;
}
/**
* 获取 是否有下级区域(True.是,False.否)
* @return haveSonAreaList
*/
public List<String> getHaveSonAreaList(){
return this.haveSonAreaList;
}
/**
* 设置 是否有下级区域(True.是,False.否)
* @param haveSonAreaList
*/
public void setHaveSonAreaList(List<String> haveSonAreaList){
this.haveSonAreaList = haveSonAreaList;
}
/**
* 获取 是否有下级部门(True.是,False.否)
* @return haveSonDeptList
*/
public List<String> getHaveSonDeptList(){
return this.haveSonDeptList;
}
/**
* 设置 是否有下级部门(True.是,False.否)
* @param haveSonDeptList
*/
public void setHaveSonDeptList(List<String> haveSonDeptList){
this.haveSonDeptList = haveSonDeptList;
}
/**
* 获取 是否获取部门(true.是,false.否)
* @return haveGetDeptList
*/
public List<String> getHaveGetDeptList(){
return this.haveGetDeptList;
}
/**
* 设置 是否获取部门(true.是,false.否)
* @param haveGetDeptList
*/
public void setHaveGetDeptList(List<String> haveGetDeptList){
this.haveGetDeptList = haveGetDeptList;
}
/**
* 获取 是否获取事项列表(true.是,false.否)
* @return haveGetMatterListList
*/
public List<String> getHaveGetMatterListList(){
return this.haveGetMatterListList;
}
/**
* 设置 是否获取事项列表(true.是,false.否)
* @param haveGetMatterListList
*/
public void setHaveGetMatterListList(List<String> haveGetMatterListList){
this.haveGetMatterListList = haveGetMatterListList;
}
/**
* 获取 区域编码
* @return areaCodeList
*/
public List<String> getAreaCodeList(){
return this.areaCodeList;
}
/**
* 设置 区域编码
* @param areaCodeList
*/
public void setAreaCodeList(List<String> areaCodeList){
this.areaCodeList = areaCodeList;
}
/**
* 获取 开始 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @return areaLevelStart
*/
public Integer getAreaLevelStart(){
return this.areaLevelStart;
}
/**
* 设置 开始 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelStart
*/
public void setAreaLevelStart(Integer areaLevelStart){
this.areaLevelStart = areaLevelStart;
}
/**
* 获取 结束 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @return $areaLevelEnd
*/
public Integer getAreaLevelEnd(){
return this.areaLevelEnd;
}
/**
* 设置 结束 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelEnd
*/
public void setAreaLevelEnd(Integer areaLevelEnd){
this.areaLevelEnd = areaLevelEnd;
}
/**
* 获取 增加 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @return areaLevelIncrement
*/
public Integer getAreaLevelIncrement(){
return this.areaLevelIncrement;
}
/**
* 设置 增加 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelIncrement
*/
public void setAreaLevelIncrement(Integer areaLevelIncrement){
this.areaLevelIncrement = areaLevelIncrement;
}
/**
* 获取 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @return areaLevelList
*/
public List<Integer> getAreaLevelList(){
return this.areaLevelList;
}
/**
* 设置 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelList
*/
public void setAreaLevelList(List<Integer> areaLevelList){
this.areaLevelList = areaLevelList;
}
/**
* 获取 名称简称
* @return shortNameList
*/
public List<String> getShortNameList(){
return this.shortNameList;
}
/**
* 设置 名称简称
* @param shortNameList
*/
public void setShortNameList(List<String> shortNameList){
this.shortNameList = shortNameList;
}
/**
* 获取 访问地址
* @return domainList
*/
public List<String> getDomainList(){
return this.domainList;
}
/**
* 设置 访问地址
* @param domainList
*/
public void setDomainList(List<String> domainList){
this.domainList = domainList;
}
/**
* 获取 开始 区域状态 (0.停用,1.正常)
* @return statusStart
*/
public Integer getStatusStart(){
return this.statusStart;
}
/**
* 设置 开始 区域状态 (0.停用,1.正常)
* @param statusStart
*/
public void setStatusStart(Integer statusStart){
this.statusStart = statusStart;
}
/**
* 获取 结束 区域状态 (0.停用,1.正常)
* @return $statusEnd
*/
public Integer getStatusEnd(){
return this.statusEnd;
}
/**
* 设置 结束 区域状态 (0.停用,1.正常)
* @param statusEnd
*/
public void setStatusEnd(Integer statusEnd){
this.statusEnd = statusEnd;
}
/**
* 获取 增加 区域状态 (0.停用,1.正常)
* @return statusIncrement
*/
public Integer getStatusIncrement(){
return this.statusIncrement;
}
/**
* 设置 增加 区域状态 (0.停用,1.正常)
* @param statusIncrement
*/
public void setStatusIncrement(Integer statusIncrement){
this.statusIncrement = statusIncrement;
}
/**
* 获取 区域状态 (0.停用,1.正常)
* @return statusList
*/
public List<Integer> getStatusList(){
return this.statusList;
}
/**
* 设置 区域状态 (0.停用,1.正常)
* @param statusList
*/
public void setStatusList(List<Integer> statusList){
this.statusList = statusList;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束 创建时间
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取 开始 创建用户
* @return createUserIdStart
*/
public Long getCreateUserIdStart(){
return this.createUserIdStart;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public void setCreateUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
}
/**
* 获取 结束 创建用户
* @return $createUserIdEnd
*/
public Long getCreateUserIdEnd(){
return this.createUserIdEnd;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public void setCreateUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
}
/**
* 获取 增加 创建用户
* @return createUserIdIncrement
*/
public Long getCreateUserIdIncrement(){
return this.createUserIdIncrement;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public void setCreateUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
}
/**
* 获取 创建用户
* @return createUserIdList
*/
public List<Long> getCreateUserIdList(){
return this.createUserIdList;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
}
/**
* 获取 开始 修改时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 修改时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 修改时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 修改时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 设置 序号,主键,自增长
* @param id
*/
public BaseAreaQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public BaseAreaQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public BaseAreaQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public BaseAreaQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public BaseAreaQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 祖级列表,逗号分隔
* @param ancestors
*/
public BaseAreaQuery ancestors(String ancestors){
setAncestors(ancestors);
return this;
}
/**
* 设置 祖级列表,逗号分隔
* @param ancestorsList
*/
public BaseAreaQuery ancestorsList(List<String> ancestorsList){
this.ancestorsList = ancestorsList;
return this;
}
/**
* 设置 区域名称
* @param name
*/
public BaseAreaQuery name(String name){
setName(name);
return this;
}
/**
* 设置 区域名称
* @param nameList
*/
public BaseAreaQuery nameList(List<String> nameList){
this.nameList = nameList;
return this;
}
/**
* 设置 一体化的ID号
* @param iid
*/
public BaseAreaQuery iid(String iid){
setIid(iid);
return this;
}
/**
* 设置 一体化的ID号
* @param iidList
*/
public BaseAreaQuery iidList(List<String> iidList){
this.iidList = iidList;
return this;
}
/**
* 设置 一体化的父id
* @param pid
*/
public BaseAreaQuery pid(String pid){
setPid(pid);
return this;
}
/**
* 设置 一体化的父id
* @param pidList
*/
public BaseAreaQuery pidList(List<String> pidList){
this.pidList = pidList;
return this;
}
/**
* 设置 是否有下级区域(True.是,False.否)
* @param haveSonArea
*/
public BaseAreaQuery haveSonArea(String haveSonArea){
setHaveSonArea(haveSonArea);
return this;
}
/**
* 设置 是否有下级区域(True.是,False.否)
* @param haveSonAreaList
*/
public BaseAreaQuery haveSonAreaList(List<String> haveSonAreaList){
this.haveSonAreaList = haveSonAreaList;
return this;
}
/**
* 设置 是否有下级部门(True.是,False.否)
* @param haveSonDept
*/
public BaseAreaQuery haveSonDept(String haveSonDept){
setHaveSonDept(haveSonDept);
return this;
}
/**
* 设置 是否有下级部门(True.是,False.否)
* @param haveSonDeptList
*/
public BaseAreaQuery haveSonDeptList(List<String> haveSonDeptList){
this.haveSonDeptList = haveSonDeptList;
return this;
}
/**
* 设置 是否获取部门(true.是,false.否)
* @param haveGetDept
*/
public BaseAreaQuery haveGetDept(String haveGetDept){
setHaveGetDept(haveGetDept);
return this;
}
/**
* 设置 是否获取部门(true.是,false.否)
* @param haveGetDeptList
*/
public BaseAreaQuery haveGetDeptList(List<String> haveGetDeptList){
this.haveGetDeptList = haveGetDeptList;
return this;
}
/**
* 设置 是否获取事项列表(true.是,false.否)
* @param haveGetMatterList
*/
public BaseAreaQuery haveGetMatterList(String haveGetMatterList){
setHaveGetMatterList(haveGetMatterList);
return this;
}
/**
* 设置 是否获取事项列表(true.是,false.否)
* @param haveGetMatterListList
*/
public BaseAreaQuery haveGetMatterListList(List<String> haveGetMatterListList){
this.haveGetMatterListList = haveGetMatterListList;
return this;
}
/**
* 设置 区域编码
* @param areaCode
*/
public BaseAreaQuery areaCode(String areaCode){
setAreaCode(areaCode);
return this;
}
/**
* 设置 区域编码
* @param areaCodeList
*/
public BaseAreaQuery areaCodeList(List<String> areaCodeList){
this.areaCodeList = areaCodeList;
return this;
}
/**
* 设置 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevel
*/
public BaseAreaQuery areaLevel(Integer areaLevel){
setAreaLevel(areaLevel);
return this;
}
/**
* 设置 开始 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelStart
*/
public BaseAreaQuery areaLevelStart(Integer areaLevelStart){
this.areaLevelStart = areaLevelStart;
return this;
}
/**
* 设置 结束 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelEnd
*/
public BaseAreaQuery areaLevelEnd(Integer areaLevelEnd){
this.areaLevelEnd = areaLevelEnd;
return this;
}
/**
* 设置 增加 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelIncrement
*/
public BaseAreaQuery areaLevelIncrement(Integer areaLevelIncrement){
this.areaLevelIncrement = areaLevelIncrement;
return this;
}
/**
* 设置 区域等级(1.省,2.地市州,3.区县,4.街道,5.社区)
* @param areaLevelList
*/
public BaseAreaQuery areaLevelList(List<Integer> areaLevelList){
this.areaLevelList = areaLevelList;
return this;
}
/**
* 设置 名称简称
* @param shortName
*/
public BaseAreaQuery shortName(String shortName){
setShortName(shortName);
return this;
}
/**
* 设置 名称简称
* @param shortNameList
*/
public BaseAreaQuery shortNameList(List<String> shortNameList){
this.shortNameList = shortNameList;
return this;
}
/**
* 设置 访问地址
* @param domain
*/
public BaseAreaQuery domain(String domain){
setDomain(domain);
return this;
}
/**
* 设置 访问地址
* @param domainList
*/
public BaseAreaQuery domainList(List<String> domainList){
this.domainList = domainList;
return this;
}
/**
* 设置 区域状态 (0.停用,1.正常)
* @param status
*/
public BaseAreaQuery status(Integer status){
setStatus(status);
return this;
}
/**
* 设置 开始 区域状态 (0.停用,1.正常)
* @param statusStart
*/
public BaseAreaQuery statusStart(Integer statusStart){
this.statusStart = statusStart;
return this;
}
/**
* 设置 结束 区域状态 (0.停用,1.正常)
* @param statusEnd
*/
public BaseAreaQuery statusEnd(Integer statusEnd){
this.statusEnd = statusEnd;
return this;
}
/**
* 设置 增加 区域状态 (0.停用,1.正常)
* @param statusIncrement
*/
public BaseAreaQuery statusIncrement(Integer statusIncrement){
this.statusIncrement = statusIncrement;
return this;
}
/**
* 设置 区域状态 (0.停用,1.正常)
* @param statusList
*/
public BaseAreaQuery statusList(List<Integer> statusList){
this.statusList = statusList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public BaseAreaQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public BaseAreaQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public BaseAreaQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public BaseAreaQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public BaseAreaQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<BaseAreaQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<BaseAreaQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<BaseAreaQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<BaseAreaQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.base.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.area.model.AreaEntity;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 区域视图对象
*
* @author zxfei
* @date 2022-11-22
*/
@Data
public class BaseAreaVo extends BaseEntityLong {
private List<BaseAreaEntity> children = new ArrayList<>();
}
\ No newline at end of file
package com.mortals.xhx.module.base.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
/**
* BaseAreaService
*
* 区域 service接口
*
* @author zxfei
* @date 2022-11-22
*/
public interface BaseAreaService extends ICRUDService<BaseAreaEntity,Long>{
/**
* 根据顶点名称生成子节点
* @param baseAreaEntity
* @param context
*/
Rest<String> genSubAreaByRootName(BaseAreaEntity baseAreaEntity, Context context);
}
\ No newline at end of file
package com.mortals.xhx.module.base.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.area.model.AreaEntity;
import com.mortals.xhx.module.area.model.AreaQuery;
import com.mortals.xhx.module.area.service.AreaService;
import com.mortals.xhx.module.base.model.BaseAreaQuery;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.model.SiteQuery;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.base.dao.BaseAreaDao;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import com.mortals.xhx.module.base.service.BaseAreaService;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* BaseAreaService
* 区域 service实现
*
* @author zxfei
* @date 2022-11-22
*/
@Service("baseAreaService")
public class BaseAreaServiceImpl extends AbstractCRUDServiceImpl<BaseAreaDao, BaseAreaEntity, Long> implements BaseAreaService {
@Autowired
private AreaService areaService;
@Override
public Rest<String> genSubAreaByRootName(BaseAreaEntity baseAreaEntity, Context context) {
String areaCode = baseAreaEntity.getAreaCode();
String matchCode = areaCode.replaceAll("(0)+$", "");
BaseAreaQuery baseAreaQuery = new BaseAreaQuery();
baseAreaQuery.setAreaCode(matchCode + "%");
List<BaseAreaEntity> baseAreaEntityList =this.find(baseAreaQuery);
//清除子区域数据
Rest<String> rest = areaService.removeAll();
List<AreaEntity> collect = baseAreaEntityList.stream().map(item -> {
AreaEntity areaEntity = new AreaEntity();
areaEntity.initAttrValue();
BeanUtils.copyProperties(item, areaEntity,BeanUtil.getNullPropertyNames(item));
if(item.getAreaCode().equalsIgnoreCase(areaCode)){
areaEntity.setPid("0");
}
return areaEntity;
}).collect(Collectors.toList());
log.info("更新数据条数:"+collect.size());
List<List<AreaEntity>> partition = ListUtil.partition(collect, 100);
for (List<AreaEntity> areaEntities : partition) {
areaService.save(areaEntities, context);
}
areaService.loadCache();
return Rest.ok("初始化区域数据成功!");
}
/**
* 递归列表
*/
private void recursionFn(List<BaseAreaEntity> list, BaseAreaEntity t) {
// 得到子节点列表
List<BaseAreaEntity> childList = getChildList(list, t);
t.setChildren(childList);
for (BaseAreaEntity tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
* 得到子节点列表
*/
private List<BaseAreaEntity> getChildList(List<BaseAreaEntity> list, BaseAreaEntity t) {
return list.stream().map(item -> {
if (!ObjectUtils.isEmpty(item.getPid()) && item.getPid() == t.getIid()) {
return item;
}
return null;
}).filter(f -> f != null).collect(Collectors.toList());
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<BaseAreaEntity> list, BaseAreaEntity t) {
return getChildList(list, t).size() > 0 ? true : false;
}
}
\ No newline at end of file
package com.mortals.xhx.module.base.web;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.ThreadPool;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.keys.RedisCacheKeys;
import com.mortals.xhx.common.utils.SyncGovMatterDetailThread;
import com.mortals.xhx.common.utils.SyncSubAreaThread;
import com.mortals.xhx.module.base.model.BaseAreaQuery;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.model.SiteQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.base.model.BaseAreaEntity;
import com.mortals.xhx.module.base.service.BaseAreaService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
* 区域
*
* @author zxfei
* @date 2022-11-22
*/
@RestController
@RequestMapping("base/area")
public class BaseAreaController extends BaseCRUDJsonBodyMappingController<BaseAreaService, BaseAreaEntity, Long> {
@Autowired
private ParamService paramService;
@Autowired
private ICacheService cacheService;
public BaseAreaController() {
super.setModuleDesc("区域");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "haveSonArea", paramService.getParamBySecondOrganize("BaseArea", "haveSonArea"));
this.addDict(model, "haveSonDept", paramService.getParamBySecondOrganize("BaseArea", "haveSonDept"));
this.addDict(model, "haveGetDept", paramService.getParamBySecondOrganize("BaseArea", "haveGetDept"));
this.addDict(model, "haveGetMatterList", paramService.getParamBySecondOrganize("BaseArea", "haveGetMatterList"));
this.addDict(model, "areaLevel", paramService.getParamBySecondOrganize("BaseArea", "areaLevel"));
this.addDict(model, "status", paramService.getParamBySecondOrganize("BaseArea", "status"));
super.init(model, context);
}
/**
* 同步站点事项数据
*/
@PostMapping(value = "genSubAreaByAreaName")
@UnAuth
public String genSubAreaByAreaName(@RequestBody BaseAreaQuery areaQuery) {
JSONObject jsonObject = new JSONObject();
String busiDesc = "同步子区域数据" + this.getModuleDesc();
try {
if (ObjectUtils.isEmpty(areaQuery.getName()) && ObjectUtils.isEmpty(areaQuery.getAreaCode())) {
throw new AppException("当前初始区域编码或名称为空!");
}
//编码优先
BaseAreaEntity baseAreaEntity = null;
if (!ObjectUtils.isEmpty(areaQuery.getAreaCode())) {
baseAreaEntity = this.service.selectOne(new BaseAreaQuery().areaCode(areaQuery.getAreaCode()));
} else if (!ObjectUtils.isEmpty(areaQuery.getName())) {
baseAreaEntity = this.service.selectOne(new BaseAreaQuery().name(areaQuery.getName()));
}
if (ObjectUtils.isEmpty(baseAreaEntity)) {
throw new AppException(String.format("区域数据未找到,区域名称:%s,区域编码:%s", areaQuery.getName(),areaQuery.getAreaCode()));
}
boolean bool = cacheService.setnx(RedisCacheKeys.getSyncAreaLockKey() + areaQuery.getName(), areaQuery.getName(), 60L);
if (!bool) {
throw new AppException("当前正在同步区域数据中,请勿重复提交!");
}
ThreadPool.getInstance().execute(new SyncSubAreaThread(this.service, baseAreaEntity, getContext()));
recordSysLog(request, busiDesc + " 【成功】");
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonObject.put(KEY_RESULT_MSG, "初始同步区域数据命令下发成功!");
} catch (Exception e) {
log.error("获取异常", e);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
}
return jsonObject.toJSONString();
}
}
\ No newline at end of file
...@@ -278,7 +278,7 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic ...@@ -278,7 +278,7 @@ public class SiteController extends BaseCRUDJsonBodyMappingController<SiteServic
if(ObjectUtils.isEmpty(siteEntity)){ if(ObjectUtils.isEmpty(siteEntity)){
throw new AppException("当前站点为空!"); throw new AppException("当前站点为空!");
} }
boolean bool = cacheService.setnx(RedisCacheKeys.getFlowDistributedLockKey() + siteEntity.getAreaCode(), siteEntity.getAreaCode(), 60L); boolean bool = cacheService.setnx(RedisCacheKeys.getSyncMatterLockKey() + siteEntity.getAreaCode(), siteEntity.getAreaCode(), 60L);
if (!bool) { if (!bool) {
throw new AppException("当前正在同步事项数据中,请勿重复提交!"); throw new AppException("当前正在同步事项数据中,请勿重复提交!");
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<setting name="useGeneratedKeys" value="false" /> <setting name="useGeneratedKeys" value="false" />
<setting name="defaultExecutorType" value="REUSE" /> <setting name="defaultExecutorType" value="REUSE" />
<!-- 是否开始sql日志控制台打印 --> <!-- 是否开始sql日志控制台打印 -->
<!-- <setting name="logImpl" value="STDOUT_LOGGING" />--> <!-- <setting name="logImpl" value="STDOUT_LOGGING" />-->
</settings> </settings>
<plugins> <plugins>
<plugin interceptor="com.mortals.framework.thirty.mybatis.MortalsPagePlugin"> <plugin interceptor="com.mortals.framework.thirty.mybatis.MortalsPagePlugin">
......
...@@ -62,4 +62,15 @@ ...@@ -62,4 +62,15 @@
<appender-ref ref="fileError"/> <appender-ref ref="fileError"/>
</logger> </logger>
<logger name="com.mortals.xhx.module" level="debug" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="fileInfo"/>
<appender-ref ref="fileError"/>
</logger>
<!-- <logger name="com.mortals.xhx.module">
<level value="debug"/>
</logger>-->
</configuration> </configuration>
\ No newline at end of file
...@@ -83,20 +83,20 @@ ...@@ -83,20 +83,20 @@
</trim> </trim>
</sql> </sql>
<!-- 新增 区分主键自增加还是业务插入 --> <!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AreaEntity" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="AreaEntity" >
insert into mortals_sys_area insert into mortals_sys_area
(ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime) (id,ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime)
VALUES VALUES
(#{ancestors},#{name},#{iid},#{pid},#{haveSonArea},#{haveSonDept},#{haveGetDept},#{haveGetMatterList},#{areaCode},#{areaLevel},#{shortName},#{domain},#{status},#{createTime},#{createUserId},#{updateTime}) (#{id},#{ancestors},#{name},#{iid},#{pid},#{haveSonArea},#{haveSonDept},#{haveGetDept},#{haveGetMatterList},#{areaCode},#{areaLevel},#{shortName},#{domain},#{status},#{createTime},#{createUserId},#{updateTime})
</insert> </insert>
<!-- 批量新增 --> <!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto"> <insert id="insertBatch" parameterType="paramDto">
insert into mortals_sys_area insert into mortals_sys_area
(ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime) (id,ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime)
VALUES VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," > <foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.ancestors},#{item.name},#{item.iid},#{item.pid},#{item.haveSonArea},#{item.haveSonDept},#{item.haveGetDept},#{item.haveGetMatterList},#{item.areaCode},#{item.areaLevel},#{item.shortName},#{item.domain},#{item.status},#{item.createTime},#{item.createUserId},#{item.updateTime}) (#{item.id},#{item.ancestors},#{item.name},#{item.iid},#{item.pid},#{item.haveSonArea},#{item.haveSonDept},#{item.haveGetDept},#{item.haveGetMatterList},#{item.areaCode},#{item.areaLevel},#{item.shortName},#{item.domain},#{item.status},#{item.createTime},#{item.createUserId},#{item.updateTime})
</foreach> </foreach>
</insert> </insert>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.base.dao.ibatis.BaseAreaDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="BaseAreaEntity" id="BaseAreaEntity-Map">
<id property="id" column="id" />
<result property="ancestors" column="ancestors" />
<result property="name" column="name" />
<result property="iid" column="iid" />
<result property="pid" column="pid" />
<result property="haveSonArea" column="haveSonArea" />
<result property="haveSonDept" column="haveSonDept" />
<result property="haveGetDept" column="haveGetDept" />
<result property="haveGetMatterList" column="haveGetMatterList" />
<result property="areaCode" column="areaCode" />
<result property="areaLevel" column="areaLevel" />
<result property="shortName" column="shortName" />
<result property="domain" column="domain" />
<result property="status" column="status" />
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('ancestors') or colPickMode == 1 and data.containsKey('ancestors')))">
a.ancestors,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('name') or colPickMode == 1 and data.containsKey('name')))">
a.name,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('iid') or colPickMode == 1 and data.containsKey('iid')))">
a.iid,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('pid') or colPickMode == 1 and data.containsKey('pid')))">
a.pid,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('haveSonArea') or colPickMode == 1 and data.containsKey('haveSonArea')))">
a.haveSonArea,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('haveSonDept') or colPickMode == 1 and data.containsKey('haveSonDept')))">
a.haveSonDept,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('haveGetDept') or colPickMode == 1 and data.containsKey('haveGetDept')))">
a.haveGetDept,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('haveGetMatterList') or colPickMode == 1 and data.containsKey('haveGetMatterList')))">
a.haveGetMatterList,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('areaCode') or colPickMode == 1 and data.containsKey('areaCode')))">
a.areaCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('areaLevel') or colPickMode == 1 and data.containsKey('areaLevel')))">
a.areaLevel,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('shortName') or colPickMode == 1 and data.containsKey('shortName')))">
a.shortName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('domain') or colPickMode == 1 and data.containsKey('domain')))">
a.domain,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('status') or colPickMode == 1 and data.containsKey('status')))">
a.status,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="BaseAreaEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_sys_base_area
(ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime)
VALUES
(#{ancestors},#{name},#{iid},#{pid},#{haveSonArea},#{haveSonDept},#{haveGetDept},#{haveGetMatterList},#{areaCode},#{areaLevel},#{shortName},#{domain},#{status},#{createTime},#{createUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_sys_base_area
(ancestors,name,iid,pid,haveSonArea,haveSonDept,haveGetDept,haveGetMatterList,areaCode,areaLevel,shortName,domain,status,createTime,createUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.ancestors},#{item.name},#{item.iid},#{item.pid},#{item.haveSonArea},#{item.haveSonDept},#{item.haveGetDept},#{item.haveGetMatterList},#{item.areaCode},#{item.areaLevel},#{item.shortName},#{item.domain},#{item.status},#{item.createTime},#{item.createUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_sys_base_area as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('ancestors')) or (colPickMode==1 and !data.containsKey('ancestors'))">
a.ancestors=#{data.ancestors},
</if>
<if test="(colPickMode==0 and data.containsKey('name')) or (colPickMode==1 and !data.containsKey('name'))">
a.name=#{data.name},
</if>
<if test="(colPickMode==0 and data.containsKey('iid')) or (colPickMode==1 and !data.containsKey('iid'))">
a.iid=#{data.iid},
</if>
<if test="(colPickMode==0 and data.containsKey('pid')) or (colPickMode==1 and !data.containsKey('pid'))">
a.pid=#{data.pid},
</if>
<if test="(colPickMode==0 and data.containsKey('haveSonArea')) or (colPickMode==1 and !data.containsKey('haveSonArea'))">
a.haveSonArea=#{data.haveSonArea},
</if>
<if test="(colPickMode==0 and data.containsKey('haveSonDept')) or (colPickMode==1 and !data.containsKey('haveSonDept'))">
a.haveSonDept=#{data.haveSonDept},
</if>
<if test="(colPickMode==0 and data.containsKey('haveGetDept')) or (colPickMode==1 and !data.containsKey('haveGetDept'))">
a.haveGetDept=#{data.haveGetDept},
</if>
<if test="(colPickMode==0 and data.containsKey('haveGetMatterList')) or (colPickMode==1 and !data.containsKey('haveGetMatterList'))">
a.haveGetMatterList=#{data.haveGetMatterList},
</if>
<if test="(colPickMode==0 and data.containsKey('areaCode')) or (colPickMode==1 and !data.containsKey('areaCode'))">
a.areaCode=#{data.areaCode},
</if>
<if test="(colPickMode==0 and data.containsKey('areaLevel')) or (colPickMode==1 and !data.containsKey('areaLevel'))">
a.areaLevel=#{data.areaLevel},
</if>
<if test="(colPickMode==0 and data.containsKey('areaLevelIncrement')) or (colPickMode==1 and !data.containsKey('areaLevelIncrement'))">
a.areaLevel=ifnull(a.areaLevel,0) + #{data.areaLevelIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('shortName')) or (colPickMode==1 and !data.containsKey('shortName'))">
a.shortName=#{data.shortName},
</if>
<if test="(colPickMode==0 and data.containsKey('domain')) or (colPickMode==1 and !data.containsKey('domain'))">
a.domain=#{data.domain},
</if>
<if test="(colPickMode==0 and data.containsKey('status')) or (colPickMode==1 and !data.containsKey('status'))">
a.status=#{data.status},
</if>
<if test="(colPickMode==0 and data.containsKey('statusIncrement')) or (colPickMode==1 and !data.containsKey('statusIncrement'))">
a.status=ifnull(a.status,0) + #{data.statusIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.createUserId=#{data.createUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
a.createUserId=ifnull(a.createUserId,0) + #{data.createUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_sys_base_area as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="ancestors=(case" suffix="ELSE ancestors end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('ancestors')) or (colPickMode==1 and !item.containsKey('ancestors'))">
when a.id=#{item.id} then #{item.ancestors}
</if>
</foreach>
</trim>
<trim prefix="name=(case" suffix="ELSE name end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('name')) or (colPickMode==1 and !item.containsKey('name'))">
when a.id=#{item.id} then #{item.name}
</if>
</foreach>
</trim>
<trim prefix="iid=(case" suffix="ELSE iid end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('iid')) or (colPickMode==1 and !item.containsKey('iid'))">
when a.id=#{item.id} then #{item.iid}
</if>
</foreach>
</trim>
<trim prefix="pid=(case" suffix="ELSE pid end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('pid')) or (colPickMode==1 and !item.containsKey('pid'))">
when a.id=#{item.id} then #{item.pid}
</if>
</foreach>
</trim>
<trim prefix="haveSonArea=(case" suffix="ELSE haveSonArea end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('haveSonArea')) or (colPickMode==1 and !item.containsKey('haveSonArea'))">
when a.id=#{item.id} then #{item.haveSonArea}
</if>
</foreach>
</trim>
<trim prefix="haveSonDept=(case" suffix="ELSE haveSonDept end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('haveSonDept')) or (colPickMode==1 and !item.containsKey('haveSonDept'))">
when a.id=#{item.id} then #{item.haveSonDept}
</if>
</foreach>
</trim>
<trim prefix="haveGetDept=(case" suffix="ELSE haveGetDept end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('haveGetDept')) or (colPickMode==1 and !item.containsKey('haveGetDept'))">
when a.id=#{item.id} then #{item.haveGetDept}
</if>
</foreach>
</trim>
<trim prefix="haveGetMatterList=(case" suffix="ELSE haveGetMatterList end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('haveGetMatterList')) or (colPickMode==1 and !item.containsKey('haveGetMatterList'))">
when a.id=#{item.id} then #{item.haveGetMatterList}
</if>
</foreach>
</trim>
<trim prefix="areaCode=(case" suffix="ELSE areaCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('areaCode')) or (colPickMode==1 and !item.containsKey('areaCode'))">
when a.id=#{item.id} then #{item.areaCode}
</if>
</foreach>
</trim>
<trim prefix="areaLevel=(case" suffix="ELSE areaLevel end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('areaLevel')) or (colPickMode==1 and !item.containsKey('areaLevel'))">
when a.id=#{item.id} then #{item.areaLevel}
</when>
<when test="(colPickMode==0 and item.containsKey('areaLevelIncrement')) or (colPickMode==1 and !item.containsKey('areaLevelIncrement'))">
when a.id=#{item.id} then ifnull(a.areaLevel,0) + #{item.areaLevelIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="shortName=(case" suffix="ELSE shortName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('shortName')) or (colPickMode==1 and !item.containsKey('shortName'))">
when a.id=#{item.id} then #{item.shortName}
</if>
</foreach>
</trim>
<trim prefix="domain=(case" suffix="ELSE domain end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('domain')) or (colPickMode==1 and !item.containsKey('domain'))">
when a.id=#{item.id} then #{item.domain}
</if>
</foreach>
</trim>
<trim prefix="status=(case" suffix="ELSE status end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('status')) or (colPickMode==1 and !item.containsKey('status'))">
when a.id=#{item.id} then #{item.status}
</when>
<when test="(colPickMode==0 and item.containsKey('statusIncrement')) or (colPickMode==1 and !item.containsKey('statusIncrement'))">
when a.id=#{item.id} then ifnull(a.status,0) + #{item.statusIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
when a.id=#{item.id} then #{item.createTime}
</if>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
when a.id=#{item.id} then #{item.createUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
when a.id=#{item.id} then #{item.updateTime}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="BaseAreaEntity-Map">
select <include refid="_columns"/>
from mortals_sys_base_area as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_sys_base_area as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_sys_base_area where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据主健列表删除一批,针对单一主健有效 -->
<delete id="deleteByKeyList">
delete from mortals_sys_base_area where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据对象列表删除一批,针对单一主健有效 -->
<delete id="deleteByEntityList">
delete from mortals_sys_base_area where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_sys_base_area as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="BaseAreaEntity-Map">
select <include refid="_columns"/>
from mortals_sys_base_area as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_sys_base_area as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</select>
<!-- 条件映射 -->
<sql id="_condition_">
<if test="condition != null and !condition.isEmpty()">
<!-- 条件映射-普通条件 -->
<include refid="_condition_param_">
<property name="_conditionParam_" value="condition"/>
<property name="_conditionType_" value="and"/>
</include>
<!-- 条件映射-集合之间使用AND,集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
<if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
and
<foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
<trim prefixOverrides="or" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="andCondition"/>
<property name="_conditionType_" value="or"/>
</include>
</trim>
</foreach>
</if>
<!-- 条件映射-集合之间使用OR,集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
<if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
and
<foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
<trim prefixOverrides="and" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="orCondition"/>
<property name="_conditionType_" value="and"/>
</include>
</trim>
</foreach>
</if>
</if>
</sql>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList')">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('ancestors')">
<if test="conditionParamRef.ancestors != null and conditionParamRef.ancestors != ''">
${_conditionType_} a.ancestors like #{${_conditionParam_}.ancestors}
</if>
<if test="conditionParamRef.ancestors == null">
${_conditionType_} a.ancestors is null
</if>
</if>
<if test="conditionParamRef.containsKey('ancestorsList')">
${_conditionType_} a.ancestors in
<foreach collection="conditionParamRef.ancestorsList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('name')">
<if test="conditionParamRef.name != null and conditionParamRef.name != ''">
${_conditionType_} a.name like #{${_conditionParam_}.name}
</if>
<if test="conditionParamRef.name == null">
${_conditionType_} a.name is null
</if>
</if>
<if test="conditionParamRef.containsKey('nameList')">
${_conditionType_} a.name in
<foreach collection="conditionParamRef.nameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('iid')">
<if test="conditionParamRef.iid != null and conditionParamRef.iid != ''">
${_conditionType_} a.iid like #{${_conditionParam_}.iid}
</if>
<if test="conditionParamRef.iid == null">
${_conditionType_} a.iid is null
</if>
</if>
<if test="conditionParamRef.containsKey('iidList')">
${_conditionType_} a.iid in
<foreach collection="conditionParamRef.iidList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('pid')">
<if test="conditionParamRef.pid != null and conditionParamRef.pid != ''">
${_conditionType_} a.pid like #{${_conditionParam_}.pid}
</if>
<if test="conditionParamRef.pid == null">
${_conditionType_} a.pid is null
</if>
</if>
<if test="conditionParamRef.containsKey('pidList')">
${_conditionType_} a.pid in
<foreach collection="conditionParamRef.pidList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('haveSonArea')">
<if test="conditionParamRef.haveSonArea != null and conditionParamRef.haveSonArea != ''">
${_conditionType_} a.haveSonArea like #{${_conditionParam_}.haveSonArea}
</if>
<if test="conditionParamRef.haveSonArea == null">
${_conditionType_} a.haveSonArea is null
</if>
</if>
<if test="conditionParamRef.containsKey('haveSonAreaList')">
${_conditionType_} a.haveSonArea in
<foreach collection="conditionParamRef.haveSonAreaList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('haveSonDept')">
<if test="conditionParamRef.haveSonDept != null and conditionParamRef.haveSonDept != ''">
${_conditionType_} a.haveSonDept like #{${_conditionParam_}.haveSonDept}
</if>
<if test="conditionParamRef.haveSonDept == null">
${_conditionType_} a.haveSonDept is null
</if>
</if>
<if test="conditionParamRef.containsKey('haveSonDeptList')">
${_conditionType_} a.haveSonDept in
<foreach collection="conditionParamRef.haveSonDeptList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('haveGetDept')">
<if test="conditionParamRef.haveGetDept != null and conditionParamRef.haveGetDept != ''">
${_conditionType_} a.haveGetDept like #{${_conditionParam_}.haveGetDept}
</if>
<if test="conditionParamRef.haveGetDept == null">
${_conditionType_} a.haveGetDept is null
</if>
</if>
<if test="conditionParamRef.containsKey('haveGetDeptList')">
${_conditionType_} a.haveGetDept in
<foreach collection="conditionParamRef.haveGetDeptList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('haveGetMatterList')">
<if test="conditionParamRef.haveGetMatterList != null and conditionParamRef.haveGetMatterList != ''">
${_conditionType_} a.haveGetMatterList like #{${_conditionParam_}.haveGetMatterList}
</if>
<if test="conditionParamRef.haveGetMatterList == null">
${_conditionType_} a.haveGetMatterList is null
</if>
</if>
<if test="conditionParamRef.containsKey('haveGetMatterListList')">
${_conditionType_} a.haveGetMatterList in
<foreach collection="conditionParamRef.haveGetMatterListList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('areaCode')">
<if test="conditionParamRef.areaCode != null and conditionParamRef.areaCode != ''">
${_conditionType_} a.areaCode like #{${_conditionParam_}.areaCode}
</if>
<if test="conditionParamRef.areaCode == null">
${_conditionType_} a.areaCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('areaCodeList')">
${_conditionType_} a.areaCode in
<foreach collection="conditionParamRef.areaCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('areaLevel')">
<if test="conditionParamRef.areaLevel != null ">
${_conditionType_} a.areaLevel = #{${_conditionParam_}.areaLevel}
</if>
<if test="conditionParamRef.areaLevel == null">
${_conditionType_} a.areaLevel is null
</if>
</if>
<if test="conditionParamRef.containsKey('areaLevelList')">
${_conditionType_} a.areaLevel in
<foreach collection="conditionParamRef.areaLevelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('areaLevelStart') and conditionParamRef.areaLevelStart != null">
${_conditionType_} a.areaLevel <![CDATA[ >= ]]> #{${_conditionParam_}.areaLevelStart}
</if>
<if test="conditionParamRef.containsKey('areaLevelEnd') and conditionParamRef.areaLevelEnd != null">
${_conditionType_} a.areaLevel <![CDATA[ <= ]]> #{${_conditionParam_}.areaLevelEnd}
</if>
<if test="conditionParamRef.containsKey('shortName')">
<if test="conditionParamRef.shortName != null and conditionParamRef.shortName != ''">
${_conditionType_} a.shortName like #{${_conditionParam_}.shortName}
</if>
<if test="conditionParamRef.shortName == null">
${_conditionType_} a.shortName is null
</if>
</if>
<if test="conditionParamRef.containsKey('shortNameList')">
${_conditionType_} a.shortName in
<foreach collection="conditionParamRef.shortNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('domain')">
<if test="conditionParamRef.domain != null and conditionParamRef.domain != ''">
${_conditionType_} a.domain like #{${_conditionParam_}.domain}
</if>
<if test="conditionParamRef.domain == null">
${_conditionType_} a.domain is null
</if>
</if>
<if test="conditionParamRef.containsKey('domainList')">
${_conditionType_} a.domain in
<foreach collection="conditionParamRef.domainList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('status')">
<if test="conditionParamRef.status != null ">
${_conditionType_} a.status = #{${_conditionParam_}.status}
</if>
<if test="conditionParamRef.status == null">
${_conditionType_} a.status is null
</if>
</if>
<if test="conditionParamRef.containsKey('statusList')">
${_conditionType_} a.status in
<foreach collection="conditionParamRef.statusList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('statusStart') and conditionParamRef.statusStart != null">
${_conditionType_} a.status <![CDATA[ >= ]]> #{${_conditionParam_}.statusStart}
</if>
<if test="conditionParamRef.containsKey('statusEnd') and conditionParamRef.statusEnd != null">
${_conditionType_} a.status <![CDATA[ <= ]]> #{${_conditionParam_}.statusEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
</if>
<if test="conditionParamRef.createUserId == null">
${_conditionType_} a.createUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('createUserIdList')">
${_conditionType_} a.createUserId in
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<if test="orderCol.containsKey('id')">
a.id
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('ancestors')">
a.ancestors
<if test='orderCol.ancestors != null and "DESC".equalsIgnoreCase(orderCol.ancestors)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('name')">
a.name
<if test='orderCol.name != null and "DESC".equalsIgnoreCase(orderCol.name)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('iid')">
a.iid
<if test='orderCol.iid != null and "DESC".equalsIgnoreCase(orderCol.iid)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('pid')">
a.pid
<if test='orderCol.pid != null and "DESC".equalsIgnoreCase(orderCol.pid)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('haveSonArea')">
a.haveSonArea
<if test='orderCol.haveSonArea != null and "DESC".equalsIgnoreCase(orderCol.haveSonArea)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('haveSonDept')">
a.haveSonDept
<if test='orderCol.haveSonDept != null and "DESC".equalsIgnoreCase(orderCol.haveSonDept)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('haveGetDept')">
a.haveGetDept
<if test='orderCol.haveGetDept != null and "DESC".equalsIgnoreCase(orderCol.haveGetDept)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('haveGetMatterList')">
a.haveGetMatterList
<if test='orderCol.haveGetMatterList != null and "DESC".equalsIgnoreCase(orderCol.haveGetMatterList)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('areaCode')">
a.areaCode
<if test='orderCol.areaCode != null and "DESC".equalsIgnoreCase(orderCol.areaCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('areaLevel')">
a.areaLevel
<if test='orderCol.areaLevel != null and "DESC".equalsIgnoreCase(orderCol.areaLevel)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('shortName')">
a.shortName
<if test='orderCol.shortName != null and "DESC".equalsIgnoreCase(orderCol.shortName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('domain')">
a.domain
<if test='orderCol.domain != null and "DESC".equalsIgnoreCase(orderCol.domain)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('status')">
a.status
<if test='orderCol.status != null and "DESC".equalsIgnoreCase(orderCol.status)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
a.createUserId
<if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
<sql id="_group_by_">
<if test="groupList != null and !groupList.isEmpty()">
GROUP BY
<trim suffixOverrides="," suffix="">
<foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
${item}
</foreach>
</trim>
</if>
</sql>
</mapper>
\ No newline at end of file
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###区域列表
POST {{baseUrl}}/base/area/list
Content-Type: application/json
{
"page":1,
"size":10
}
###区域更新与保存
POST {{baseUrl}}/base/area/save
Authorization: {{authToken}}
Content-Type: application/json
{
"ancestors":"otlbm4",
"name":"rjnxoh",
"iid":"a55b2h",
"pid":"m6vxah",
"haveSonArea":"xlfy3c",
"haveSonDept":"7idn7i",
"haveGetDept":"w7isxn",
"haveGetMatterList":"05iqey",
"areaCode":"cvljmh",
"areaLevel":1,
"shortName":"aexrzi",
"domain":"dibhai",
"status":1
}
> {%
client.global.set("BaseArea_id", JSON.parse(response.body).data.id);
%}
###子区域更新
POST {{baseUrl}}/base/area/genSubAreaByAreaName
Content-Type: application/json
{
"areaCode": "510100000000"
}
###区域查看
GET {{baseUrl}}/base/area/info?id={{BaseArea_id}}
Authorization: {{authToken}}
Accept: application/json
###区域编辑
GET {{baseUrl}}/base/area/edit?id={{BaseArea_id}}
Authorization: {{authToken}}
Accept: application/json
###区域删除
GET {{baseUrl}}/base/area/delete?id={{BaseArea_id}}
Authorization: {{authToken}}
Accept: application/json
...@@ -35,6 +35,13 @@ public final class RedisCacheKeys { ...@@ -35,6 +35,13 @@ public final class RedisCacheKeys {
return "sync:matter:lock:"; return "sync:matter:lock:";
} }
/**
* @return 锁定区域
*/
public static String getSyncAreaLockKey() {
return "sync:area:lock:";
}
/** /**
* @return 锁定流程发起 * @return 锁定流程发起
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment