指令同步日志

This commit is contained in:
1378012178@qq.com 2025-07-31 16:23:59 +08:00
parent 212b627879
commit fe39e1d0c1
16 changed files with 185 additions and 23 deletions

View File

@ -31,6 +31,10 @@ public class OrgAllInfo implements Serializable {
* 协议+域名 * 协议+域名
*/ */
private String url; private String url;
/**
* 协议+域名
*/
private String contextPath;
/** /**
* 省份 * 省份
*/ */

View File

@ -153,5 +153,6 @@ public class DirectiveAsyncMQDto implements Serializable {
//情绪标签json字符串有idlabel //情绪标签json字符串有idlabel
private String emotionTagsObj; private String emotionTagsObj;
//资源请求接口域名+项目上下文路径
private String api;
} }

View File

@ -28,4 +28,6 @@ public class DirectiveMQDto {
private List<BodyTagMQDto> bodyTagList; private List<BodyTagMQDto> bodyTagList;
//情绪标签字典项 //情绪标签字典项
private List<EmotionTagMQDto> emotionTagList; private List<EmotionTagMQDto> emotionTagList;
//是否同步指令资源
private boolean izSyncMedia;
} }

View File

@ -3,6 +3,7 @@ package com.nu.modules.async.entity;
import java.io.Serializable; import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@ -57,4 +58,11 @@ public class AsyncStatus implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期") @ApiModelProperty(value = "更新日期")
private java.util.Date updateTime; private java.util.Date updateTime;
/**目标机构编码*/
@Excel(name = "目标机构编码", width = 15)
@ApiModelProperty(value = "目标机构编码")
private java.lang.String targetOrgCode;
//目标机构名称
@TableField(exist = false)
private String zOrgName;
} }

View File

@ -18,6 +18,8 @@
<result property="status" column="zstatus"/> <result property="status" column="zstatus"/>
<result property="msg" column="zmsg"/> <result property="msg" column="zmsg"/>
<result property="updateTime" column="zupdataTime"/> <result property="updateTime" column="zupdataTime"/>
<result property="targetOrgCode" column="targetOrgCode"/>
<result property="zOrgName" column="zOrgName"/>
</collection> </collection>
</resultMap> </resultMap>
@ -26,7 +28,7 @@
f.id as id, f.id as id,
f.primary_key as primaryKey, f.primary_key as primaryKey,
f.org_code as orgCode, f.org_code as orgCode,
f.org_name as orgName, md.depart_name as orgName,
f.type as type, f.type as type,
f.descr as descr, f.descr as descr,
f.create_by as createBy, f.create_by as createBy,
@ -36,9 +38,13 @@
z.name as zname, z.name as zname,
z.status as zstatus, z.status as zstatus,
z.msg as zmsg, z.msg as zmsg,
z.update_time as zupdataTime z.update_time as zupdataTime,
z.target_org_code as targetOrgCode,
sd.depart_name as zOrgName
from nu_async_main f from nu_async_main f
left join sys_depart md on f.org_code = md.org_code
left join nu_async_status z on f.id = z.pkid left join nu_async_status z on f.id = z.pkid
left join sys_depart sd on z.target_org_code = sd.org_code
<where> <where>
<if test="records !=null and !records.isEmpty()"> <if test="records !=null and !records.isEmpty()">
f.id in f.id in

View File

@ -17,4 +17,6 @@ public interface IAsyncMainService extends IService<AsyncMain> {
List<AsyncMain> pageList(List<AsyncMain> records, AsyncMain dto); List<AsyncMain> pageList(List<AsyncMain> records, AsyncMain dto);
Map<String,List<AsyncMain>> listByType(AsyncMain am); Map<String,List<AsyncMain>> listByType(AsyncMain am);
void saveData(String dataSourceCode,AsyncMain asyncMain);
} }

View File

@ -1,6 +1,8 @@
package com.nu.modules.async.service; package com.nu.modules.async.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.async.entity.AsyncMain;
import com.nu.modules.async.entity.AsyncStatus;
/** /**
* @Description: 数据同步子表-状态记录表 * @Description: 数据同步子表-状态记录表
@ -9,5 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @Version: V1.0 * @Version: V1.0
*/ */
public interface IAsyncStatusService extends IService<com.nu.modules.async.entity.AsyncStatus> { public interface IAsyncStatusService extends IService<com.nu.modules.async.entity.AsyncStatus> {
void saveData(String dataSourceCode,AsyncStatus asyncStatus);
} }

View File

@ -1,6 +1,7 @@
package com.nu.modules.async.service.impl; package com.nu.modules.async.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.nu.enums.MQStatus; import com.nu.enums.MQStatus;
@ -75,4 +76,10 @@ public class AsyncMainServiceImpl extends ServiceImpl<AsyncMainMapper, AsyncMain
result.put("processingList", processingList); result.put("processingList", processingList);
return result; return result;
} }
@Override
@DS("dataSourceCode")
public void saveData(String dataSourceCode,AsyncMain asyncMain) {
baseMapper.insert(asyncMain);
}
} }

View File

@ -1,5 +1,7 @@
package com.nu.modules.async.service.impl; package com.nu.modules.async.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.nu.modules.async.entity.AsyncStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -13,4 +15,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service @Service
public class AsyncStatusServiceImpl extends ServiceImpl<com.nu.modules.async.mapper.AsyncStatusMapper, com.nu.modules.async.entity.AsyncStatus> implements com.nu.modules.async.service.IAsyncStatusService { public class AsyncStatusServiceImpl extends ServiceImpl<com.nu.modules.async.mapper.AsyncStatusMapper, com.nu.modules.async.entity.AsyncStatus> implements com.nu.modules.async.service.IAsyncStatusService {
@Override
@DS("dataSourceCode")
public void saveData(String dataSourceCode,AsyncStatus asyncStatus) {
baseMapper.insert(asyncStatus);
}
} }

View File

@ -1,5 +1,6 @@
package com.nu.modules.servicedirective.controller; package com.nu.modules.servicedirective.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -7,7 +8,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.beust.jcommander.internal.Maps; import com.beust.jcommander.internal.Maps;
import com.nu.dto.DirectiveAsyncMQDto; import com.nu.dto.DirectiveAsyncMQDto;
import com.nu.dto.DirectiveMQDto;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService; import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
import com.nu.modules.servicedirective.entity.DirectiveSyncDto; import com.nu.modules.servicedirective.entity.DirectiveSyncDto;
import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService; import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService;
@ -394,29 +398,63 @@ public class ConfigServiceDirectiveController extends JeecgController<ConfigServ
/** /**
* @param dataSourceCode 源数据机构编码 * @param dataSourceCode 源数据机构编码
* @param syncIds 新增指令的id逗号拼接
* @param upIds 更新指令的id逗号拼接
* @param syncOrgCodes 同步给哪些机构
* @param syncOption 新增指令需要更新哪些内容 all(业务字段+指令资源 business业务字段 media指令资源
* @return * @return
*/ */
@AutoLog(value = "服务指令-指令同步") @AutoLog(value = "服务指令-指令同步")
@ApiOperation(value = "服务指令-指令同步", notes = "服务指令-指令同步") @ApiOperation(value = "服务指令-指令同步", notes = "服务指令-指令同步")
@PostMapping(value = "/syncDirective") @PostMapping(value = "/syncDirective")
@DS("#dataSourceCode") @DS("#dataSourceCode")
public Result<Map> syncDirective(@RequestParam(name = "dataSourceCode") String dataSourceCode,@RequestBody DirectiveSyncDto dto) { public Result<Map> syncDirective(@RequestParam(name = "dataSourceCode") String dataSourceCode, @RequestBody DirectiveSyncDto dto) {
//处理接口地址
String fullPath = "";
if ("all".equals(dto.getSyncOption()) || "media".equals(dto.getSyncOption()) || StringUtils.isNotBlank(dto.getUpIds())) {
JSONObject deptInfo = configServiceDirectiveService.getDeptInfo("master",dataSourceCode);
String url = deptInfo.getString("url");
String contextPath = deptInfo.getString("contextPath");
String baseUrl = url.endsWith("/") ? url.substring(0, url.length() - 1) : url;
String normalizedContextPath = contextPath.startsWith("/") ? contextPath : "/" + contextPath;
normalizedContextPath = normalizedContextPath.endsWith("/")
? normalizedContextPath.substring(0, normalizedContextPath.length() - 1)
: normalizedContextPath;
//接口协议域名上下文路径
fullPath = baseUrl + normalizedContextPath;
}
//同步-新增服务指令 //同步-新增服务指令
configServiceDirectiveService.syncDirective(dto.getSyncIds(), dto.getSyncOrgCodes(), dto.getSyncOption()); configServiceDirectiveService.syncDirective(dto.getSyncIds(), dto.getSyncOrgCodes(), dto.getSyncOption(),fullPath,dataSourceCode);
//给新增的指令同步指令资源
if ("all".equals(dto.getSyncOption()) || "media".equals(dto.getSyncOption())) {
} //给待更新的指令
//同步 - 更新指令资源字段
if (StringUtils.isNotBlank(dto.getUpIds())) { if (StringUtils.isNotBlank(dto.getUpIds())) {
DirectiveMQDto upDirectiveMQDto = new DirectiveMQDto();
List<ConfigServiceDirective> directives;
{
List<ConfigServiceDirective> param = Lists.newArrayList();
Arrays.stream(dto.getUpIds().split(",")).forEach(id -> {
ConfigServiceDirective configServiceDirective = new ConfigServiceDirective();
configServiceDirective.setId(id);
param.add(configServiceDirective);
});
directives = configServiceDirectiveService.pageList(param);
upDirectiveMQDto.setDirectiveList(BeanUtil.copyToList(directives, DirectiveAsyncMQDto.class));
}
List<DirectiveAsyncMQDto> upDirectiveList = upDirectiveMQDto.getDirectiveList();
for (int i = 0; i < upDirectiveList.size(); i++) {
upDirectiveList.get(i).setApi(fullPath);
}
new Thread(() -> {
for (String code : dto.getSyncOrgCodes().split(",")) {
try {
rabbitMQUtil.sendToExchange("hldy.directive", code + ".directive.createmedia", upDirectiveMQDto);
// 发送完后休眠 5 分钟
// Thread.sleep(TimeUnit.MINUTES.toMillis(5));
// } catch (InterruptedException e) {
} catch (Exception e) {
Thread.currentThread().interrupt();
break;
}
}
}).start();
} }
//发送消息 //发送消息
return Result.ok(); return Result.ok();
} }

View File

@ -1,8 +1,9 @@
package com.nu.modules.servicedirective.service; package com.nu.modules.servicedirective.service;
import cn.hutool.json.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.dto.DirectiveMQDto;
import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.ConfigServiceDirective;
import java.util.List; import java.util.List;
@ -62,5 +63,9 @@ public interface IConfigServiceDirectiveService extends IService<ConfigServiceDi
void auditPass(ConfigServiceDirective dto); void auditPass(ConfigServiceDirective dto);
//同步服务指令 //同步服务指令
void syncDirective(String syncIds, String syncOrgCodes, String syncOption); DirectiveMQDto syncDirective(String syncIds, String syncOrgCodes, String syncOption, String fullPath, String dataSourceCode);
JSONObject getDeptInfo(String dataSourceCode,String orgCode);
List<ConfigServiceDirective> pageList(List<ConfigServiceDirective> param);
} }

View File

@ -1,12 +1,18 @@
package com.nu.modules.servicedirective.service.impl; package com.nu.modules.servicedirective.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.dto.*; import com.nu.dto.*;
import com.nu.enums.MQStatus;
import com.nu.modules.async.entity.AsyncMain;
import com.nu.modules.async.entity.AsyncStatus;
import com.nu.modules.async.service.IAsyncMainService;
import com.nu.modules.async.service.IAsyncStatusService;
import com.nu.modules.directivetag.body.entity.DirectiveBodyTag; import com.nu.modules.directivetag.body.entity.DirectiveBodyTag;
import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService; import com.nu.modules.directivetag.body.service.IDirectiveBodyTagService;
import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag; import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag;
@ -69,6 +75,10 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
private IDirectiveEmotionTagService emotionTagService; private IDirectiveEmotionTagService emotionTagService;
@Autowired @Autowired
private RabbitMQUtil rabbitMQUtil; private RabbitMQUtil rabbitMQUtil;
@Autowired
private IAsyncMainService asyncMainService;
@Autowired
private IAsyncStatusService asyncStatusService;
@Override @Override
public List<ConfigServiceDirective> pageList(ConfigServiceDirective configServiceDirective, IPage<ConfigServiceDirective> list_) { public List<ConfigServiceDirective> pageList(ConfigServiceDirective configServiceDirective, IPage<ConfigServiceDirective> list_) {
@ -400,12 +410,17 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
return null; return null;
} }
@Override
public List<ConfigServiceDirective> pageList(List<ConfigServiceDirective> param) {
return baseMapper.pageList(null, param);
}
/** /**
* @param syncIds 需要同步的指令ID * @param syncIds 需要同步的指令ID
* @param syncOrgCodes 需要同步的目标平台orgCode * @param syncOrgCodes 需要同步的目标平台orgCode
*/ */
@Override @Override
public void syncDirective(String syncIds, String syncOrgCodes, String syncOption) { public DirectiveMQDto syncDirective(String syncIds, String syncOrgCodes, String syncOption, String fullPath, String dataSourceCode) {
DirectiveMQDto directiveMQDto = new DirectiveMQDto(); DirectiveMQDto directiveMQDto = new DirectiveMQDto();
List<ConfigServiceDirective> directives; List<ConfigServiceDirective> directives;
List<String> directiveIds = Arrays.asList(syncIds.split(",")); List<String> directiveIds = Arrays.asList(syncIds.split(","));
@ -419,13 +434,17 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
directives = baseMapper.pageList(null, param); directives = baseMapper.pageList(null, param);
if (directives != null && !directives.isEmpty()) { if (directives != null && !directives.isEmpty()) {
directives.stream().forEach(record -> { directives.stream().forEach(record -> {
//只同步业务字段的话清空指令资源字段的值 //清空指令资源字段的值
if ("business".equals(syncOption)) { if ("business".equals(syncOption)) {
record.setPreviewFile(null); record.setPreviewFile(null);
record.setImmediateFile(null); record.setImmediateFile(null);
record.setMp3File(null); record.setMp3File(null);
record.setMp4File(null); record.setMp4File(null);
record.setServiceContent(null); record.setServiceContent(null);
record.setPreviewFileMd5(null);
record.setImmediateFileMd5(null);
record.setMp3FileMd5(null);
record.setMp4FileMd5(null);
} }
List<DirectiveBodyTag> bodyTagList = record.getBodyTagList(); List<DirectiveBodyTag> bodyTagList = record.getBodyTagList();
@ -436,6 +455,12 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
}); });
} }
directiveMQDto.setDirectiveList(BeanUtil.copyToList(directives, DirectiveAsyncMQDto.class)); directiveMQDto.setDirectiveList(BeanUtil.copyToList(directives, DirectiveAsyncMQDto.class));
if ("all".equals(syncOption) || "media".equals(syncOption)) {
directiveMQDto.setIzSyncMedia(true);
directiveMQDto.getDirectiveList().stream().forEach(d -> {
d.setApi(fullPath);
});
}
} }
//分类标签 //分类标签
{ {
@ -477,7 +502,40 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl<ConfigService
} }
//给对应业务平台发送消息 //给对应业务平台发送消息
Arrays.stream(syncOrgCodes.split(",")).forEach(orgCode -> { Arrays.stream(syncOrgCodes.split(",")).forEach(orgCode -> {
AsyncMain asyncMain = new AsyncMain();
asyncMain.setType("directive");
asyncMain.setOrgCode(dataSourceCode);
asyncMain.setDescr("服务指令同步");
asyncMainService.saveData("master",asyncMain);
directiveMQDto.setAsyncId(asyncMain.getId());
AsyncStatus asyncStatus_data = new AsyncStatus();
asyncStatus_data.setPkid(asyncMain.getId());
asyncStatus_data.setCode("data");
asyncStatus_data.setName("数据");
asyncStatus_data.setStatus(MQStatus.LOADING.getCode() + "");
asyncStatus_data.setMsg("同步中");
asyncStatus_data.setTargetOrgCode(orgCode);
asyncStatusService.saveData("master",asyncStatus_data);
if ("all".equals(syncOption) || "media".equals(syncOption)) {
AsyncStatus asyncStatus_file = new AsyncStatus();
asyncStatus_file.setPkid(asyncMain.getId());
asyncStatus_file.setCode("file");
asyncStatus_file.setName("文件");
asyncStatus_file.setStatus(MQStatus.LOADING.getCode() + "");
asyncStatus_file.setMsg("同步中");
asyncStatus_file.setTargetOrgCode(orgCode);
asyncStatusService.saveData("master",asyncStatus_file);
}
rabbitMQUtil.sendToExchange("hldy.directive", orgCode + ".directive.syncDirective", directiveMQDto); rabbitMQUtil.sendToExchange("hldy.directive", orgCode + ".directive.syncDirective", directiveMQDto);
}); });
return directiveMQDto;
}
@DS("dataSourceCode")
@Override
public JSONObject getDeptInfo(String dataSourceCode,String orgCode) {
return sysBaseAPI.getOrgInfo(orgCode);
} }
} }

View File

@ -60,6 +60,10 @@ public class SysDepartEntity implements Serializable {
* 协议+域名 * 协议+域名
*/ */
private String url; private String url;
/**
* 项目访问路径
*/
private String contextPath;
/** /**
* 省份 * 省份
*/ */

View File

@ -80,6 +80,10 @@ public class SysDepart implements Serializable {
*/ */
@Excel(name = "协议+域名", width = 30) @Excel(name = "协议+域名", width = 30)
private String url; private String url;
/**
* 项目访问路径
*/
private String contextPath;
/** /**
* 省份 * 省份
*/ */
@ -246,6 +250,7 @@ public class SysDepart implements Serializable {
Objects.equals(orgType, depart.orgType) && Objects.equals(orgType, depart.orgType) &&
Objects.equals(orgCode, depart.orgCode) && Objects.equals(orgCode, depart.orgCode) &&
Objects.equals(url, depart.url) && Objects.equals(url, depart.url) &&
Objects.equals(contextPath, depart.contextPath) &&
Objects.equals(province, depart.province) && Objects.equals(province, depart.province) &&
Objects.equals(city, depart.city) && Objects.equals(city, depart.city) &&
Objects.equals(district, depart.district) && Objects.equals(district, depart.district) &&
@ -274,7 +279,7 @@ public class SysDepart implements Serializable {
public int hashCode() { public int hashCode() {
return Objects.hash(super.hashCode(), id, parentId, departName, return Objects.hash(super.hashCode(), id, parentId, departName,
departNameEn, departNameAbbr, departOrder, description, orgCategory, departNameEn, departNameAbbr, departOrder, description, orgCategory,
orgType, orgCode, url, province, city, district, operationStartTime, orgType, orgCode, url,contextPath, province, city, district, operationStartTime,
operationEndTime, contractStartTime, contractEndTime, mobile, fax, address, memo, status, operationEndTime, contractStartTime, contractEndTime, mobile, fax, address, memo, status,
delFlag, createBy, createTime, updateBy, updateTime, tenantId, payableAmount); delFlag, createBy, createTime, updateBy, updateTime, tenantId, payableAmount);
} }

View File

@ -67,6 +67,8 @@ public class SysDepartTreeModel implements Serializable {
private String url; private String url;
private String contextPath;
private String province; private String province;
private String city; private String city;
@ -138,6 +140,7 @@ public class SysDepartTreeModel implements Serializable {
this.orgType = sysDepart.getOrgType(); this.orgType = sysDepart.getOrgType();
this.orgCode = sysDepart.getOrgCode(); this.orgCode = sysDepart.getOrgCode();
this.url = sysDepart.getUrl(); this.url = sysDepart.getUrl();
this.contextPath = sysDepart.getContextPath();
this.province = sysDepart.getProvince(); this.province = sysDepart.getProvince();
this.city = sysDepart.getCity(); this.city = sysDepart.getCity();
this.district = sysDepart.getDistrict(); this.district = sysDepart.getDistrict();
@ -486,6 +489,14 @@ public class SysDepartTreeModel implements Serializable {
this.url = url; this.url = url;
} }
public String getContextPath() {
return contextPath;
}
public void setContextPath(String contextPath) {
this.contextPath = contextPath;
}
/** /**
* 重写equals方法 * 重写equals方法
*/ */
@ -510,6 +521,7 @@ public class SysDepartTreeModel implements Serializable {
Objects.equals(orgType, model.orgType) && Objects.equals(orgType, model.orgType) &&
Objects.equals(orgCode, model.orgCode) && Objects.equals(orgCode, model.orgCode) &&
Objects.equals(url, model.url) && Objects.equals(url, model.url) &&
Objects.equals(contextPath, model.contextPath) &&
Objects.equals(province, model.province) && Objects.equals(province, model.province) &&
Objects.equals(city, model.city) && Objects.equals(city, model.city) &&
Objects.equals(district, model.district) && Objects.equals(district, model.district) &&
@ -540,7 +552,7 @@ public class SysDepartTreeModel implements Serializable {
public int hashCode() { public int hashCode() {
return Objects.hash(id, parentId, platType, departName, departNameEn, departNameAbbr, return Objects.hash(id, parentId, platType, departName, departNameEn, departNameAbbr,
departOrder, description, orgCategory, orgType, orgCode, url, province, city, district, departOrder, description, orgCategory, orgType, orgCode, url, contextPath, province, city, district,
operationStartTime, operationEndTime, contractStartTime, contractEndTime, operationStartTime, operationEndTime, contractStartTime, contractEndTime,
mobile, fax, address, memo, status, delFlag, qywxIdentifier, mobile, fax, address, memo, status, delFlag, qywxIdentifier,
createBy, createTime, updateBy, updateTime, children, directorUserIds, payableAmount); createBy, createTime, updateBy, updateTime, children, directorUserIds, payableAmount);

View File

@ -1917,6 +1917,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
map.put("code",list.get(0).getOrgCode()); map.put("code",list.get(0).getOrgCode());
map.put("name",list.get(0).getDepartName()); map.put("name",list.get(0).getDepartName());
map.put("url",list.get(0).getUrl()); map.put("url",list.get(0).getUrl());
map.put("contextPath",list.get(0).getContextPath());
} }
return new JSONObject(map); return new JSONObject(map);
} }