Compare commits

..

No commits in common. "8f5bbae95018d545eb2005bc8769794fdf260dcc" and "9d52c53c8dc1837dd8efa85353ed22d926acd604" have entirely different histories.

11 changed files with 53 additions and 190 deletions

View File

@ -32,13 +32,6 @@ import java.util.Map;
public class DockingAspect { public class DockingAspect {
@Autowired @Autowired
private DockSendMessageService sendMessageService; private DockSendMessageService sendMessageService;
@Value("${mq.csy.data.topic}")
private String csyDataDocking;
@Value("${mq.cmt.data.topic}")
private String cmtDataDocking;
@Value("${mq.czks.data.topic}")
private String czksDataDocking;
@Value("${baseimgpath}") @Value("${baseimgpath}")
public String baseimgpath; public String baseimgpath;
@Pointcut("@annotation(com.zcloud.aspect.DockAnnotation)") @Pointcut("@annotation(com.zcloud.aspect.DockAnnotation)")
@ -111,27 +104,9 @@ public class DockingAspect {
tenCorpDto.setProducer_name("qa-prevention-czks"); tenCorpDto.setProducer_name("qa-prevention-czks");
// 有dockData // 有dockData
if (Tools.notEmpty(proceed.get("dockData"))) { if (Tools.notEmpty(proceed.get("dockData"))) {
String dockData = proceed.get("dockData"); sendData.put("dockData", proceed.get("dockData"));
PageData dockDataMap = JSON.parseObject(dockData, PageData.class);
sendData.put("dockData",dockData);
// 操作企业
if ("f8da1790b1034058ae2efefd69af3284".contains(dockDataMap.getString("operatingCorpId"))
|| "016d19225e9d4ece863cce8a256a3e72".contains(dockDataMap.getString("operatingCorpId"))
|| "1".equals(dockDataMap.getString("sendAllCorp"))
){
tenCorpDto.setTopic(czksDataDocking);
sendMessageService.sendMessage(tenCorpDto);
}
// todo先不给其他两家发送消息上线前打开
if ("8854edee3aa94be496cee676b6d4845a".equals(dockDataMap.getString("operatingCorpId")) || "1".equals(dockDataMap.getString("sendAllCorp"))){
tenCorpDto.setTopic(csyDataDocking);
sendMessageService.sendMessage(tenCorpDto);
}
if ("6aa255d41602497fa0f934a822820df4".equals(dockDataMap.getString("operatingCorpId")) || "1".equals(dockDataMap.getString("sendAllCorp"))){
tenCorpDto.setTopic(cmtDataDocking);
sendMessageService.sendMessage(tenCorpDto);
}
proceed.remove("dockData"); proceed.remove("dockData");
sendMessageService.sendMessage(tenCorpDto);
} else { } else {
System.out.println("------------------------无dockData不发消息------------------------"); System.out.println("------------------------无dockData不发消息------------------------");
} }

View File

@ -108,7 +108,6 @@ public class TextLibraryController extends BaseController {
} }
if (StringUtils.isEmpty(pd.getString("CORPINFO_ID")))pd.put("CORPINFO_ID",Jurisdiction.getCORPINFO_ID()); if (StringUtils.isEmpty(pd.getString("CORPINFO_ID")))pd.put("CORPINFO_ID",Jurisdiction.getCORPINFO_ID());
if ("3".equals(pd.getString("ASSOCIATION"))) { if ("3".equals(pd.getString("ASSOCIATION"))) {
pd.put("TYPE_ONE", "43ed4012090d4614bb35da60d06c8264"); pd.put("TYPE_ONE", "43ed4012090d4614bb35da60d06c8264");
pd.put("plan",pd.getString("CATEGORY_ID")); pd.put("plan",pd.getString("CATEGORY_ID"));
@ -125,11 +124,6 @@ public class TextLibraryController extends BaseController {
} }
pd.put("STATUS","1"); pd.put("STATUS","1");
// 标准规范库特殊处理
if ("~".equals(pd.getString("CORPINFO_ID"))) {
pd.put("CORPINFO_ID", null);
pd.put("STATUS", null);
}
page.setPd(pd); page.setPd(pd);
List<PageData> varList = textlibraryService.list(page); List<PageData> varList = textlibraryService.list(page);

View File

@ -2,7 +2,6 @@ package com.zcloud.dto;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.zcloud.entity.PageData; import com.zcloud.entity.PageData;
import com.zcloud.util.Warden;
import lombok.Data; import lombok.Data;
@Data @Data
@ -24,10 +23,6 @@ public class TenCorpDto {
// 消息体 // 消息体
private PageData data; private PageData data;
private String messageLogId;
private String CREATE_TIME;
public TenCorpDto() { public TenCorpDto() {
this.id = Warden.get32UUID(); this.id = Warden.get32UUID();
} }
@ -45,9 +40,6 @@ public class TenCorpDto {
info.put("MARK_NAME", this.mark_name); info.put("MARK_NAME", this.mark_name);
info.put("MESSAGE", this.message); info.put("MESSAGE", this.message);
info.put("TOPIC",this.topic); info.put("TOPIC",this.topic);
info.put("DATA", JSON.toJSONString(this.data));
info.put("CREATE_TIME", this.CREATE_TIME);
info.put("MESSAGE_LOG_ID", this.messageLogId);
return info; return info;
} }
} }

View File

@ -54,10 +54,6 @@ public class TextLibraryServiceImpl implements TextLibraryService {
@Value("${heBeiQinAnFile}") @Value("${heBeiQinAnFile}")
private String heBeiQinAnFile; private String heBeiQinAnFile;
@Value("${biaoZhunShuJuKu}")
private String biaoZhunShuJuKu;
/** /**
* *
* *
@ -111,12 +107,8 @@ public class TextLibraryServiceImpl implements TextLibraryService {
} }
// 如果是迁移数据就用河北秦安的路径 // 如果是迁移数据就用河北秦安的路径
for (PageData entity : list) { for (PageData entity : list) {
String url = entity.getString("PATH"); if(!"1".equals(entity.getString("MIGRATION_FLAG"))){
if (!"1".equals(entity.getString("MIGRATION_FLAG"))) { entity.put("PATH",heBeiQinAnFile + entity.getString("PATH"));
entity.put("PATH", heBeiQinAnFile + url);
}
if ("2".equals(entity.getString("MIGRATION_FLAG"))) {
entity.put("PATH", biaoZhunShuJuKu + url);
} }
} }
return list; return list;

View File

@ -26,13 +26,6 @@ public class DockSendMessageServiceImpl implements DockSendMessageService {
private String gwjDataTopic; private String gwjDataTopic;
@Value("${mq.gwj.file.topic}") @Value("${mq.gwj.file.topic}")
private String gwjFileTopic; private String gwjFileTopic;
@Value("${mq.csy.data.topic}")
private String csyDataDocking;
@Value("${mq.cmt.data.topic}")
private String cmtDataDocking;
@Value("${mq.czks.data.topic}")
private String czksDataDocking;
@Resource @Resource
private RocketMQTemplate rocketMQTemplate; private RocketMQTemplate rocketMQTemplate;
@ -47,32 +40,14 @@ public class DockSendMessageServiceImpl implements DockSendMessageService {
@Override @Override
public void sendMessage(TenCorpDto tenCorpDto) throws Exception { public void sendMessage(TenCorpDto tenCorpDto) throws Exception {
PageData productionPD = new PageData();
productionPD.put("PRODUCTION_ID", Warden.get32UUID());
productionPD.put("MESSAGE_LOG_ID", tenCorpDto.getMessageLogId() == null ? "" : tenCorpDto.getMessageLogId());
productionPD.put("PRODUCTION_TYPE", "gwj-DockSendMessageServiceImpl.sendMessage(TenCorpDto tenCorpDto)");
productionPD.put("PRODUCTION_TIME", DateUtil.getTime());
productionPD.put("CREATE_TIME", tenCorpDto.getCREATE_TIME() == null ? "" : tenCorpDto.getCREATE_TIME());
productionPD.put("MARK", tenCorpDto.getMark() == null ? "" : tenCorpDto.getMark());
productionPD.put("DATA", tenCorpDto.getData() == null ? "" : tenCorpDto.getData().toString());
try { try {
PageData log = tenCorpDto.getPd(); PageData log = tenCorpDto.getPd();
log.put("MESSAGE_LOG_ID", Warden.get32UUID()); log.put("MESSAGE_LOG_ID", Warden.get32UUID());
log.put("CREATE_TIME", DateUtil.getTime()); log.put("CREATE_TIME", DateUtil.getTime());
mqMessageLogMapper.save(log); mqMessageLogMapper.save(log);
System.out.println("生产者:" + tenCorpDto.toString()); System.out.println("生产者:" + tenCorpDto.toString());
SendResult sendResult = null; SendResult sendResult = rocketMQTemplate.syncSend(this.gwjDataTopic, tenCorpDto.toString());
// 曹煤炭 后期是 三家 if (!sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
if (tenCorpDto.getTopic().equals(czksDataDocking)) {
sendResult = rocketMQTemplate.syncSend(this.czksDataDocking, tenCorpDto.toString());
}
if (tenCorpDto.getTopic().equals(cmtDataDocking)) {
sendResult = rocketMQTemplate.syncSend(this.cmtDataDocking, tenCorpDto.toString());
}
if (tenCorpDto.getTopic().equals(csyDataDocking)) {
sendResult = rocketMQTemplate.syncSend(this.csyDataDocking, tenCorpDto.toString());
}
if (sendResult != null && !sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
throw new RuntimeException("产品入栈失败"); throw new RuntimeException("产品入栈失败");
} }
} catch (Exception e) { } catch (Exception e) {

View File

@ -992,24 +992,37 @@ public class XgfUserServiceImpl implements XgfUserService {
@Override @Override
public void repulse(PageData flows, XgfFlowDto info) throws Exception { public void repulse(PageData flows, XgfFlowDto info) throws Exception {
PageData condition = new PageData(); // add by liu jun 相关方可指定打回至指定节点 -1 为默认打回至相关方端
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID")); if ("-1".equals(info.getBACK_STEP())){
PageData entity = xgfUserMapper.findById(condition); PageData condition = new PageData();
entity.put("STATUS", "0"); condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
entity.put("VALID_FLAG", "0"); PageData entity = xgfUserMapper.findById(condition);
entity.put("CHECK_STATUS", "-2"); entity.put("STATUS", "0");
PageData key = new PageData(); entity.put("VALID_FLAG", "0");
key.putAll(entity); entity.put("CHECK_STATUS", "-2");
key.put("USER_ID", condition.get("XGF_USER_ID")); PageData key = new PageData();
key.put("STATUS", "1"); key.putAll(entity);
key.put("OPINION", flows.get("OPINION")); key.put("USER_ID", condition.get("XGF_USER_ID"));
Map result = HttpClientService.doPost(prevention_xgf_url + "openApi/user/approve", key); key.put("STATUS", "1");
if (result == null || !"succeed".equals(result.get("result"))) { key.put("OPINION", flows.get("OPINION"));
throw new RuntimeException("请求失败"); Map result = HttpClientService.doPost(prevention_xgf_url + "openApi/user/approve", key);
if (result == null || !"succeed".equals(result.get("result"))) {
throw new RuntimeException("请求失败");
}
xgfUserMapper.edit(entity);
this.clearInfo(flows);
xgfFlowsMapper.edit(flows);
} else {
// 1、判断不能自己打回到自己
PageData condition = new PageData();
condition.put("FLOWS_ID",flows.getString("FLOWS_ID"));
PageData flowEntity = xgfFlowsMapper.findById(condition);
if (flowEntity != null && flowEntity.size() > 0 && flowEntity.getString("FLOWS_STEP").equals(info.getBACK_STEP())){
throw new RuntimeException("不能自己打回到自己");
}
flowEntity.put("FLOWS_STEP", info.getBACK_STEP());
xgfFlowsMapper.edit(flowEntity);
} }
xgfUserMapper.edit(entity);
this.clearInfo(flows);
xgfFlowsMapper.edit(flows);
} }
@Override @Override

View File

@ -2,12 +2,12 @@
datasource.no1.driver-class-name: com.mysql.cj.jdbc.Driver datasource.no1.driver-class-name: com.mysql.cj.jdbc.Driver
datasource.no1.url=jdbc:mysql://39.101.130.96:33068/qa-gwj-prevention?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8 datasource.no1.url=jdbc:mysql://39.101.130.96:33068/qa-gwj-prevention?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8
datasource.no1.username=dev datasource.no1.username=root
datasource.no1.password=Zykj@dev123456 datasource.no1.password=Mysql@zcloud88888
datasource.no2.driver-class-name: com.mysql.cj.jdbc.Driver datasource.no2.driver-class-name: com.mysql.cj.jdbc.Driver
datasource.no2.url=jdbc:mysql://39.101.130.96:33068/qa-gwj-regulatory?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8 datasource.no2.url=jdbc:mysql://39.101.130.96:33068/qa-gwj-regulatory?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8
datasource.no2.username=dev datasource.no2.username=root
datasource.no2.password=Zykj@dev123456 datasource.no2.password=Mysql@zcloud88888
#druid??? #druid???
@ -63,18 +63,18 @@ spring.main.banner-mode=off
preventionxgf.api.url=https://qgxgf.qhdsafety.com/qa-prevention-xgf/ preventionxgf.api.url=https://qgxgf.qhdsafety.com/qa-prevention-xgf/
qa-regulatory-gwj.api.url=https://qgjg.qhdsafety.com/qa-regulatory-gwj/ qa-regulatory-gwj.api.url=https://qgjg.qhdsafety.com/qa-regulatory-gwj/
#????? #?????
smb.host=39.101.130.96 smb.host=192.168.192.201
smb.port=22 smb.port=22
smb.user=root smb.user=root
smb.password=Zcloud@zcloud88888 smb.password=SJSKAQHBGLXT@20220311
smb.basePath=/mnt/wwag/file/ smb.basePath=/mnt/qask/file/
#Mq\u914D\u7F6E #Mq\u914D\u7F6E
rocketmq.consumer.group2=edu-admin-edit rocketmq.consumer.group2=edu-admin-edit
rocketmq.consumer.group1=edu-admin-add rocketmq.consumer.group1=edu-admin-add
#rocketmq.name-server=10.0.140.141:9876 #rocketmq.name-server=10.0.140.141:9876
#rocketmq.name-server=192.168.0.70:9876 #rocketmq.name-server=192.168.0.70:9876
rocketmq.name-server=192.168.0.2:9876 rocketmq.name-server=192.168.151.57:9876
rocketmq.producer.group=libmiddle rocketmq.producer.group=libmiddle
rocketmq.producer.send-message-timeout=3000 rocketmq.producer.send-message-timeout=3000
rocketmq.producer.compress-message-body-threshold=4096 rocketmq.producer.compress-message-body-threshold=4096
@ -95,28 +95,6 @@ corp.default.pic-path=https://qgqy.qhdsafety.com/
corp.default.back-end-path=https://qgqy.qhdsafety.com/file/ corp.default.back-end-path=https://qgqy.qhdsafety.com/file/
http.file.url=https://qgqy.qhdsafety.com/file/ http.file.url=https://qgqy.qhdsafety.com/file/
mq.csy.data.topic=csy_docking
mq.csy.data.group=scheduled_tasks_csy_docking
mq.csy.file.topic=csy_dockingPicture
mq.csy.file.group=scheduled_tasks_csy_dockingPicture
mq.cmt.data.topic=cmt_docking
mq.cmt.data.group=scheduled_tasks_cmt_docking
mq.cmt.file.topic=cmt_dockingPicture
mq.cmt.file.group=scheduled_tasks_cmt_dockingPicture
mq.czks.data.topic=czks_docking
mq.czks.data.group=scheduled_tasks_czks_docking
mq.czks.file.topic=czks_dockingPicture
mq.czks.file.group=scheduled_tasks_czks_dockingPicture
mq.gwj.data.topic=czks_docking
mq.gwj.file.topic=czks_dockingPicture
baseimgpath =http://192.168.192.201:8991/file/
heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
biaoZhunShuJuKu=https://file.zcloudchina.com/
dw.url=http://192.168.192.201:8888/qa-dingWei-gwj/
#<23>û<EFBFBD><C3BB><EFBFBD>ʶ #<23>û<EFBFBD><C3BB><EFBFBD>ʶ
# <20><><EFBFBD>ݿ<EFBFBD>ʯ # <20><><EFBFBD>ݿ<EFBFBD>ʯ

View File

@ -100,7 +100,6 @@ http.file.url=http://192.168.192.201:8991/file/
#河北秦安文件服务器前缀 #河北秦安文件服务器前缀
heBeiQinAnFile=https://file.zcloudchina.com/YTHFile heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
biaoZhunShuJuKu=https://file.zcloudchina.com/
liteflow.rule-source=flow.xml liteflow.rule-source=flow.xml
liteflow.print-execution-log=false liteflow.print-execution-log=false

View File

@ -2,11 +2,11 @@ spring.application.name=qa-prevention-gwj
server.port=8091 server.port=8091
#?? #??
spring.profiles.active=local #spring.profiles.active=local
#<23><><EFBFBD><EFBFBD>31ʱʹ<CAB1><CAB9> #<23><><EFBFBD><EFBFBD>31ʱʹ<CAB1><CAB9>
#spring.profiles.active=dev #spring.profiles.active=dev
#?? #??
#spring.profiles.active=master spring.profiles.active=master

View File

@ -32,14 +32,7 @@
f.STATUS, f.STATUS,
f.BUS_TEXT_LIBRARY_ID, f.BUS_TEXT_LIBRARY_ID,
f.MIGRATION_FLAG, f.MIGRATION_FLAG,
f.CORPINFO_ID, f.CORPINFO_ID
f.CODE_NAME,
f.PUBLISHES,
f.TEXT_NAME,
f.PUBLICATION_DATE,
f.IMPLEMENTATION_DATE,
f.TYPE_TWO,
f.TYPE_TWO_NAME
</sql> </sql>
<!-- 字段用于新增 --> <!-- 字段用于新增 -->
@ -61,15 +54,8 @@
ASSOCIATION, ASSOCIATION,
STATUS, STATUS,
BUS_TEXT_LIBRARY_ID, BUS_TEXT_LIBRARY_ID,
MIGRATION_FLAG,
CORPINFO_ID, CORPINFO_ID,
CODE_NAME, MIGRATION_FLAG
PUBLISHES,
TEXT_NAME,
PUBLICATION_DATE,
IMPLEMENTATION_DATE,
TYPE_TWO,
TYPE_TWO_NAME
</sql> </sql>
<!-- 字段值 --> <!-- 字段值 -->
@ -91,15 +77,8 @@
#{ASSOCIATION}, #{ASSOCIATION},
#{STATUS}, #{STATUS},
#{BUS_TEXT_LIBRARY_ID}, #{BUS_TEXT_LIBRARY_ID},
#{MIGRATION_FLAG},
#{CORPINFO_ID}, #{CORPINFO_ID},
#{CODE_NAME}, #{MIGRATION_FLAG}
#{PUBLISHES},
#{TEXT_NAME},
#{PUBLICATION_DATE},
#{IMPLEMENTATION_DATE},
#{TYPE_TWO},
#{TYPE_TWO_NAME}
</sql> </sql>
<!-- 新增--> <!-- 新增-->
@ -145,13 +124,6 @@
STATUS = #{STATUS}, STATUS = #{STATUS},
CORPINFO_ID = #{CORPINFO_ID}, CORPINFO_ID = #{CORPINFO_ID},
MIGRATION_FLAG = #{MIGRATION_FLAG}, MIGRATION_FLAG = #{MIGRATION_FLAG},
CODE_NAME = #{CODE_NAME},
PUBLISHES = #{PUBLISHES},
TEXT_NAME = #{TEXT_NAME},
PUBLICATION_DATE = #{PUBLICATION_DATE},
IMPLEMENTATION_DATE = #{IMPLEMENTATION_DATE},
TYPE_TWO = #{TYPE_TWO},
TYPE_TWO_NAME = #{TYPE_TWO_NAME},
BUS_TEXT_LIBRARY_ID = BUS_TEXT_LIBRARY_ID BUS_TEXT_LIBRARY_ID = BUS_TEXT_LIBRARY_ID
where where
BUS_TEXT_LIBRARY_ID = #{BUS_TEXT_LIBRARY_ID} BUS_TEXT_LIBRARY_ID = #{BUS_TEXT_LIBRARY_ID}
@ -180,9 +152,6 @@
<if test="pd.KEYWORDS != null and pd.KEYWORDS != ''"><!-- 关键词检索 --> <if test="pd.KEYWORDS != null and pd.KEYWORDS != ''"><!-- 关键词检索 -->
and f.REMARKS LIKE CONCAT(CONCAT('%', #{pd.KEYWORDS}),'%') and f.REMARKS LIKE CONCAT(CONCAT('%', #{pd.KEYWORDS}),'%')
</if> </if>
<if test="pd.KEYWORD != null and pd.KEYWORD != ''"><!-- 关键词检索 -->
and (f.TYPE_NAME LIKE CONCAT(CONCAT('%', #{pd.KEYWORD}),'%') or f.TYPE_TWO_NAME LIKE CONCAT(CONCAT('%', #{pd.KEYWORD}),'%'))
</if>
<if test="pd.LABELS != null and pd.LABELS.length > 0"> <if test="pd.LABELS != null and pd.LABELS.length > 0">
and exists(select 1 from bus_library_labels b where b.BUS_TEXT_LIBRARY_ID = f.BUS_TEXT_LIBRARY_ID and and exists(select 1 from bus_library_labels b where b.BUS_TEXT_LIBRARY_ID = f.BUS_TEXT_LIBRARY_ID and
b.BUS_LABEL_FACTORY_ID in b.BUS_LABEL_FACTORY_ID in
@ -215,15 +184,6 @@
<if test="pd.LIBRARY_FLAG != null and pd.LIBRARY_FLAG != ''"> <if test="pd.LIBRARY_FLAG != null and pd.LIBRARY_FLAG != ''">
and (f.MIGRATION_FLAG = '0' or f.MIGRATION_FLAG is null) and (f.MIGRATION_FLAG = '0' or f.MIGRATION_FLAG is null)
</if> </if>
<if test="pd.TYPE != null and pd.TYPE != ''">
and f.TYPE = #{pd.TYPE}
</if>
<if test="pd.TYPE_TWO != null and pd.TYPE_TWO != ''">
and f.TYPE_TWO like CONCAT('%' #{pd.TYPE_TWO}, '%')
</if>
<if test="pd.TEXT_NAME != null and pd.TEXT_NAME != ''">
and f.TEXT_NAME like CONCAT('%' #{pd.TEXT_NAME}, '%')
</if>
order by f.ISTOPTIME desc,f.CREATED_TIME desc order by f.ISTOPTIME desc,f.CREATED_TIME desc
</select> </select>

View File

@ -304,7 +304,7 @@
vua.NAME OUTSOURCED_CREATOR_NAME, vua.NAME OUTSOURCED_CREATOR_NAME,
ifnull(vac.CORP_NAME,'秦港股份有限公司') CORP_NAME, ifnull(vac.CORP_NAME,'秦港股份有限公司') CORP_NAME,
p.`NAME` as UNITS_PIC_NAME, p.`NAME` as UNITS_PIC_NAME,
ifnull(h.HIDDEN_COUNT,0) + ifnull(hai.AI_COUNT ,0) HIDDEN_COUNT ifnull(h.HIDDEN_COUNT,0) HIDDEN_COUNT
from from
<include refid="tableName"></include> f <include refid="tableName"></include> f
left join bus_units b using (UNITS_ID) left join bus_units b using (UNITS_ID)
@ -335,24 +335,9 @@
) t group by t.OUTSOURCED_ID,t.CREATOR ) t group by t.OUTSOURCED_ID,t.CREATOR
) uncheck on uncheck.OUTSOURCED_ID = f.OUTSOURCED_ID and uncheck.CREATOR = #{pd.UserId} ) uncheck on uncheck.OUTSOURCED_ID = f.OUTSOURCED_ID and uncheck.CREATOR = #{pd.UserId}
</if> </if>
left join ( left join ( SELECT t.OUTSOURCED_ID, COUNT( t.HIDDEN_ID ) HIDDEN_COUNT, t.SOURCE SOURCE, t.CREATOR CREATOR
SELECT t.OUTSOURCED_ID, COUNT( t.HIDDEN_ID ) HIDDEN_COUNT, t.SOURCE SOURCE, t.CREATOR CREATOR FROM
FROM ( SELECT IFNULL( k.OUTSOURCED_ID, h.FOREIGN_ID ) OUTSOURCED_ID, h.* FROM `qa-gwj-prevention`.bus_keyproject_hidden h LEFT JOIN `qa-gwj-prevention`.bus_keyprojectcheck k ON h.FOREIGN_ID = k.KEYPROJECTCHECK_ID and h.ISDELETE = '0') t GROUP BY t.OUTSOURCED_ID,t.CREATOR ) h on h.OUTSOURCED_ID = f.OUTSOURCED_ID
(
SELECT IFNULL( k.OUTSOURCED_ID, h.FOREIGN_ID ) OUTSOURCED_ID, h.*
FROM `qa-gwj-prevention`.bus_keyproject_hidden h
LEFT JOIN `qa-gwj-prevention`.bus_keyprojectcheck k ON h.FOREIGN_ID = k.KEYPROJECTCHECK_ID and h.ISDELETE = '0'
) t
GROUP BY t.OUTSOURCED_ID,t.CREATOR
) h on h.OUTSOURCED_ID = f.OUTSOURCED_ID
left join (
select vm.OUTSOURCED_ID ,COUNT(1) AI_COUNT
from `qa-gwj-regulatory`.bus_videomanager vm
left join `qa-gwj-regulatory`.bus_aiwarning ai on ai.VIDEOMANAGER_ID = vm.VIDEOMANAGER_ID and vm.ISDELETE = '0'
left join `qa-gwj-regulatory`.bus_aiwarning_hiddens ah on ai.AIWARNING_ID = ah.AIWARNING_ID
left join `qa-gwj-prevention`.bus_keyproject_hidden h on ah.HIDDEN_ID = h.HIDDEN_ID
where h.ISDELETE = '0' and h.SOURCE = '1'
) hai on hai.OUTSOURCED_ID = f.OUTSOURCED_ID
where f.ISDELETE = '0' where f.ISDELETE = '0'
<if test="pd.CORPINFO_ID != null and pd.CORPINFO_ID != ''"><!-- 关键词检索 --> <if test="pd.CORPINFO_ID != null and pd.CORPINFO_ID != ''"><!-- 关键词检索 -->
and and