diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgAllInfo.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgAllInfo.java index fdd29ce..76c36eb 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgAllInfo.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/orgapplyinfo/entity/OrgAllInfo.java @@ -31,6 +31,10 @@ public class OrgAllInfo implements Serializable { * 协议+域名 */ private String url; + /** + * 协议+域名 + */ + private String contextPath; /** * 省份 */ diff --git a/nursing-unit-common/src/main/java/com/nu/dto/DirectiveAsyncMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/DirectiveAsyncMQDto.java index 549a543..897bf26 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/DirectiveAsyncMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/DirectiveAsyncMQDto.java @@ -153,5 +153,6 @@ public class DirectiveAsyncMQDto implements Serializable { //情绪标签json字符串(有id、label) private String emotionTagsObj; - + //资源请求接口域名+项目上下文路径 + private String api; } diff --git a/nursing-unit-common/src/main/java/com/nu/dto/DirectiveMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/DirectiveMQDto.java index 5116c58..d934bef 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/DirectiveMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/DirectiveMQDto.java @@ -28,4 +28,6 @@ public class DirectiveMQDto { private List bodyTagList; //情绪标签字典项 private List emotionTagList; + //是否同步指令资源 + private boolean izSyncMedia; } diff --git a/nursing-unit-common/src/main/java/com/nu/modules/async/entity/AsyncStatus.java b/nursing-unit-common/src/main/java/com/nu/modules/async/entity/AsyncStatus.java index fc86a99..171b1e9 100644 --- a/nursing-unit-common/src/main/java/com/nu/modules/async/entity/AsyncStatus.java +++ b/nursing-unit-common/src/main/java/com/nu/modules/async/entity/AsyncStatus.java @@ -3,6 +3,7 @@ package com.nu.modules.async.entity; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -57,4 +58,11 @@ public class AsyncStatus implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新日期") private java.util.Date updateTime; + /**目标机构编码*/ + @Excel(name = "目标机构编码", width = 15) + @ApiModelProperty(value = "目标机构编码") + private java.lang.String targetOrgCode; + //目标机构名称 + @TableField(exist = false) + private String zOrgName; } diff --git a/nursing-unit-common/src/main/java/com/nu/modules/async/mapper/xml/AsyncMainMapper.xml b/nursing-unit-common/src/main/java/com/nu/modules/async/mapper/xml/AsyncMainMapper.xml index 48717db..d79193a 100644 --- a/nursing-unit-common/src/main/java/com/nu/modules/async/mapper/xml/AsyncMainMapper.xml +++ b/nursing-unit-common/src/main/java/com/nu/modules/async/mapper/xml/AsyncMainMapper.xml @@ -18,6 +18,8 @@ + + @@ -26,7 +28,7 @@ f.id as id, f.primary_key as primaryKey, f.org_code as orgCode, - f.org_name as orgName, + md.depart_name as orgName, f.type as type, f.descr as descr, f.create_by as createBy, @@ -36,9 +38,13 @@ z.name as zname, z.status as zstatus, 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 + 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 sys_depart sd on z.target_org_code = sd.org_code f.id in diff --git a/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncMainService.java b/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncMainService.java index 9ae6fda..588bcb1 100644 --- a/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncMainService.java +++ b/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncMainService.java @@ -17,4 +17,6 @@ public interface IAsyncMainService extends IService { List pageList(List records, AsyncMain dto); Map> listByType(AsyncMain am); + + void saveData(String dataSourceCode,AsyncMain asyncMain); } diff --git a/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncStatusService.java b/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncStatusService.java index aa6a2c4..7093445 100644 --- a/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncStatusService.java +++ b/nursing-unit-common/src/main/java/com/nu/modules/async/service/IAsyncStatusService.java @@ -1,6 +1,8 @@ package com.nu.modules.async.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.nu.modules.async.entity.AsyncMain; +import com.nu.modules.async.entity.AsyncStatus; /** * @Description: 数据同步子表-状态记录表 @@ -9,5 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; * @Version: V1.0 */ public interface IAsyncStatusService extends IService { - + void saveData(String dataSourceCode,AsyncStatus asyncStatus); } diff --git a/nursing-unit-common/src/main/java/com/nu/modules/async/service/impl/AsyncMainServiceImpl.java b/nursing-unit-common/src/main/java/com/nu/modules/async/service/impl/AsyncMainServiceImpl.java index c948639..f483ed1 100644 --- a/nursing-unit-common/src/main/java/com/nu/modules/async/service/impl/AsyncMainServiceImpl.java +++ b/nursing-unit-common/src/main/java/com/nu/modules/async/service/impl/AsyncMainServiceImpl.java @@ -1,6 +1,7 @@ package com.nu.modules.async.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import com.nu.enums.MQStatus; @@ -75,4 +76,10 @@ public class AsyncMainServiceImpl extends ServiceImpl implements com.nu.modules.async.service.IAsyncStatusService { + @Override + @DS("dataSourceCode") + public void saveData(String dataSourceCode,AsyncStatus asyncStatus) { + baseMapper.insert(asyncStatus); + } } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java index 4df54fd..8ca75b8 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java @@ -1,5 +1,6 @@ package com.nu.modules.servicedirective.controller; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; 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.beust.jcommander.internal.Maps; 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.emotion.entity.DirectiveEmotionTag; import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.nu.modules.servicedirective.entity.DirectiveSyncDto; import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService; @@ -394,29 +398,63 @@ public class ConfigServiceDirectiveController extends JeecgController syncDirective(@RequestParam(name = "dataSourceCode") String dataSourceCode,@RequestBody DirectiveSyncDto dto) { + public Result 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()); - //给新增的指令同步指令资源 - if ("all".equals(dto.getSyncOption()) || "media".equals(dto.getSyncOption())) { + configServiceDirectiveService.syncDirective(dto.getSyncIds(), dto.getSyncOrgCodes(), dto.getSyncOption(),fullPath,dataSourceCode); - } - - //同步 - 更新指令资源字段 + //给待更新的指令 if (StringUtils.isNotBlank(dto.getUpIds())) { - + DirectiveMQDto upDirectiveMQDto = new DirectiveMQDto(); + List directives; + { + List 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 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(); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java index c64c2c4..764c7d7 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java @@ -1,8 +1,9 @@ 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.extension.service.IService; +import com.nu.dto.DirectiveMQDto; import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import java.util.List; @@ -62,5 +63,9 @@ public interface IConfigServiceDirectiveService extends IService pageList(List param); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java index 46d0c3e..265bc70 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java @@ -1,12 +1,18 @@ package com.nu.modules.servicedirective.service.impl; import cn.hutool.core.bean.BeanUtil; +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.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.service.IDirectiveBodyTagService; import com.nu.modules.directivetag.emotion.entity.DirectiveEmotionTag; @@ -69,6 +75,10 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl pageList(ConfigServiceDirective configServiceDirective, IPage list_) { @@ -400,12 +410,17 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl pageList(List param) { + return baseMapper.pageList(null, param); + } + /** * @param syncIds 需要同步的指令ID * @param syncOrgCodes 需要同步的目标平台orgCode */ @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(); List directives; List directiveIds = Arrays.asList(syncIds.split(",")); @@ -419,13 +434,17 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl { - //只同步业务字段的话清空指令资源字段的值 + //清空指令资源字段的值 if ("business".equals(syncOption)) { record.setPreviewFile(null); record.setImmediateFile(null); record.setMp3File(null); record.setMp4File(null); record.setServiceContent(null); + record.setPreviewFileMd5(null); + record.setImmediateFileMd5(null); + record.setMp3FileMd5(null); + record.setMp4FileMd5(null); } List bodyTagList = record.getBodyTagList(); @@ -436,6 +455,12 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl { + d.setApi(fullPath); + }); + } } //分类标签 { @@ -477,7 +502,40 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl { + 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); }); + return directiveMQDto; + } + + @DS("dataSourceCode") + @Override + public JSONObject getDeptInfo(String dataSourceCode,String orgCode) { + return sysBaseAPI.getOrgInfo(orgCode); } } diff --git a/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/entity/SysDepartEntity.java b/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/entity/SysDepartEntity.java index 4e49c34..9f8d8b2 100644 --- a/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/entity/SysDepartEntity.java +++ b/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/entity/SysDepartEntity.java @@ -60,6 +60,10 @@ public class SysDepartEntity implements Serializable { * 协议+域名 */ private String url; + /** + * 项目访问路径 + */ + private String contextPath; /** * 省份 */ diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java index e8ec61b..e05e0d1 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java @@ -80,6 +80,10 @@ public class SysDepart implements Serializable { */ @Excel(name = "协议+域名", width = 30) private String url; + /** + * 项目访问路径 + */ + private String contextPath; /** * 省份 */ @@ -246,6 +250,7 @@ public class SysDepart implements Serializable { Objects.equals(orgType, depart.orgType) && Objects.equals(orgCode, depart.orgCode) && Objects.equals(url, depart.url) && + Objects.equals(contextPath, depart.contextPath) && Objects.equals(province, depart.province) && Objects.equals(city, depart.city) && Objects.equals(district, depart.district) && @@ -274,7 +279,7 @@ public class SysDepart implements Serializable { public int hashCode() { return Objects.hash(super.hashCode(), id, parentId, departName, 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, delFlag, createBy, createTime, updateBy, updateTime, tenantId, payableAmount); } diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java index b234e58..3af3251 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java @@ -67,6 +67,8 @@ public class SysDepartTreeModel implements Serializable { private String url; + private String contextPath; + private String province; private String city; @@ -138,6 +140,7 @@ public class SysDepartTreeModel implements Serializable { this.orgType = sysDepart.getOrgType(); this.orgCode = sysDepart.getOrgCode(); this.url = sysDepart.getUrl(); + this.contextPath = sysDepart.getContextPath(); this.province = sysDepart.getProvince(); this.city = sysDepart.getCity(); this.district = sysDepart.getDistrict(); @@ -486,6 +489,14 @@ public class SysDepartTreeModel implements Serializable { this.url = url; } + public String getContextPath() { + return contextPath; + } + + public void setContextPath(String contextPath) { + this.contextPath = contextPath; + } + /** * 重写equals方法 */ @@ -510,6 +521,7 @@ public class SysDepartTreeModel implements Serializable { Objects.equals(orgType, model.orgType) && Objects.equals(orgCode, model.orgCode) && Objects.equals(url, model.url) && + Objects.equals(contextPath, model.contextPath) && Objects.equals(province, model.province) && Objects.equals(city, model.city) && Objects.equals(district, model.district) && @@ -540,7 +552,7 @@ public class SysDepartTreeModel implements Serializable { public int hashCode() { 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, mobile, fax, address, memo, status, delFlag, qywxIdentifier, createBy, createTime, updateBy, updateTime, children, directorUserIds, payableAmount); diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index 97aae31..a49ecdf 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -1917,6 +1917,7 @@ public class SysBaseApiImpl implements ISysBaseAPI { map.put("code",list.get(0).getOrgCode()); map.put("name",list.get(0).getDepartName()); map.put("url",list.get(0).getUrl()); + map.put("contextPath",list.get(0).getContextPath()); } return new JSONObject(map); }