Compare commits

..

2 Commits

32 changed files with 620 additions and 129 deletions

View File

@ -1,8 +1,8 @@
spring:
config:
import:
# - classpath:nacos.yml
- classpath:nacos.yml
- classpath:nacos-prod.yml
# - classpath:sdk.yml
- classpath:sdk-prod.yml
- classpath:nacos-prod.yml
- classpath:swagger.yml

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/16 14:18:47) App/domain"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/6/23 17:36:49) App/domain"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -20,4 +20,4 @@
redirect: '',
FRAMEWORK: APP_ENV.antd
};
})();</script><script defer="defer" src="/domain/static/js/888.f84533eefa5942ed12fc.js"></script><script defer="defer" src="/domain/static/js/410.ac23b512c1374b5b0539.js"></script><script defer="defer" src="/domain/static/js/main.044e66105e54ad25da94.js"></script><link href="/domain/static/css/main.c74fbb90829596498e3a.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/7/16 14:18:47) App/domain Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
})();</script><script defer="defer" src="/domain/static/js/888.f84533eefa5942ed12fc.js"></script><script defer="defer" src="/domain/static/js/410.ac23b512c1374b5b0539.js"></script><script defer="defer" src="/domain/static/js/main.044e66105e54ad25da94.js"></script><link href="/domain/static/css/main.c74fbb90829596498e3a.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2026/6/23 17:36:49) App/domain Version/main Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -0,0 +1,33 @@
package com.zcloud.domain.facade;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.domain.command.DomainWorkChangeExe;
import com.zcloud.domain.command.query.DomainWorkQueryExe;
import com.zcloud.gbscommon.zclouddomain.facade.ZcloudDomainFacade;
import com.zcloud.gbscommon.zclouddomain.request.DomainQry;
import com.zcloud.gbscommon.zclouddomain.request.DomainWorkChangeCmd;
import com.zcloud.gbscommon.zclouddomain.response.DomainListByUserCO;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import javax.annotation.Resource;
@DubboService
public class ZcloudDomainFacadeImpl implements ZcloudDomainFacade {
@Resource
private DomainWorkQueryExe domainWorkQueryExe;
@Resource
private DomainWorkChangeExe domainWorkChangeExe;
@Override
public MultiResponse<DomainListByUserCO> listManagerByUserId(DomainQry domainQry) {
return MultiResponse.of(domainWorkQueryExe.execute(domainQry));
}
@Override
public SingleResponse updateRiskWorkChange(DomainWorkChangeCmd domainWorkChangeCmd) {
domainWorkChangeExe.execute(domainWorkChangeCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -5,13 +5,14 @@ import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.domain.api.ProjectTaskServiceI;
import com.zcloud.domain.dto.ProjectTaskAddCmd;
import com.zcloud.domain.dto.ProjectTaskPageQry;
import com.zcloud.domain.dto.ProjectTaskUpdateCmd;
import com.zcloud.domain.dto.clientobject.ProjectTaskCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskDetailsCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskScoreCountCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -19,6 +20,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
@ -59,8 +62,6 @@ public class ProjectTaskController {
return SingleResponse.of(projectTaskService.getInfoById(id));
}
@ApiOperation("删除")
@GetMapping("/remove/{id}")
public Response remove(@PathVariable("id") Long id) {
@ -81,10 +82,5 @@ public class ProjectTaskController {
projectTaskService.edit(projectTaskUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("可视化大屏-课题评分领域统计")
@GetMapping("/scoreCount")
public MultiResponse<ProjectTaskScoreCountCO> countScoreByDomain() {
return MultiResponse.of(projectTaskService.countScoreByDomain());
}
}

View File

@ -0,0 +1,243 @@
package com.zcloud.domain.command;
import cn.hutool.json.JSONUtil;
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.exception.BizException;
import com.alibaba.fastjson.JSONObject;
import com.jjb.saas.message.client.message.facede.MessageFacade;
import com.jjb.saas.message.client.message.request.MessageSendCmd;
import com.jjb.saas.message.client.message.request.MessageTargetCmd;
import com.zcloud.domain.domain.config.MessageConfig;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import com.zcloud.domain.persistence.repository.DomainDepartmentRepository;
import com.zcloud.domain.persistence.repository.DomainDepartmentUserRepository;
import com.zcloud.domain.persistence.repository.DomainGroupRepository;
import com.zcloud.domain.persistence.repository.DomainGroupUserRepository;
import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil;
import com.zcloud.gbscommon.todolistmq.event.TodoListAddEvent;
import com.zcloud.gbscommon.utils.UuidUtil;
import com.zcloud.gbscommon.zclouddomain.request.DomainWorkChangeCmd;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
*
*/
@Slf4j
@Component
@AllArgsConstructor
public class DomainWorkChangeExe {
private final DomainDepartmentRepository domainDepartmentRepository;
private final DomainDepartmentUserRepository domainDepartmentUserRepository;
private final DomainGroupRepository domainGroupRepository;
private final DomainGroupUserRepository domainGroupUserRepository;
private final TodoListEventPusherUtil todoListEventPusherUtil;
private final MessageConfig messageConfig;
@DubboReference
private MessageFacade messageFacade;
@Transactional(rollbackFor = Exception.class)
public void execute(DomainWorkChangeCmd domainWorkChangeCmd) {
checkParam(domainWorkChangeCmd);
if (changeDomainDepartment(domainWorkChangeCmd)) {
return;
}
if (changeDomainDepartmentUser(domainWorkChangeCmd)) {
return;
}
if (changeDomainGroup(domainWorkChangeCmd)) {
return;
}
if (changeDomainGroupUser(domainWorkChangeCmd)) {
return;
}
throw new BizException("未找到对应的领域交接工作");
}
private void checkParam(DomainWorkChangeCmd domainWorkChangeCmd) {
if (domainWorkChangeCmd == null || StringUtils.isBlank(domainWorkChangeCmd.getWorkId())) {
throw new BizException("工作标识不能为空");
}
if (domainWorkChangeCmd.getOldUserId() == null) {
throw new BizException("原交接人员不能为空");
}
if (domainWorkChangeCmd.getUserId() == null) {
throw new BizException("新交接人员不能为空");
}
}
private boolean changeDomainDepartment(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainDepartmentDO == null) {
return false;
}
if (!Objects.equals(domainDepartmentDO.getMasterUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域负责人交接跳过当前负责人已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainDepartmentDO.getMasterUserId());
return true;
}
domainDepartmentDO.setMasterUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainDepartmentDO.setMasterDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainDepartmentRepository.updateById(domainDepartmentDO);
sendWorkChangeMessage(domainWorkChangeCmd, domainDepartmentDO.getId(), "领域负责人", buildDomainDepartmentContent(domainDepartmentDO));
return true;
}
private boolean changeDomainDepartmentUser(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainDepartmentUserDO domainDepartmentUserDO = domainDepartmentUserRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainDepartmentUserDO == null) {
return false;
}
if (!Objects.equals(domainDepartmentUserDO.getUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域审核人员交接跳过当前审核人员已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainDepartmentUserDO.getUserId());
return true;
}
Long duplicateCount = domainDepartmentUserRepository.countByDomainDepartmentIdAndUserId(
domainDepartmentUserDO.getDomainDepartmentId(), domainWorkChangeCmd.getUserId(), domainDepartmentUserDO.getId());
if (duplicateCount != null && duplicateCount > 0) {
throw new BizException("新交接人员已存在于该领域审核人员中");
}
domainDepartmentUserDO.setUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainDepartmentUserDO.setDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainDepartmentUserRepository.updateById(domainDepartmentUserDO);
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getInfoByUUID(domainDepartmentUserDO.getDomainDepartmentId());
sendWorkChangeMessage(domainWorkChangeCmd, domainDepartmentUserDO.getId(), "领域审核人员", buildDomainDepartmentContent(domainDepartmentDO));
return true;
}
private boolean changeDomainGroup(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainGroupDO domainGroupDO = domainGroupRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainGroupDO == null) {
return false;
}
if (!Objects.equals(domainGroupDO.getTeamUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域组组长交接跳过当前组长已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainGroupDO.getTeamUserId());
return true;
}
domainGroupDO.setTeamUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainGroupDO.setTeamDepartmentId(domainWorkChangeCmd.getDeptId());
}
if (domainWorkChangeCmd.getCorpId() != null) {
domainGroupDO.setCorpinfoId(domainWorkChangeCmd.getCorpId());
}
domainGroupRepository.updateById(domainGroupDO);
sendWorkChangeMessage(domainWorkChangeCmd, domainGroupDO.getId(), "领域组组长", buildDomainGroupContent(domainGroupDO));
return true;
}
private boolean changeDomainGroupUser(DomainWorkChangeCmd domainWorkChangeCmd) {
DomainGroupUserDO domainGroupUserDO = domainGroupUserRepository.getByWorkId(domainWorkChangeCmd.getWorkId());
if (domainGroupUserDO == null) {
return false;
}
if (!Objects.equals(domainGroupUserDO.getUserId(), domainWorkChangeCmd.getOldUserId())) {
log.warn("领域组成员交接跳过当前成员已变更workId:{}, oldUserId:{}, dbUserId:{}",
domainWorkChangeCmd.getWorkId(), domainWorkChangeCmd.getOldUserId(), domainGroupUserDO.getUserId());
return true;
}
Long duplicateCount = domainGroupUserRepository.countByDomainGroupIdAndUserId(
domainGroupUserDO.getDomainGroupId(), domainWorkChangeCmd.getUserId(), domainGroupUserDO.getId());
if (duplicateCount != null && duplicateCount > 0) {
throw new BizException("新交接人员已存在于该领域组成员中");
}
domainGroupUserDO.setUserId(domainWorkChangeCmd.getUserId());
if (domainWorkChangeCmd.getDeptId() != null) {
domainGroupUserDO.setDepartmentId(domainWorkChangeCmd.getDeptId());
}
domainGroupUserRepository.updateById(domainGroupUserDO);
DomainGroupDO domainGroupDO = domainGroupRepository.getInfoByGroupId(domainGroupUserDO.getDomainGroupId());
sendWorkChangeMessage(domainWorkChangeCmd, domainGroupUserDO.getId(), "领域组成员", buildDomainGroupContent(domainGroupDO));
return true;
}
private void sendWorkChangeMessage(DomainWorkChangeCmd domainWorkChangeCmd, Long foreignKey, String workProject, String workContent) {
try {
MessageSendCmd messageSendCmd = new MessageSendCmd();
messageSendCmd.setBusinessId(UuidUtil.get32UUID());
MessageTargetCmd messageTargetCmd = new MessageTargetCmd();
messageTargetCmd.setUserId(domainWorkChangeCmd.getUserId());
messageSendCmd.setTargetCmd(messageTargetCmd);
messageSendCmd.setSourceCode(resolveSourceCode(workProject));
messageSendCmd.setNeedTokenEnum(false);
messageSendCmd.setParams(buildSendParams(domainWorkChangeCmd, workProject, workContent));
log.info("领域工作交接发送消息参数:{}", JSONUtil.toJsonStr(messageSendCmd));
SingleResponse<Boolean> response = messageFacade.send(messageSendCmd);
log.info("领域工作交接发送消息结果:{}", JSONUtil.toJsonStr(response));
/* TodoListAddEvent event = new TodoListAddEvent();
event.setTitle("您有一条【领域工作】待处理");
event.setContent(workProject + "交接待处理");
event.setForeignKey(foreignKey);
event.setForeignSubsidiaryKey(foreignKey);
event.setReceiveUser(domainWorkChangeCmd.getUserId());
event.setPcFlag(1);
event.setAppFlag(0);
event.setOtherParams(new JSONObject());
todoListEventPusherUtil.sendMessageAddEvent(event);*/
} catch (Exception e) {
log.error("领域工作交接发送消息失败", e);
}
}
private String resolveSourceCode(String workProject) {
if ("领域负责人".equals(workProject) || "领域审核人员".equals(workProject)) {
return StringUtils.defaultIfEmpty(messageConfig.getDomainWorkChange(), messageConfig.getScoreTaskAssign());
}
return StringUtils.defaultIfEmpty(messageConfig.getDomainWorkChange(), messageConfig.getTaskAssign());
}
private Map<String, Object> buildSendParams(DomainWorkChangeCmd domainWorkChangeCmd, String workProject, String workContent) {
Map<String, Object> sendParams = new HashMap<>();
sendParams.put("oldUserId", domainWorkChangeCmd.getOldUserId());
sendParams.put("newUserId", domainWorkChangeCmd.getUserId());
sendParams.put("newUserName", domainWorkChangeCmd.getUserName());
sendParams.put("workProject", workProject);
sendParams.put("workContent", workContent);
sendParams.put("DomainDepartment", workContent);
return sendParams;
}
private String buildDomainDepartmentContent(DomainDepartmentDO domainDepartmentDO) {
if (domainDepartmentDO == null) {
return "领域配置";
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getDomainTypeName())) {
return domainDepartmentDO.getDomainTypeName();
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getMasterDepartmentName())) {
return domainDepartmentDO.getMasterDepartmentName();
}
return StringUtils.defaultIfEmpty(domainDepartmentDO.getDomainType(), "领域配置");
}
private String buildDomainGroupContent(DomainGroupDO domainGroupDO) {
if (domainGroupDO == null) {
return "领域组配置";
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainGroupName())) {
return domainGroupDO.getDomainGroupName();
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainTypeName())) {
return domainGroupDO.getDomainTypeName();
}
return StringUtils.defaultIfEmpty(domainGroupDO.getDomainType(), "领域组配置");
}
}

View File

@ -0,0 +1,124 @@
package com.zcloud.domain.command.query;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import com.zcloud.domain.persistence.repository.DomainDepartmentRepository;
import com.zcloud.domain.persistence.repository.DomainDepartmentUserRepository;
import com.zcloud.domain.persistence.repository.DomainGroupRepository;
import com.zcloud.domain.persistence.repository.DomainGroupUserRepository;
import com.zcloud.gbscommon.zclouddomain.request.DomainQry;
import com.zcloud.gbscommon.zclouddomain.response.DomainListByUserCO;
import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Component
@AllArgsConstructor
public class DomainWorkQueryExe {
private final DomainDepartmentRepository domainDepartmentRepository;
private final DomainDepartmentUserRepository domainDepartmentUserRepository;
private final DomainGroupRepository domainGroupRepository;
private final DomainGroupUserRepository domainGroupUserRepository;
public List<DomainListByUserCO> execute(DomainQry domainQry) {
List<DomainListByUserCO> result = new ArrayList<>();
if (domainQry == null || domainQry.getUserId() == null || domainQry.getCorpinfoId() == null) {
return result;
}
result.addAll(listDomainDepartmentWork(domainQry));
result.addAll(listDomainDepartmentUserWork(domainQry));
result.addAll(listDomainGroupWork(domainQry));
result.addAll(listDomainGroupUserWork(domainQry));
return result;
}
private List<DomainListByUserCO> listDomainDepartmentWork(DomainQry domainQry) {
List<DomainDepartmentDO> domainDepartmentList = domainDepartmentRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainDepartmentDO domainDepartmentDO : domainDepartmentList) {
DomainDepartmentDO info = domainDepartmentRepository.getInfoByUUID(domainDepartmentDO.getDomainDepartmentId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainDepartmentDO.getDomainDepartmentId());
data.setWorkProject("领域负责人");
data.setWorkContent(buildDomainDepartmentContent(info == null ? domainDepartmentDO : info));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainDepartmentUserWork(DomainQry domainQry) {
List<DomainDepartmentUserDO> domainDepartmentUserList = domainDepartmentUserRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainDepartmentUserDO domainDepartmentUserDO : domainDepartmentUserList) {
DomainDepartmentDO domainDepartmentDO = domainDepartmentRepository.getInfoByUUID(domainDepartmentUserDO.getDomainDepartmentId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainDepartmentUserDO.getDomainDepartmentUserId());
data.setWorkProject("领域审核人员");
data.setWorkContent(buildDomainDepartmentContent(domainDepartmentDO));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainGroupWork(DomainQry domainQry) {
List<DomainGroupDO> domainGroupList = domainGroupRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainGroupDO domainGroupDO : domainGroupList) {
DomainGroupDO info = domainGroupRepository.getInfoByGroupId(domainGroupDO.getDomainGroupId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainGroupDO.getDomainGroupId());
data.setWorkProject("领域组组长");
data.setWorkContent(buildDomainGroupContent(info == null ? domainGroupDO : info));
result.add(data);
}
return result;
}
private List<DomainListByUserCO> listDomainGroupUserWork(DomainQry domainQry) {
List<DomainGroupUserDO> domainGroupUserList = domainGroupUserRepository.listWorkByUserId(domainQry.getUserId(), domainQry.getCorpinfoId());
List<DomainListByUserCO> result = new ArrayList<>();
for (DomainGroupUserDO domainGroupUserDO : domainGroupUserList) {
DomainGroupDO domainGroupDO = domainGroupRepository.getInfoByGroupId(domainGroupUserDO.getDomainGroupId());
DomainListByUserCO data = new DomainListByUserCO();
data.setWorkId(domainGroupUserDO.getDomainGroupUserId());
data.setWorkProject("领域组成员");
data.setWorkContent(buildDomainGroupContent(domainGroupDO));
result.add(data);
}
return result;
}
private String buildDomainDepartmentContent(DomainDepartmentDO domainDepartmentDO) {
if (domainDepartmentDO == null) {
return "领域配置";
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getDomainTypeName())) {
return domainDepartmentDO.getDomainTypeName();
}
if (StringUtils.isNotEmpty(domainDepartmentDO.getMasterDepartmentName())) {
return domainDepartmentDO.getMasterDepartmentName();
}
return StringUtils.defaultIfEmpty(domainDepartmentDO.getDomainType(), "领域配置");
}
private String buildDomainGroupContent(DomainGroupDO domainGroupDO) {
if (domainGroupDO == null) {
return "领域组配置";
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainGroupName())) {
return domainGroupDO.getDomainGroupName();
}
if (StringUtils.isNotEmpty(domainGroupDO.getDomainTypeName())) {
return domainGroupDO.getDomainTypeName();
}
return StringUtils.defaultIfEmpty(domainGroupDO.getDomainType(), "领域组配置");
}
}

View File

@ -13,10 +13,10 @@ import com.zcloud.domain.dto.clientobject.*;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskInfoDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
import com.zcloud.domain.persistence.repository.*;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@ -42,13 +42,6 @@ public class ProjectTaskQueryExe {
private final ProjectTaskGroupUserRepository projectTaskGroupUserRepository;
private final ProjectTaskGroupUserCoConvertor projectTaskGroupUserCoConvertor;
private final CorpInfoRepository corpInfoRepository;
private static final List<ProjectTaskScoreCountCO> SCORE_COUNT_DOMAIN_LIST = java.util.Arrays.asList(
buildScoreCount("equipment_safety", "设备、工具具安全专项领域"),
buildScoreCount("facility_safety", "设施安全专项领域"),
buildScoreCount("Labor_related_parties", "劳务相关方安全专项领域"),
buildScoreCount("traffic_safety", "交通、消防、口门安全专项领域"),
buildScoreCount("production_safety", "生产作业、船舶靠离泊安全专项领域")
);
/**
*
@ -138,32 +131,6 @@ public class ProjectTaskQueryExe {
}
return projectTaskDetailsCO;
}
public List<ProjectTaskScoreCountCO> countScoreByDomain() {
Map<String, ProjectTaskScoreCountDO> countMap = projectTaskRepository.countScoreByDomain()
.stream()
.collect(java.util.stream.Collectors.toMap(ProjectTaskScoreCountDO::getDomainType, item -> item, (first, second) -> first));
return SCORE_COUNT_DOMAIN_LIST.stream().map(item -> {
ProjectTaskScoreCountDO countDO = countMap.get(item.getDomainType());
ProjectTaskScoreCountCO countCO = buildScoreCount(item.getDomainType(), item.getDomainTypeName());
if (countDO != null) {
countCO.setNoScoreCount(countDO.getNoScoreCount());
countCO.setScoredCount(countDO.getScoredCount());
}
return countCO;
}).sorted(java.util.Comparator.comparing(ProjectTaskScoreCountCO::getNoScoreCount).reversed())
.collect(java.util.stream.Collectors.toList());
}
private static ProjectTaskScoreCountCO buildScoreCount(String domainType, String domainTypeName) {
ProjectTaskScoreCountCO countCO = new ProjectTaskScoreCountCO();
countCO.setDomainType(domainType);
countCO.setDomainTypeName(domainTypeName);
countCO.setNoScoreCount(0L);
countCO.setScoredCount(0L);
return countCO;
}
private boolean checkScorePermission(ProjectTaskScoreInfoCO scoreInfo) {
// 1. 企业账号且数据属于本企业
if (CorpInfoE.isCorp() && AuthContext.getTenantId().equals(scoreInfo.getCorpinfoId())) {

View File

@ -12,12 +12,9 @@ import com.zcloud.domain.dto.ProjectTaskPageQry;
import com.zcloud.domain.dto.ProjectTaskUpdateCmd;
import com.zcloud.domain.dto.clientobject.ProjectTaskCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskDetailsCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskScoreCountCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* web-app
*
@ -65,11 +62,6 @@ public class ProjectTaskServiceImpl implements ProjectTaskServiceI {
return projectTaskQueryExe.getInfoById(id);
}
@Override
public List<ProjectTaskScoreCountCO> countScoreByDomain() {
return projectTaskQueryExe.countScoreByDomain();
}
@Override
public void updatExecuteStatusJob() {
projectTaskUpdateExe.updatExecuteStatusJob();

View File

@ -7,9 +7,6 @@ import com.zcloud.domain.dto.ProjectTaskPageQry;
import com.zcloud.domain.dto.ProjectTaskUpdateCmd;
import com.zcloud.domain.dto.clientobject.ProjectTaskCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskDetailsCO;
import com.zcloud.domain.dto.clientobject.ProjectTaskScoreCountCO;
import java.util.List;
/**
* web-client
@ -30,8 +27,6 @@ public interface ProjectTaskServiceI {
ProjectTaskDetailsCO getInfoById(Long id);
List<ProjectTaskScoreCountCO> countScoreByDomain();
void updatExecuteStatusJob();
}

View File

@ -1,27 +0,0 @@
package com.zcloud.domain.dto.clientobject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
*
*
* @Author zhaokai
* @Date 2026-07-16 14:30:00
*/
@Data
public class ProjectTaskScoreCountCO implements Serializable {
@ApiModelProperty(value = "领域类型")
private String domainType;
@ApiModelProperty(value = "领域类型名称")
private String domainTypeName;
@ApiModelProperty(value = "未评分数")
private Long noScoreCount;
@ApiModelProperty(value = "已评分数")
private Long scoredCount;
}

View File

@ -31,4 +31,9 @@ public class MessageConfig {
*
*/
private String scoreTaskAssign;
/**
*
*/
private String domainWorkChange;
}

View File

@ -1,20 +0,0 @@
package com.zcloud.domain.persistence.dataobject;
import lombok.Data;
/**
*
*
* @Author zhaokai
* @Date 2026-07-16 14:30:00
*/
@Data
public class ProjectTaskScoreCountDO {
private String domainType;
private String domainTypeName;
private Long noScoreCount;
private Long scoredCount;
}

View File

@ -6,6 +6,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -29,5 +30,9 @@ public interface DomainDepartmentMapper extends BaseMapper<DomainDepartmentDO> {
List<DomainDepartmentDO> listAll(Map<String, Object> params);
DomainDepartmentDO getInfoByUUID(String domainDepartmentId);
List<DomainDepartmentDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainDepartmentDO getByWorkId(@Param("workId") String workId);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -20,5 +21,13 @@ public interface DomainDepartmentUserMapper extends BaseMapper<DomainDepartmentU
List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId);
IPage<DomainDepartmentUserDO> listPage(IPage<DomainDepartmentUserDO> iPage, Map<String, Object> params);
List<DomainDepartmentUserDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainDepartmentUserDO getByWorkId(@Param("workId") String workId);
Long countByDomainDepartmentIdAndUserId(@Param("domainDepartmentId") String domainDepartmentId,
@Param("userId") Long userId,
@Param("excludeId") Long excludeId);
}

View File

@ -6,6 +6,7 @@ import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -29,5 +30,9 @@ public interface DomainGroupMapper extends BaseMapper<DomainGroupDO> {
List<DomainGroupDO> listAll(Map<String, Object> params);
DomainGroupDO getInfoByGroupId(String domainGroupId);
List<DomainGroupDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainGroupDO getByWorkId(@Param("workId") String workId);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -20,5 +21,13 @@ public interface DomainGroupUserMapper extends BaseMapper<DomainGroupUserDO> {
List<DomainGroupUserDO> getListByGroupId(String domainGroupId);
IPage<DomainGroupUserDO> listPage(IPage<DomainGroupUserDO> iPage, Map<String, Object> params);
List<DomainGroupUserDO> listWorkByUserId(@Param("userId") Long userId, @Param("corpinfoId") Long corpinfoId);
DomainGroupUserDO getByWorkId(@Param("workId") String workId);
Long countByDomainGroupIdAndUserId(@Param("domainGroupId") String domainGroupId,
@Param("userId") Long userId,
@Param("excludeId") Long excludeId);
}

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO;
import org.apache.ibatis.annotations.Mapper;
import java.math.BigDecimal;
@ -31,7 +30,5 @@ public interface ProjectTaskMapper extends BaseMapper<ProjectTaskDO> {
void updateScoreStatus(String projectTaskId, Integer code, BigDecimal averageScore);
void updateExecuteStatusBatchById(Integer code, List<Long> idList);
List<ProjectTaskScoreCountDO> countScoreByDomain();
}

View File

@ -24,5 +24,9 @@ public interface DomainDepartmentRepository extends BaseRepository<DomainDepartm
List<DomainDepartmentDO> listAll(Map<String, Object> params);
DomainDepartmentDO getInfoByUUID(String domainDepartmentId);
List<DomainDepartmentDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainDepartmentDO getByWorkId(String workId);
}

View File

@ -19,5 +19,11 @@ public interface DomainDepartmentUserRepository extends BaseRepository<DomainDep
void deleteByDomainDepartmentId(String domainDepartmentId);
List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId);
List<DomainDepartmentUserDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainDepartmentUserDO getByWorkId(String workId);
Long countByDomainDepartmentIdAndUserId(String domainDepartmentId, Long userId, Long excludeId);
}

View File

@ -26,5 +26,9 @@ public interface DomainGroupRepository extends BaseRepository<DomainGroupDO> {
DomainGroupDO getInfoByGroupId(String domainGroupId);
List<DomainGroupDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainGroupDO getByWorkId(String workId);
}

View File

@ -20,5 +20,11 @@ public interface DomainGroupUserRepository extends BaseRepository<DomainGroupUse
List<DomainGroupUserDO> getListByGroupId(String domainGroupId);
List<DomainGroupUserDO> listWorkByUserId(Long userId, Long corpinfoId);
DomainGroupUserDO getByWorkId(String workId);
Long countByDomainGroupIdAndUserId(String domainGroupId, Long userId, Long excludeId);
}

View File

@ -3,7 +3,6 @@ package com.zcloud.domain.persistence.repository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
@ -32,8 +31,6 @@ public interface ProjectTaskRepository extends BaseRepository<ProjectTaskDO> {
ProjectTaskDO getInfoByTaskId(@NotEmpty(message = "课题任务不能为空") String projectTaskId);
List<ProjectTaskScoreCountDO> countScoreByDomain();
List<ProjectTaskDO> getNoFinishByDomainDepartmentId(List<String> domainDepartmentIds);
List<ProjectTaskDO> getNoFinishByDomainGroupId(List<String> groupIdList);

View File

@ -68,5 +68,15 @@ public class DomainDepartmentRepositoryImpl extends BaseRepositoryImpl<DomainDep
DomainDepartmentDO domainDepartmentDO = domainDepartmentMapper.getInfoByUUID(domainDepartmentId);
return domainDepartmentDO;
}
@Override
public List<DomainDepartmentDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainDepartmentMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainDepartmentDO getByWorkId(String workId) {
return domainDepartmentMapper.getByWorkId(workId);
}
}

View File

@ -45,5 +45,20 @@ public class DomainDepartmentUserRepositoryImpl extends BaseRepositoryImpl<Domai
public List<DomainDepartmentUserDO> getListByDomainDepartmentId(String domainDepartmentId) {
return domainDepartmentUserMapper.getListByDomainDepartmentId(domainDepartmentId);
}
@Override
public List<DomainDepartmentUserDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainDepartmentUserMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainDepartmentUserDO getByWorkId(String workId) {
return domainDepartmentUserMapper.getByWorkId(workId);
}
@Override
public Long countByDomainDepartmentIdAndUserId(String domainDepartmentId, Long userId, Long excludeId) {
return domainDepartmentUserMapper.countByDomainDepartmentIdAndUserId(domainDepartmentId, userId, excludeId);
}
}

View File

@ -66,5 +66,15 @@ public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMap
public DomainGroupDO getInfoByGroupId(String domainGroupId) {
return domainGroupMapper.getInfoByGroupId(domainGroupId);
}
@Override
public List<DomainGroupDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainGroupMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainGroupDO getByWorkId(String workId) {
return domainGroupMapper.getByWorkId(workId);
}
}

View File

@ -46,5 +46,20 @@ public class DomainGroupUserRepositoryImpl extends BaseRepositoryImpl<DomainGrou
public List<DomainGroupUserDO> getListByGroupId(String domainGroupId) {
return domainGroupUserMapper.getListByGroupId(domainGroupId);
}
@Override
public List<DomainGroupUserDO> listWorkByUserId(Long userId, Long corpinfoId) {
return domainGroupUserMapper.listWorkByUserId(userId, corpinfoId);
}
@Override
public DomainGroupUserDO getByWorkId(String workId) {
return domainGroupUserMapper.getByWorkId(workId);
}
@Override
public Long countByDomainGroupIdAndUserId(String domainGroupId, Long userId, Long excludeId) {
return domainGroupUserMapper.countByDomainGroupIdAndUserId(domainGroupId, userId, excludeId);
}
}

View File

@ -11,7 +11,6 @@ import com.zcloud.domain.domain.enums.ProjectTaskExecuteStatusEnum;
import com.zcloud.domain.domain.enums.ScoreStatusEnum;
import com.zcloud.domain.domain.model.CorpInfoE;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO;
import com.zcloud.domain.persistence.mapper.ProjectTaskMapper;
import com.zcloud.domain.persistence.repository.CorpInfoRepository;
import com.zcloud.domain.persistence.repository.ProjectTaskRepository;
@ -98,11 +97,6 @@ public class ProjectTaskRepositoryImpl extends BaseRepositoryImpl<ProjectTaskMap
return projectTaskMapper.selectOne(queryWrapper);
}
@Override
public List<ProjectTaskScoreCountDO> countScoreByDomain() {
return projectTaskMapper.countScoreByDomain();
}
@Override
public List<ProjectTaskDO> getNoFinishByDomainDepartmentId(List<String> domainDepartmentIds) {
QueryWrapper<ProjectTaskDO> queryWrapper = new QueryWrapper<>();

View File

@ -49,5 +49,24 @@
where dd.delete_enum = 'FALSE'
and dd.domain_department_id = #{domainDepartmentId}
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentDO">
select dd.*, d.name as masterDepartmentName, u.name as masterUserName
from domain_department dd
left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE'
left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE'
where dd.delete_enum = 'FALSE'
and dd.master_user_id = #{userId}
and d.corpinfo_id = #{corpinfoId}
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentDO">
select dd.*, d.name as masterDepartmentName, u.name as masterUserName
from domain_department dd
left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE'
left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE'
where dd.delete_enum = 'FALSE'
and dd.domain_department_id = #{workId}
</select>
</mapper>

View File

@ -24,5 +24,36 @@
and ddu.domain_department_id = #{params.domainDepartmentId}
order by ddu.create_time desc
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO">
select ddu.*, d.name as departmentname, u.name as username, c.corp_name as corpinfoName, c.id as corpinfoId
from domain_department_user ddu
left join department d on ddu.department_id = d.id and d.delete_enum = 'FALSE'
left join corp_info c on d.corpinfo_id = c.id and c.delete_enum = 'FALSE'
left join user u on ddu.user_id = u.id and u.delete_enum = 'FALSE'
where ddu.delete_enum = 'FALSE'
and ddu.user_id = #{userId}
and d.corpinfo_id = #{corpinfoId}
order by ddu.create_time desc
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO">
select ddu.*, d.name as departmentname, u.name as username, c.corp_name as corpinfoName, c.id as corpinfoId
from domain_department_user ddu
left join department d on ddu.department_id = d.id and d.delete_enum = 'FALSE'
left join corp_info c on d.corpinfo_id = c.id and c.delete_enum = 'FALSE'
left join user u on ddu.user_id = u.id and u.delete_enum = 'FALSE'
where ddu.delete_enum = 'FALSE'
and ddu.domain_department_user_id = #{workId}
</select>
<select id="countByDomainDepartmentIdAndUserId" resultType="java.lang.Long">
select count(1)
from domain_department_user ddu
where ddu.delete_enum = 'FALSE'
and ddu.domain_department_id = #{domainDepartmentId}
and ddu.user_id = #{userId}
and ddu.id <![CDATA[<>]]> #{excludeId}
</select>
</mapper>

View File

@ -70,5 +70,32 @@
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false' and dg.domain_group_id=#{domainGroupId}
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO">
select dg.*,
c.corp_name as corpinfoname,
d.name as teamdepartmentname,
u.name as teamusername
from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false'
and dg.team_user_id = #{userId}
and dg.corpinfo_id = #{corpinfoId}
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO">
select dg.*,
c.corp_name as corpinfoname,
d.name as teamdepartmentname,
u.name as teamusername
from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false'
and dg.domain_group_id = #{workId}
</select>
</mapper>

View File

@ -24,5 +24,36 @@
group by dgu.id
order by dgu.create_time desc
</select>
<select id="listWorkByUserId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupUserDO">
select dgu.*, d.name as departmentname, u.name as username
from domain_group_user dgu
left join department d on dgu.department_id = d.id and d.delete_enum = 'false'
left join user u on dgu.user_id = u.id and u.delete_enum = 'false'
left join domain_group dg on dgu.domain_group_id = dg.domain_group_id and dg.delete_enum = 'false'
where dgu.delete_enum = 'false'
and dgu.user_id = #{userId}
and dg.corpinfo_id = #{corpinfoId}
group by dgu.id
order by dgu.create_time desc
</select>
<select id="getByWorkId" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupUserDO">
select dgu.*, d.name as departmentname, u.name as username
from domain_group_user dgu
left join department d on dgu.department_id = d.id and d.delete_enum = 'false'
left join user u on dgu.user_id = u.id and u.delete_enum = 'false'
where dgu.delete_enum = 'false'
and dgu.domain_group_user_id = #{workId}
</select>
<select id="countByDomainGroupIdAndUserId" resultType="java.lang.Long">
select count(1)
from domain_group_user dgu
where dgu.delete_enum = 'FALSE'
and dgu.domain_group_id = #{domainGroupId}
and dgu.user_id = #{userId}
and dgu.id <![CDATA[<>]]> #{excludeId}
</select>
</mapper>

View File

@ -54,17 +54,6 @@
left join department d on d.id = dd.master_department_id
where pt.delete_enum = 'false' and pt.id=#{id}
</select>
<select id="countScoreByDomain" resultType="com.zcloud.domain.persistence.dataobject.ProjectTaskScoreCountDO">
select
pt.domain_type as domainType,
pt.domain_type_name as domainTypeName,
sum(case when pt.score_status in (0, 1) then 1 else 0 end) as noScoreCount,
sum(case when pt.score_status = 2 then 1 else 0 end) as scoredCount
from project_task pt
where pt.delete_enum = 'false'
and pt.domain_type in ('equipment_safety', 'facility_safety', 'Labor_related_parties', 'traffic_safety', 'production_safety')
group by pt.domain_type, pt.domain_type_name
</select>
<update id="updateScoreStatus">
update project_task set score_status = #{code}
<if test="averageScore != null">