数据校验bug修复

This commit is contained in:
guoshengxiong 2024-06-27 10:07:05 +08:00
parent fac25ea1b6
commit 6e92b68ab7
11 changed files with 133 additions and 55 deletions

View File

@ -101,6 +101,7 @@ public class DataScopeHandler implements DataPermissionHandler {
tables.put("exam_course_record", "enterprise_id");
tables.put("xz_worker_safe_watch_alarm", "enterprise_id");
tables.put("dangerous_engineering_record", "responsibility_company_id");
tables.put("project_fine_record", "enterprise_id");
if (!environmentUtil.isBaise()) {
tables.put("car_info", "enterprise_id");
tables.put("enterprise_info", "id");

View File

@ -309,9 +309,9 @@ public class AsyncHikvision {
}
@Async("carInfoExecutor")
public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName, Long projectEnterpriseId) {
public void deleteEnterpriseInfoForHikvision(String projectSn, String enterpriseName) {
try {
hikvisionCall.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseName, projectEnterpriseId);
hikvisionCall.deleteEnterpriseInfoForHikvision(projectSn, enterpriseName);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForOrg(enterpriseName, e, "删除");

View File

@ -1014,6 +1014,15 @@ public class HikvisionCall {
} else if (Objects.equals(code, "0x00072003")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!";
title += "失败";
} else if (Objects.equals(code, "0x00052301")) {
String msg1 = jo.getString("msg");
if (Objects.equals(msg1, "PersonId Not Exists")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因车辆绑定的人员ID不存在";
title += "失败";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
@ -1035,7 +1044,7 @@ public class HikvisionCall {
updateFailStatus(carInfo.getProjectSn(), carInfo.getId(), type, operate, null);
}
xzHikvisionCompareDataService.compareRetryStatus(carInfo, type, operate, setSuc);
xzHikvisionCompareDataService.compareRetryForCar(carInfo, type, operate, setSuc);
if (isNotice) {
if (ThreadLocalUtil.getByKey(Cts.TL_AUTH_USER, UserInfo.class) != null) {
@ -1076,6 +1085,22 @@ public class HikvisionCall {
msg = "同步成功,组织名称:" + orgName;
title += "成功";
}
} else if (jo.get("data") instanceof JSONArray) {
JSONArray dataJa = jo.getJSONArray("data");
if (CollUtil.isNotEmpty(dataJa)) {
if ("0x00052102".equals(dataJa.getJSONObject(0).getString("code")) && "Exists Child Org".equals(dataJa.getJSONObject(0).getString("msg"))) {
msg = "同步失败,组织名称:" + orgName + "。失败原因ISC存在下级组织";
title += "失败";
success = false;
} else {
msg = "同步失败,组织名称:" + orgName + "。失败原因:下发异常";
title += "失败";
success = false;
}
} else {
msg = "同步成功,组织名称:" + orgName;
title += "成功";
}
} else {
msg = "同步成功,组织名称:" + orgName;
title += "成功";
@ -1086,7 +1111,7 @@ public class HikvisionCall {
success = false;
}
if (success) {
xzHikvisionCompareDataService.compareRetryStatus();
xzHikvisionCompareDataService.compareRetrySuc();
} else {
xzHikvisionCompareDataService.compareRetryFail();
}
@ -1155,7 +1180,7 @@ public class HikvisionCall {
}
if (success) {
updateSuccessStatus(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, null);
xzHikvisionCompareDataService.compareRetryStatus();
xzHikvisionCompareDataService.compareRetrySuc();
} else {
updateFailStatus(workerInfo.getProjectSn(), workerInfo.getId(), type, operate, null);
xzHikvisionCompareDataService.compareRetryFail();
@ -1850,21 +1875,45 @@ public class HikvisionCall {
/**
* 删除组织
*
* @param enterpriseId
* @param projectSn
* @param enterpriseName
* @param projectEnterpriseId
*/
public void deleteEnterpriseInfoForHikvision(String enterpriseId, String projectSn, String enterpriseName, Long projectEnterpriseId) throws Exception {
public void deleteEnterpriseInfoForHikvision(String projectSn, String enterpriseName) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, projectSn));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
Pair<Boolean, String> pair = existAndGetEnterpriseOrgIndexCodeByEnterpriseId(project, String.valueOf(enterpriseId), projectEnterpriseId);
String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Collections.singletonList(pair.getRight()));
String orgIndex = getOrgIndexByParentIndexAndName(project, enterpriseName);
String rs = HikvisionUtil.deleteOrgByIndexCodes(project, Collections.singletonList(orgIndex));
sendNoticeForOrg("删除组织到海康isc", rs, enterpriseName);
}
/**
* 根据父级索引和名称获取组织索引
*
* @param project
* @param orgName
* @return
* @throws Exception
*/
private String getOrgIndexByParentIndexAndName(Project project, String orgName) throws Exception {
JSONObject param = new JSONObject();
param.put("pageNo", 1);
param.put("pageSize", 1000);
param.put("orgName", orgName);
param.put("parentOrgIndexCodes", project.getProjectSn());
String rs = HikvisionUtil.getOrgV2(project, param);
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rs);
JSONArray listJa = dataJo.getJSONArray("list");
for (int i = 0; i < listJa.size(); i++) {
JSONObject jo = listJa.getJSONObject(i);
if (jo.getString("orgName").equals(orgName)) {
return jo.getString("orgIndexCode");
}
}
return null;
}
/**
* 添加组织
*
@ -2026,10 +2075,14 @@ public class HikvisionCall {
* @return
*/
private JSONArray getOrgList(Project project, String orgIndexs, String parentOrgIndexCode) throws Exception {
String rs = HikvisionUtil.getOrgV2(project, orgIndexs, parentOrgIndexCode);
JSONObject param = new JSONObject();
param.put("pageNo", 1);
param.put("pageSize", 1000);
param.put("orgIndexCodes", orgIndexs);
param.put("parentOrgIndexCodes", parentOrgIndexCode);
String rs = HikvisionUtil.getOrgV2(project, param);
JSONObject jo = HikvisionUtil.getJSONObjectData(rs);
JSONArray list = jo.getJSONArray("list");
return list;
return jo.getJSONArray("list");
}
private HikvisionOrganization getHikvisionOrganization(Project project) {

View File

@ -1,5 +1,6 @@
package com.zhgd.xmgl.config;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.zhgd.xmgl.util.LogMdcUtil;
import com.zhgd.xmgl.util.ThreadLocalUtil;
@ -22,13 +23,14 @@ public class MdcThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
Map<String, String> context = MDC.getCopyOfContextMap(); //复制主线程MDC
JSONObject tlJo = ThreadLocalUtil.get();
log.info("MDC异步多线程...");
JSONObject copyTl = BeanUtil.toBean(tlJo, JSONObject.class);
super.execute(() -> {
if (null != context) {
MDC.setContextMap(context); //主线程MDC赋予子线程
} else {
LogMdcUtil.setRequestId(); //主线程没有MDC就自己生成一个
}
ThreadLocalUtil.set(tlJo);
ThreadLocalUtil.set(copyTl);
try {
task.run();
} finally {
@ -50,13 +52,14 @@ public class MdcThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
Map<String, String> context = MDC.getCopyOfContextMap(); //复制主线程MDC
JSONObject tlJo = ThreadLocalUtil.get();
log.info("MDC异步多线程...");
JSONObject copyTl = BeanUtil.toBean(tlJo, JSONObject.class);
return super.submit(() -> {
if (null != context) {
MDC.setContextMap(context); //主线程MDC赋予子线程
} else {
LogMdcUtil.setRequestId(); //主线程没有MDC就自己生成一个
}
ThreadLocalUtil.set(tlJo);
ThreadLocalUtil.set(copyTl);
try {
return task.call();
} finally {

View File

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.annotation.DataScope;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @version V1.0
*/
@Mapper
@DataScope
public interface ProjectFineRecordMapper extends BaseMapper<ProjectFineRecord> {
List<ProjectFineRecord> selectProjectFineRecordPageList(Page<ProjectFineRecord> page, @Param("param") Map<String, Object> map);

View File

@ -312,7 +312,7 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
}
EnterpriseInfo enterpriseInfo = baseMapper.selectById(enterpriseId);
//同步海康
asyncHikvision.deleteEnterpriseInfoForHikvision(enterpriseId, projectSn, enterpriseInfo.getEnterpriseName(), projectEnterprise != null ? projectEnterprise.getId() : null);
asyncHikvision.deleteEnterpriseInfoForHikvision(projectSn, enterpriseInfo.getEnterpriseName());
}
@Override

View File

@ -102,4 +102,9 @@ public class XzHikvisionCompareData implements Serializable {
*/
@ApiModelProperty(value = "更新时间")
private java.util.Date updateDate;
/**
* 车辆isc存在类型1固定车2预约车3黑名单
*/
@ApiModelProperty(value = "车辆isc存在类型1固定车2预约车3黑名单")
private java.lang.Integer carIscExistType;
}

View File

@ -35,7 +35,7 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
void compareRetryFail();
void compareRetryStatus();
void compareRetrySuc();
void addCompareDataForEnterprise(Project project, String orgName, int existIsc, int existMyPlatform, String uniqueId);
@ -47,7 +47,7 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
void addCompareDataForFace(Project project, String workerName, int existIsc, int existMyPlatform, String uniqueId, String idCard);
void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId);
void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId, Integer carIscExistType);
void addExceptionShowIfNull(String projectSn);
@ -64,5 +64,5 @@ public interface IXzHikvisionCompareDataService extends IService<XzHikvisionComp
void deleteAllCompareData(Project project);
void compareRetryStatus(CarInfo carInfo, Integer type, Integer operate, Boolean setSuc);
void compareRetryForCar(CarInfo carInfo, Integer type, Integer operate, Boolean setSuc);
}

View File

@ -46,6 +46,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@ -165,6 +166,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
}
@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void sync(String ids) throws Exception {
List<String> idList = StrUtil.split(ids, ",");
for (String id : idList) {
@ -172,7 +174,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
if (data == null) {
continue;
}
ThreadLocalUtil.addInKeyIfNotExist(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data);
ThreadLocalUtil.addInKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, data);
xzHikvisionCompareDataService.sync(data);
}
}
@ -208,7 +210,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
//同步海康
asyncHikvision.editEnterpriseInfoForHikvision(enterpriseInfo);
} else {
asyncHikvision.deleteEnterpriseInfoForHikvision(data.getUniqueId(), data.getProjectSn(), data.getOrgName(), enterpriseInfo.getProjectEnterprise() != null ? enterpriseInfo.getProjectEnterprise().getId() : null);
asyncHikvision.deleteEnterpriseInfoForHikvision(data.getProjectSn(), data.getOrgName());
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
//查询id是否存在isc存在就更新不存在就新增
@ -241,6 +243,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} else {
teamInfo = new TeamInfo();
teamInfo.setTeamName(data.getOrgName());
teamInfo.setProjectSn(data.getProjectSn());
asyncHikvision.deleteTeamInfoForHikvision(data.getUniqueId(), teamInfo);
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
@ -274,6 +277,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} else {
departmentInfo = new DepartmentInfo();
departmentInfo.setDepartmentName(data.getOrgName());
departmentInfo.setProjectSn(data.getProjectSn());
asyncHikvision.deleteDepartmentInfoForHikvision(data.getUniqueId(), departmentInfo);
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
@ -313,6 +317,8 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
} else {
workerInfo = new WorkerInfo();
workerInfo.setWorkerName(data.getWorkerName());
workerInfo.setProjectSn(projectInfoBySn.getProjectSn());
workerInfo.setIdCard(data.getIdCard());
workerInfoService.deleteWorkerForHikvision(data.getUniqueId(), workerInfo);
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
@ -357,6 +363,15 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
carInfo = new CarInfo();
carInfo.setCarNumber(data.getCarNumber());
carInfo.setProjectSn(data.getProjectSn());
if (Objects.equals(data.getCarIscExistType(), 1)) {
carInfo.setIsBlack(0);
carInfo.setCarModuleType(1);
} else if (Objects.equals(data.getCarIscExistType(), 2)) {
carInfo.setIsBlack(0);
carInfo.setCarModuleType(2);
} else if (Objects.equals(data.getCarIscExistType(), 3)) {
carInfo.setIsBlack(1);
}
deleteCarInfoAndSetBlackForHikvisionAsync(carInfo, 3, false);
}
} else if (data.getExistIsc() == 0 && data.getExistMyPlatform() == 1) {
@ -385,6 +400,9 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
.eq(XzHikvisionSync::getWhoId, carInfo.getId())
);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(Objects.equals(carInfo.getCarModuleType(), 1) ? 4 : 6).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
}
asyncHikvision.addCarInfoForHikvisionAsync(carInfo);
}
} else {
@ -419,6 +437,9 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
.eq(XzHikvisionSync::getWhoId, carInfo.getId())
);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(Objects.equals(carInfo.getCarModuleType(), 1) ? 4 : 6).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setBigType(2).setCreateDate(getSyncTimeWithInitIfAbsent()));
}
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, carInfo);
}
@ -438,7 +459,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
* 数据校验重试成功
*/
@Override
public void compareRetryStatus() {
public void compareRetrySuc() {
XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
if (data != null) {
xzHikvisionCompareDataMapper.deleteById(data.getId());
@ -513,7 +534,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
}
@Override
public void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId) {
public void addCompareDataForCar(Project project, String carNumber, int existIsc, int existMyPlatform, String uniqueId, Integer carIscExistType) {
XzHikvisionCompareData data = new XzHikvisionCompareData();
data.setProjectSn(project.getProjectSn());
data.setCarNumber(carNumber);
@ -522,6 +543,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
data.setType(4);
data.setOurType(6);
data.setUniqueId(uniqueId);
data.setCarIscExistType(carIscExistType);
baseMapper.insert(data);
}
@ -598,23 +620,22 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
.eq(XzHikvisionCompareData::getProjectSn, project.getProjectSn()));
}
/**
* @param carInfo
* @param type 1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车7车辆布防
* @param operate
* @param setSuc
*/
@Override
public void compareRetryStatus(CarInfo carInfo, Integer type, Integer operate, Boolean setSuc) {
if (Objects.equals(carInfo.getIsBlack(), 1) && Objects.equals(type, 7)) {
public void compareRetryForCar(CarInfo carInfo, Integer type, Integer operate, Boolean setSuc) {
XzHikvisionCompareData data = ThreadLocalUtil.getByKey(Cts.TL_XZ_HIKVISION_COMPARE_DATA_RETRY, XzHikvisionCompareData.class);
boolean isBlack = Objects.equals(carInfo.getIsBlack(), 1) && Objects.equals(type, 7);
boolean isFix = Objects.equals(carInfo.getCarModuleType(), 1) && Objects.equals(type, 4);
boolean isReservation = !Objects.equals(carInfo.getCarModuleType(), 1) && Objects.equals(type, 6) && Objects.equals(operate, 1);
boolean isCancelReservation = !Objects.equals(carInfo.getCarModuleType(), 1) && Objects.equals(type, 6) && Objects.equals(operate, 3) && data != null && (Objects.equals(data.getExistIsc(), 1) && Objects.equals(data.getExistMyPlatform(), 0));
if (isBlack || isFix || isReservation || isCancelReservation) {
if (setSuc) {
compareRetryStatus();
} else {
compareRetryFail();
}
} else if (Objects.equals(carInfo.getCarModuleType(), 1) && Objects.equals(type, 4)) {
if (setSuc) {
compareRetryStatus();
} else {
compareRetryFail();
}
} else if (!Objects.equals(carInfo.getCarModuleType(), 1) && Objects.equals(type, 6) && Objects.equals(operate, 1)) {
if (setSuc) {
compareRetryStatus();
compareRetrySuc();
} else {
compareRetryFail();
}

View File

@ -355,7 +355,7 @@ public class HikvisionTask {
.build());
JSONObject dataJo = HikvisionUtil.getJSONObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list");
compareAndAddData(project, listJa, carInfoList);
compareAndAddData(project, listJa, carInfoList, 1);
}
public void compareHikvisionForReservationCar(Project project) throws Exception {
@ -367,7 +367,7 @@ public class HikvisionTask {
.put(Cts.RESERVATION_TYPE, 1)
.put("isBlack", 0)
.build());
compareAndAddData(project, listJa, carInfoList);
compareAndAddData(project, listJa, carInfoList, 2);
}
public void compareHikvisionForBlackCar(Project project) throws Exception {
@ -383,13 +383,13 @@ public class HikvisionTask {
.put(Cts.PROJECT_SN, project.getProjectSn())
.put("isBlack", 1)
.build());
compareAndAddData(project, listJa, carInfoList);
compareAndAddData(project, listJa, carInfoList, 3);
}
private void compareAndAddData(Project project, JSONArray listJa, List<CarInfo> carInfoList) {
private void compareAndAddData(Project project, JSONArray listJa, List<CarInfo> carInfoList, int carIscExistType) {
if (CollUtil.isEmpty(listJa)) {
for (CarInfo carInfo : carInfoList) {
xzHikvisionCompareDataService.addCompareDataForCar(project, carInfo.getCarNumber(), 0, 1, String.valueOf(carInfo.getId()));
xzHikvisionCompareDataService.addCompareDataForCar(project, carInfo.getCarNumber(), 0, 1, String.valueOf(carInfo.getId()), null);
}
} else {
//isc存在平台也存在
@ -402,10 +402,10 @@ public class HikvisionTask {
String uniqueId = null;
if (myMap.containsKey(carNumber) && !iscMap.containsKey(carNumber)) {
uniqueId = String.valueOf(myMap.get(carNumber).getId());
xzHikvisionCompareDataService.addCompareDataForCar(project, carNumber, 0, 1, uniqueId);
xzHikvisionCompareDataService.addCompareDataForCar(project, carNumber, 0, 1, uniqueId, null);
} else if (!myMap.containsKey(carNumber) && iscMap.containsKey(carNumber)) {
uniqueId = iscMap.get(carNumber).getString("vehicleId");
xzHikvisionCompareDataService.addCompareDataForCar(project, carNumber, 1, 0, uniqueId);
xzHikvisionCompareDataService.addCompareDataForCar(project, carNumber, 1, 0, uniqueId, carIscExistType);
}
}
}

View File

@ -354,23 +354,16 @@ public class HikvisionUtil {
* 获取组织列表v2
*
* @param project
* @param orgIndex
* @param parentOrgIndexCode
* @param jo
*/
public static String getOrgV2(Project project, String orgIndex, String parentOrgIndexCode) throws Exception {
public static String getOrgV2(Project project, JSONObject jo) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/org/advance/orgList";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("pageNo", 1);
jo.put("pageSize", 100);
jo.put("orgIndexCodes", orgIndex);
jo.put("parentOrgIndexCodes", parentOrgIndexCode);
String body = jo.toJSONString();
return doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**