From dac3a5dcb26d74ffdff1887b04d1ae1205ab990d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Thu, 15 May 2025 16:15:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BA=E5=9F=9F=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/base/service/BaseAreaService.java | 2 +- .../service/impl/BaseAreaServiceImpl.java | 24 ++++++++++--------- .../module/base/web/BaseAreaController.java | 17 ++++++++++++- .../sqlmap/module/base/BaseAreaMapper.xml | 2 +- .../java/com/mortals/httpclient/system.http | 2 +- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/agent-manager/src/main/java/com/mortals/xhx/module/base/service/BaseAreaService.java b/agent-manager/src/main/java/com/mortals/xhx/module/base/service/BaseAreaService.java index 25fb69c..a16247a 100644 --- a/agent-manager/src/main/java/com/mortals/xhx/module/base/service/BaseAreaService.java +++ b/agent-manager/src/main/java/com/mortals/xhx/module/base/service/BaseAreaService.java @@ -29,6 +29,6 @@ public interface BaseAreaService extends ICRUDService<BaseAreaEntity, Long> { Rest<List<String>> getSubAreaByRootName(BaseAreaEntity baseAreaEntity, Context context); - Rest<Void> updateArea(BaseAreaEntity baseAreaEntity, Context context); + Rest<Void> updateArea(BaseAreaEntity baseAreaEntity,List<BaseAreaEntity> list, Context context); } \ No newline at end of file diff --git a/agent-manager/src/main/java/com/mortals/xhx/module/base/service/impl/BaseAreaServiceImpl.java b/agent-manager/src/main/java/com/mortals/xhx/module/base/service/impl/BaseAreaServiceImpl.java index c61976f..00b19c0 100644 --- a/agent-manager/src/main/java/com/mortals/xhx/module/base/service/impl/BaseAreaServiceImpl.java +++ b/agent-manager/src/main/java/com/mortals/xhx/module/base/service/impl/BaseAreaServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -95,32 +96,33 @@ public class BaseAreaServiceImpl extends AbstractCRUDServiceImpl<BaseAreaDao, Ba @Override - public Rest<Void> updateArea(BaseAreaEntity baseAreaEntity, Context context) { + public Rest<Void> updateArea(BaseAreaEntity baseAreaEntity,List<BaseAreaEntity> list, Context context) { //https://www.sczwfw.gov.cn/jiq/interface/jitem/find-by-code?code=510000000000&deptType=1&jsonpCallback=jsonpcallback&_=1747020251031 //todo 鏇存柊鍥涘窛鍖哄煙鏁版嵁 String url = "https://www.sczwfw.gov.cn/jiq/interface/jitem/find-by-code?code=" + baseAreaEntity.getAreaCode() + "&deptType=1&jsonpCallback=jsonpcallback&_=1747020251031"; - String rest = HttpUtil.get(url); rest = StrUtil.subBetween(rest, "jsonpcallback(", ")"); Rest<RootAreaInfo> ret = JSON.parseObject(rest, new TypeReference<Rest<RootAreaInfo>>() { }); + if (200 == ret.getCode()) { GroupAreaInfo group = ret.getData().getGroup(); //鏌ヨ褰撳墠group鏄惁瀛樺湪 瀛樺湪 鏇存柊鏁版嵁 BaseAreaQuery baseAreaQuery = new BaseAreaQuery(); baseAreaQuery.setAreaCode(group.getAreaCode()); - updateAndSaveEntity(baseAreaQuery, group); + BaseAreaEntity entity = updateAndSaveEntity(baseAreaQuery, group); + list.add(entity); List<GroupAreaInfo> sonAreas = group.getSonAreas(); for (GroupAreaInfo sonArea : sonAreas) { // baseAreaQuery = new BaseAreaQuery(); baseAreaQuery.setAreaCode(sonArea.getAreaCode()); - updateAndSaveEntity(baseAreaQuery, sonArea); - - updateArea(new BaseAreaQuery().areaCode(sonArea.getAreaCode()), context); + entity = updateAndSaveEntity(baseAreaQuery, sonArea); + list.add(entity); + updateArea(new BaseAreaQuery().areaCode(sonArea.getAreaCode()),list, context); } } @@ -128,15 +130,13 @@ public class BaseAreaServiceImpl extends AbstractCRUDServiceImpl<BaseAreaDao, Ba return Rest.ok(); } - private void updateAndSaveEntity(BaseAreaQuery baseAreaQuery, GroupAreaInfo group) { + private BaseAreaEntity updateAndSaveEntity(BaseAreaQuery baseAreaQuery, GroupAreaInfo group) { BaseAreaEntity entity = this.selectOne(baseAreaQuery); if (ObjectUtils.isEmpty(entity)) { //鏂板 - entity = new BaseAreaEntity(); entity.initAttrValue(); BeanUtils.copyProperties(group, entity, BeanUtil.getNullPropertyNames(group)); - entity.setName(group.getShortName()); entity.setCreateTime(new Date()); @@ -144,13 +144,15 @@ public class BaseAreaServiceImpl extends AbstractCRUDServiceImpl<BaseAreaDao, Ba entity.setUpdateTime(new Date()); entity.setStatus(1); //log.info("鏂板鏁版嵁:{}", JSON.toJSONString(group)); - this.save(entity); + //this.save(entity); } else { //鏇存柊 BeanUtils.copyProperties(group, entity, BeanUtil.getNullPropertyNames(group)); entity.setUpdateTime(new Date()); - this.update(entity); + // this.update(entity); } + + return entity; } diff --git a/agent-manager/src/main/java/com/mortals/xhx/module/base/web/BaseAreaController.java b/agent-manager/src/main/java/com/mortals/xhx/module/base/web/BaseAreaController.java index f0f03c2..8542705 100644 --- a/agent-manager/src/main/java/com/mortals/xhx/module/base/web/BaseAreaController.java +++ b/agent-manager/src/main/java/com/mortals/xhx/module/base/web/BaseAreaController.java @@ -1,6 +1,7 @@ package com.mortals.xhx.module.base.web; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; @@ -21,7 +22,10 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 鍖哄煙 @@ -113,7 +117,18 @@ public class BaseAreaController extends BaseCRUDJsonBodyMappingController<BaseAr } new Thread(() -> { - this.service.updateArea(areaQuery, getContext()); + List<BaseAreaEntity> list = new ArrayList<>(); + this.service.updateArea(areaQuery, list, getContext()); + + Map<Boolean, List<BaseAreaEntity>> collect = list.stream().collect(Collectors.partitioningBy(x -> x.getId() == null)); + List<BaseAreaEntity> saveList = collect.get(true); + if (!ObjectUtils.isEmpty(saveList)) { + Lists.partition(saveList, 100).forEach(item -> this.service.save(item)); + } + List<BaseAreaEntity> updateList = collect.get(false); + if (!ObjectUtils.isEmpty(updateList)) { + Lists.partition(updateList, 100).forEach(item -> this.service.update(item)); + } }).start(); //缂栫爜浼樺厛 diff --git a/agent-manager/src/main/resources/sqlmap/module/base/BaseAreaMapper.xml b/agent-manager/src/main/resources/sqlmap/module/base/BaseAreaMapper.xml index 8f5f645..4727dbd 100644 --- a/agent-manager/src/main/resources/sqlmap/module/base/BaseAreaMapper.xml +++ b/agent-manager/src/main/resources/sqlmap/module/base/BaseAreaMapper.xml @@ -67,7 +67,7 @@ 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, + 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, diff --git a/agent-manager/src/test/java/com/mortals/httpclient/system.http b/agent-manager/src/test/java/com/mortals/httpclient/system.http index f318489..084ecb4 100644 --- a/agent-manager/src/test/java/com/mortals/httpclient/system.http +++ b/agent-manager/src/test/java/com/mortals/httpclient/system.http @@ -67,7 +67,7 @@ Content-Type: application/json POST {{baseUrl}}/base/area/updateBaseArea Content-Type: application/json -{"areaCode": "510000000000"} +{"areaCode": "511700000000"} ###controoler 娴嬭瘯 -- 2.24.3