From 050a9fa253edaa7e20ac6fe0c6f621f153b75b57 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Fri, 9 May 2025 11:27:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AsyncMainServiceImpl.java | 18 +++-- .../jeecg/modules/system/entity/SysDict.java | 3 + .../service/impl/SysDictServiceImpl.java | 68 +++++++++++++++---- .../mq/dict/listener/DictMQListener.java | 11 ++- 4 files changed, 76 insertions(+), 24 deletions(-) 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 a3773ba..de8f83e 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 @@ -37,9 +37,10 @@ public class AsyncMainServiceImpl extends ServiceImpl> listByType(AsyncMain am) { Map> result = Maps.newHashMap(); - List errorList = Lists.newArrayList(); - List processingList = Lists.newArrayList(); - List successList = Lists.newArrayList(); + List errorList = Lists.newArrayList();//异常 + List pendingList = Lists.newArrayList();//同步中 + List successList = Lists.newArrayList();//成功 + List processingList = Lists.newArrayList();//待同步 List depts = sysBaseAPI.queryOpeDept(); @@ -51,7 +52,9 @@ public class AsyncMainServiceImpl extends ServiceImpl { if ((MQStatus.SUCCESS.getCode() + "").equals(a.getStatus())) { successList.add(a); - } else { + } else if("100".equals(a.getStatus())){ + processingList.add(a); + }else{ errorList.add(a); } depts.removeIf(dept -> a.getOrgCode().equals(dept.getString("code"))); @@ -61,13 +64,14 @@ public class AsyncMainServiceImpl extends ServiceImpl impl @Lazy @Autowired private IAsyncMainService asyncMainService; + @Autowired + private ISysDepartService departService; @Lazy @Autowired @@ -281,9 +285,9 @@ public class SysDictServiceImpl extends ServiceImpl impl code = SqlInjectionUtil.getSqlInjectField(code); List dictModels = Lists.newArrayList(); int existIzEnabled = sysDictMapper.existColumn(table, "iz_enabled"); - if(existIzEnabled>0){ + if (existIzEnabled > 0) { dictModels = sysDictMapper.queryTableDictWithFilter(table, text, code, filterSql, "1"); - }else{ + } else { dictModels = sysDictMapper.queryTableDictWithFilter(table, text, code, filterSql, null); } return dictModels; @@ -313,9 +317,9 @@ public class SysDictServiceImpl extends ServiceImpl impl code = SqlInjectionUtil.getSqlInjectField(code); List dictModels = Lists.newArrayList(); int existIzEnabled = sysDictMapper.existColumn(table, "iz_enabled"); - if(existIzEnabled>0){ + if (existIzEnabled > 0) { dictModels = sysDictMapper.queryTableDictWithFilter(table, text, code, filterSql, "1"); - }else{ + } else { dictModels = sysDictMapper.queryTableDictWithFilter(table, text, code, filterSql, null); } return dictModels; @@ -555,10 +559,10 @@ public class SysDictServiceImpl extends ServiceImpl impl // 3. 返回表字典数据 IPage pageList = new Page<>(); int existIzEnabled = sysDictMapper.existColumn(table, "iz_enabled"); - if(existIzEnabled>0){ - pageList = baseMapper.queryPageTableDictWithFilter(page,table, text, code, filterSql, "1"); - }else{ - pageList = baseMapper.queryPageTableDictWithFilter(page,table, text, code, filterSql, null); + if (existIzEnabled > 0) { + pageList = baseMapper.queryPageTableDictWithFilter(page, table, text, code, filterSql, "1"); + } else { + pageList = baseMapper.queryPageTableDictWithFilter(page, table, text, code, filterSql, null); } return pageList.getRecords(); } @@ -653,9 +657,9 @@ public class SysDictServiceImpl extends ServiceImpl impl code = SqlInjectionUtil.getSqlInjectField(code); List ls = Lists.newArrayList(); int existIzEnabled = sysDictMapper.existColumn(table, "iz_enabled"); - if(existIzEnabled>0){ + if (existIzEnabled > 0) { ls = baseMapper.queryTableDictWithFilter(table, text, code, filterSql, "1"); - }else{ + } else { ls = baseMapper.queryTableDictWithFilter(table, text, code, filterSql, null); } return ls; @@ -713,13 +717,13 @@ public class SysDictServiceImpl extends ServiceImpl impl } @Override - public List queryDeleteList(String tenantId,String tag) { + public List queryDeleteList(String tenantId, String tag) { //update-begin---author:wangshuai---date:2024-02-27---for:【QQYUN-8340】回收站查找软删除记录时,没有判断是否启用多租户,造成可以查找并回收其他租户的数据 #5907--- if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) { if (oConvertUtils.isEmpty(tenantId)) { return new ArrayList<>(); } - return baseMapper.queryDeleteListBtTenantId(oConvertUtils.getInt(tenantId),tag); + return baseMapper.queryDeleteListBtTenantId(oConvertUtils.getInt(tenantId), tag); } //update-end---author:wangshuai---date:2024-02-27---for:【QQYUN-8340】回收站查找软删除记录时,没有判断是否启用多租户,造成可以查找并回收其他租户的数据 #5907--- return baseMapper.queryDeleteList(tag); @@ -908,17 +912,51 @@ public class SysDictServiceImpl extends ServiceImpl impl @Override public void async(SysDict sysDict) { + QueryWrapper sysDepartQueryWrapper = new QueryWrapper<>(); + sysDepartQueryWrapper.eq("org_category", "1"); + sysDepartQueryWrapper.eq("del_flag", "0"); + if (StringUtils.isNotBlank(sysDict.getOrgCode())) { + sysDepartQueryWrapper.eq("org_code", sysDict.getOrgCode()); + } + List depts = departService.list(sysDepartQueryWrapper); + + List ams = Lists.newArrayList(); + List orgCodes = Lists.newArrayList(); + if (depts != null && !depts.isEmpty()) { + depts.stream().forEach(d -> { + AsyncMain asyncMain = new AsyncMain(); + asyncMain.setPrimaryKey(sysDict.getId()); + asyncMain.setStatus("100"); + asyncMain.setOrgCode(d.getOrgCode()); + asyncMain.setOrgName(d.getDepartName()); + asyncMain.setDescr("同步中(如果同步时间过久,请检查该业务系统是否正确配置机构编码)"); + ams.add(asyncMain); + orgCodes.add(d.getOrgCode()); + }); + } + QueryWrapper asyncMainQueryWrapper = new QueryWrapper<>(); - asyncMainQueryWrapper.eq("primary_key",sysDict.getId()); + asyncMainQueryWrapper.eq("primary_key", sysDict.getId()); + if (StringUtils.isNotBlank(sysDict.getOrgCode())) { + asyncMainQueryWrapper.eq("org_code", sysDict.getOrgCode()); + } else { + asyncMainQueryWrapper.in("org_code", orgCodes); + } asyncMainService.remove(asyncMainQueryWrapper); + asyncMainService.saveBatch(ams); + SysDict sd = baseMapper.selectById(sysDict.getId()); List sysDictItems = sysDictItemMapper.selectItemsByMainId(sysDict.getId()); SysDictMQDto sysDictMQDto = new SysDictMQDto(); - BeanUtils.copyProperties(sd,sysDictMQDto); + BeanUtils.copyProperties(sd, sysDictMQDto); sysDictMQDto.setSysDictItemList(BeanUtil.copyToList(sysDictItems, SysDictItemMQDto.class)); - rabbitMQUtil.sendToExchange("hldy.sysdict.fanout","",sysDictMQDto); + if (StringUtils.isNotBlank(sysDict.getOrgCode())) { + rabbitMQUtil.sendToExchange("hldy.sysdict.direct", sysDict.getOrgCode() + ".dict.async", sysDictMQDto); + } else { + rabbitMQUtil.sendToExchange("hldy.sysdict.fanout", "", sysDictMQDto); + } } /** diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java index f2cf07b..ece03dd 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java @@ -1,5 +1,6 @@ package org.jeecg.mq.dict.listener; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nu.dto.StatusMQDto; import com.nu.modules.async.entity.AsyncMain; import com.nu.modules.async.service.IAsyncMainService; @@ -8,6 +9,8 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; + @Slf4j @Component public class DictMQListener { @@ -19,11 +22,15 @@ public class DictMQListener { public void handleMessage(StatusMQDto dto) { AsyncMain asyncMain = new AsyncMain(); asyncMain.setPrimaryKey(dto.getDictId()); - asyncMain.setStatus(dto.getStatus()+""); + asyncMain.setStatus(dto.getStatus() + ""); asyncMain.setOrgCode(dto.getOrgCode()); asyncMain.setOrgName(dto.getOrgName()); asyncMain.setDescr(dto.getMessage()); - asyncMainService.save(asyncMain); + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("primary_key",asyncMain.getPrimaryKey()); + qw.eq("org_code",asyncMain.getOrgCode()); + asyncMainService.update(asyncMain,qw); } }