Commit 73f926a0 authored by 鲁鸿波's avatar 鲁鸿波

承包商准入修改,考试查询,监测氧气含量等

parent 75d38c26
......@@ -134,8 +134,10 @@ INSERT INTO "public"."t_sys_config" ("config_id", "config_name", "config_key", "
# 20251106上线需求
t_contractor_access_log
t_contractor_access_log_approval
t_hazard_work_plan_monitoring_record
t_hazard_work_plan_monitoring_record_project
ALTER TABLE t_contractor_person ADD COLUMN contract_period varchar(200) NULL; -- 合同期限
COMMENT ON COLUMN public.t_contractor_person.contract_period IS '合同期限';
......@@ -143,7 +145,6 @@ COMMENT ON COLUMN public.t_contractor_person.contract_period IS '合同期限';
-- public.t_contractor_access_log definition
-- Drop table
......@@ -286,4 +287,49 @@ COMMENT ON COLUMN public.t_contractor_access_log_approval."type" IS '修改项(1
COMMENT ON COLUMN public.t_contractor_access_log_approval.contractor_allow_id IS '准入管理对象ID';
-- public.t_contractor_access_log_approval foreign keys
\ No newline at end of file
-- public.t_contractor_access_log_approval foreign keys
CREATE TABLE public.t_hazard_work_plan_monitoring_record (
id varchar(64) NOT NULL,
plan_id varchar(64) NULL,
detection_position varchar(500) NULL,
conclusion varchar(500) NULL,
scene_photo varchar(500) NULL,
status varchar(1) NULL DEFAULT '0'::varchar,
inspector_signature varchar(500) NULL,
inspector_time timestamp,
create_by varchar(64) NULL,
create_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_by varchar(64) NULL,
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE public.t_contractor_access_log_approval IS '危险作业监测记录表';
-- Column comments
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.id IS '主键ID';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.plan_id IS '危险作业id';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.detection_position IS '检测位置';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.conclusion IS '结论';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.scene_photo IS '现场照片';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.inspector_signature IS '检测人签字';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record.inspector_time IS '检测时间';
CREATE TABLE public.t_hazard_work_plan_monitoring_record_project (
id varchar(64) NOT NULL,
project_name varchar(200) NULL,
project_value varchar(500) NULL,
hazard_work_plan_monitoring_record_id varchar(64) NULL,
status varchar(1) NULL DEFAULT '0'::varchar,
create_by varchar(64) NULL,
create_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_by varchar(64) NULL,
update_date sys."timestamp" NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE public.t_hazard_work_plan_monitoring_record_project IS '危险作业监测记录项目表';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.project_name IS '项目名称';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.project_value IS '项目值';
COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.hazard_work_plan_monitoring_record_id IS '危险作业监测记录表id';
\ No newline at end of file
......@@ -14,21 +14,17 @@ import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.testor.common.constant.StatusEnum;
import com.testor.common.core.domain.R;
import com.testor.common.util.BeanConverUtil;
import com.testor.module.contractor.ledger.model.domain.TContractorMaterial;
import com.testor.module.contractor.ledger.model.domain.TContractorPerson;
import com.testor.module.contractor.ledger.model.domain.TContractorProtectiveEquipment;
import com.testor.module.contractor.ledger.model.domain.TContractorTools;
import com.testor.module.contractor.ledger.model.domain.*;
import com.testor.module.contractor.ledger.model.dto.TContractorMaterialParam;
import com.testor.module.contractor.ledger.model.dto.TContractorPersonParam;
import com.testor.module.contractor.ledger.model.dto.TContractorProtectiveEquipmentParam;
import com.testor.module.contractor.ledger.model.dto.TContractorToolsParam;
import com.testor.module.contractor.ledger.service.TContractorMaterialService;
import com.testor.module.contractor.ledger.service.TContractorPersonService;
import com.testor.module.contractor.ledger.service.TContractorProtectiveEquipmentService;
import com.testor.module.contractor.ledger.service.TContractorToolsService;
import com.testor.module.contractor.ledger.service.*;
import com.testor.module.contractor.manage.model.domain.TContractorAllowPerson;
import com.testor.module.contractor.manage.model.dto.*;
import com.testor.module.contractor.manage.service.*;
......@@ -92,6 +88,9 @@ public class TContractorAllowController extends SuperController
@Autowired
private TContractorToolsService tContractorToolsService;
@Autowired
private TContractorProjectService tContractorProjectService;
/* Generated Method*/
@ApiOperation(value = "新增 准入管理", notes = "Add TContractorAllow")
@PostMapping(value = "/add")
......@@ -170,6 +169,25 @@ public class TContractorAllowController extends SuperController
tContractorAllowDTO.setTContractorTools(tContractorToolsList);
tContractorAllowDTO.setToolsIds(toolIdsByAllowId);
}
if(null != tContractorAllowDTO){
if(tContractorAllowDTO.getProjId() != null) {
List<TContractorProject> contractorProject = tContractorProjectService.list(new LambdaQueryWrapper<TContractorProject>()
.eq(TContractorProject::getId, tContractorAllowDTO.getProjId()));
if (contractorProject != null && !contractorProject.isEmpty()) {
// 使用Stream API提取项目名称并用逗号拼接
String projectNames = contractorProject.stream()
.map(TContractorProject::getName) // 假设TContractorProject有getName方法
.filter(StringUtils::isNotBlank) // 过滤掉空值
.collect(Collectors.joining(",")); // 用逗号拼接
// 将拼接后的项目名称设置到DTO中
tContractorAllowDTO.setTcontractorProjectName(projectNames);
}
}
}
baseResponse.setData(tContractorAllowDTO);
}
return baseResponse;
......
package com.testor.module.contractor.manage.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.module.contractor.common.model.constant.ContractorProcessStatus;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.ledger.service.TContractorProjectService;
import com.testor.module.contractor.manage.model.domain.TContractorConditionReview;
import com.testor.module.contractor.manage.model.dto.ContractorConditionReviewDto;
import com.testor.module.contractor.manage.model.dto.TContractorConditionReviewDelParam;
......@@ -32,6 +36,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 承包商管理-条件审查Controller
......@@ -57,6 +62,9 @@ public class TContractorConditionReviewController extends SuperController
@Autowired
private WfTaskController wfTaskController;
@Autowired
private TContractorProjectService tContractorProjectService;
/* Generated Method*/
@ApiOperation(value = "新增 承包商管理-条件审查", notes = "Add TContractorConditionReview")
@PostMapping(value = "/add")
......@@ -85,6 +93,23 @@ public class TContractorConditionReviewController extends SuperController
if(StringHelper.isNotEmpty(id)){
// TODO 按需求添加业务异常判断
TContractorConditionReview data= tContractorConditionReviewService.getById(id);
if(null !=data){
if(data.getProjId() != null) {
List<TContractorProject> contractorProject = tContractorProjectService.list(new LambdaQueryWrapper<TContractorProject>()
.eq(TContractorProject::getId, data.getProjId()));
if (contractorProject != null && !contractorProject.isEmpty()) {
// 使用Stream API提取项目名称并用逗号拼接
String projectNames = contractorProject.stream()
.map(TContractorProject::getName) // 假设TContractorProject有getName方法
.filter(StringUtils::isNotBlank) // 过滤掉空值
.collect(Collectors.joining(",")); // 用逗号拼接
// 将拼接后的项目名称设置到DTO中
data.setTcontractorProjectName(projectNames);
}
}
}
baseResponse.setData(data);
}
return baseResponse;
......
......@@ -6,11 +6,14 @@ import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.testor.common.constant.StatusEnum;
import com.testor.common.util.BeanConverUtil;
import com.testor.module.contractor.enums.DailyPlanContentEnum;
import com.testor.module.contractor.enums.DailyPlanStatusEnum;
import com.testor.module.contractor.enums.DailyPlanStopRestartWorkEnum;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.ledger.service.TContractorProjectService;
import com.testor.module.contractor.manage.model.domain.TContractorDailyPlanChange;
import com.testor.module.contractor.manage.model.domain.TContractorDailyPlanContent;
import com.testor.module.contractor.manage.model.domain.TContractorDailyPlanStopRestartWork;
......@@ -65,6 +68,9 @@ public class TContractorDailyPlanController extends SuperController
@Autowired
private TContractorDailyPlanService tContractorDailyPlanService;
@Autowired
private TContractorProjectService tContractorProjectService;
/* Generated Method*/
@ApiOperation(value = "新增 日常管理-每日工作计划", notes = "Add TContractorDailyPlan")
@PostMapping(value = "/add")
......@@ -83,6 +89,23 @@ public class TContractorDailyPlanController extends SuperController
BaseResponse<TContractorDailyPlan> baseResponse=new BaseResponse<>();
if(StringHelper.isNotEmpty(id)){
TContractorDailyPlanDTO tContractorDailyPlanDTO = tContractorDailyPlanService.getDetails(id);
if(null != tContractorDailyPlanDTO){
if(tContractorDailyPlanDTO.getProjId() != null) {
List<TContractorProject> contractorProject = tContractorProjectService.list(new LambdaQueryWrapper<TContractorProject>()
.eq(TContractorProject::getId, tContractorDailyPlanDTO.getProjId()));
if (contractorProject != null && !contractorProject.isEmpty()) {
// 使用Stream API提取项目名称并用逗号拼接
String projectNames = contractorProject.stream()
.map(TContractorProject::getName) // 假设TContractorProject有getName方法
.filter(StringUtils::isNotBlank) // 过滤掉空值
.collect(Collectors.joining(",")); // 用逗号拼接
// 将拼接后的项目名称设置到DTO中
tContractorDailyPlanDTO.setTcontractorProjectName(projectNames);
}
}
}
baseResponse.setData(tContractorDailyPlanDTO);
}
return baseResponse;
......
......@@ -94,6 +94,9 @@ public class TContractorConditionReview extends SuperModel
@TableField("reject_opinion")
private String rejectOpinion;
@ApiModelProperty(value = "项目名称")
@TableField(exist = false)
private String tcontractorProjectName;
public static final String ID ="id";
public static final String CONTRACTOR_ID ="contractor_id";
......
......@@ -220,6 +220,10 @@ public class TContractorDailyPlan extends SuperModel
@Translation(other = "0=--,1=作业中,2=作业关闭,3=暂停,4=停工,5=取消",mapper = "workStatus")
private String workStatusName;
@ApiModelProperty(value = "项目名称")
@TableField(exist = false)
private String tcontractorProjectName;
public static final String ID ="id";
public static final String CONTRACTOR_ID ="contractor_id";
public static final String PROJ_ID ="proj_id";
......
package com.testor.module.contractor.manage.model.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.ledger.model.dto.TContractorLedgerDto;
import com.testor.module.contractor.manage.model.domain.TContractorSafetyBrief;
import com.testor.module.contractor.manage.model.domain.TContractorSafetyBriefDetail;
......@@ -21,4 +23,8 @@ public class ContractorSafetyBriefDto extends TContractorSafetyBrief {
@ApiModelProperty(value = "承包商台账信息")
private TContractorLedgerDto contractorLedgerDto;
@ApiModelProperty(value = "项目名称")
@TableField(exist = false)
private String tcontractorProjectName;
}
package com.testor.module.contractor.manage.model.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.testor.module.contractor.ledger.model.domain.TContractorMaterial;
import com.testor.module.contractor.ledger.model.domain.TContractorPerson;
import com.testor.module.contractor.ledger.model.domain.TContractorProtectiveEquipment;
......@@ -59,5 +60,8 @@ public class TContractorAllowDTO extends TContractorAllow {
@ApiModelProperty("是否需要审批(1:可以审批,0:不需要审批)")
private String approval;
@ApiModelProperty(value = "项目名称")
@TableField(exist = false)
private String tcontractorProjectName;
}
......@@ -3,6 +3,7 @@ package com.testor.module.contractor.manage.model.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.testor.common.annotation.Translation;
import com.testor.common.constant.TransConstant;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.manage.model.domain.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
......@@ -79,27 +79,54 @@ public class TContractorAllowServiceImpl extends SuperServiceImpl<TContractorAll
// TODO 根据需求修改查询条件及查询参数
Page<TContractorAllowDTO> tContractorAllowDTOPage = tContractorAllowDao.pageList(resultPage, param);
//自己创建的+状态已通过+没有进行中的修改记录=可以修改
//自己创建的+状态已通过+有进行中的修改记录=不能修改
//自己创建的+状态未通过+没有进行中的修改记录=不能修改
//自己创建的+状态未通过+有进行中的修改记录=不能修改
//不是自己创建的+状态已通过+没有进行中的修改记录=不能修改
//不是自己创建的+状态已通过+有进行中的修改记录=不能修改
//不是自己创建的+状态未通过+没有进行中的修改记录=不能修改
//不是自己创建的+状态未通过+有进行中的修改记录=不能修改
for(TContractorAllowDTO tContractorAllowDTO:tContractorAllowDTOPage.getRecords()){
if(param.getCreateBy()!=null){
tContractorAllowDTO.setApproval(param.getCreateBy().equals(tContractorAllowDTO.getCreateBy())? Constants.APPROVAL_STATUS_ONE:Constants.APPROVAL_STATUS_ZERO);
List<TContractorAccessLogApproval> tContractorAccessLogApprovals = contractorAccessLogApprovalDao.selectByContractorAllowIdAndCreateBy(tContractorAllowDTO.getId(), param.getCreateBy());
if(CollectionUtils.isNotEmpty(tContractorAccessLogApprovals) && tContractorAllowDTO.getProcessStatus().equals(ContractorProcessStatus.APPROVED.getDescription())){
//上一次的状态已通过
if(contractorAccessLogApprovalDao.selectCountByContractorAllowIdAndApprovalStatus(tContractorAllowDTO.getId(), ContractorProcessStatus.UNDER_REVIEW.getValue())>0){
//有审批中记录
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ONE);
tContractorAllowDTO.setModify(Constants.MODIFY_STATUS_ZERO);
}else{
if (param.getCreateBy() != null) {
// 初始设置:如果是自己创建的,有审批权限
tContractorAllowDTO.setApproval(
param.getCreateBy().equals(tContractorAllowDTO.getCreateBy()) ?
Constants.APPROVAL_STATUS_ONE : Constants.APPROVAL_STATUS_ZERO
);
// 如果记录状态是"已通过"
if(null != tContractorAllowDTO.getProcessStatus()){
if (tContractorAllowDTO.getProcessStatus().equals(ContractorProcessStatus.APPROVED.getValue())) {
// 检查是否有进行中的审批记录
if (contractorAccessLogApprovalDao.selectCountByContractorAllowIdAndApprovalStatus(
tContractorAllowDTO.getId(), ContractorProcessStatus.UNDER_REVIEW.getValue()) > 0) {
// 有进行中的审批记录:有审批权限,但不能修改
List<TContractorAccessLogApproval> tContractorAccessLogApprovals = contractorAccessLogApprovalDao.selectByContractorAllowIdAndNameBy(tContractorAllowDTO.getId(), param.getCreateBy());
if(tContractorAccessLogApprovals.size() > 0){
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ONE);
}else{
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ZERO);
}
tContractorAllowDTO.setModify(Constants.MODIFY_STATUS_ZERO);
} else {
// 没有进行中的审批记录:无审批权限,但如果是自己创建的可以修改
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ZERO);
tContractorAllowDTO.setModify(
param.getCreateBy().equals(tContractorAllowDTO.getCreateBy()) ?
Constants.MODIFY_STATUS_ONE : Constants.MODIFY_STATUS_ZERO
);
}
} else {
// 记录状态不是"已通过":无审批权限,无修改权限
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ZERO);
tContractorAllowDTO.setModify(Constants.MODIFY_STATUS_ONE);
tContractorAllowDTO.setModify(Constants.MODIFY_STATUS_ZERO);
}
}else{
}else {
// 记录状态不是"已通过":无审批权限,无修改权限
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ZERO);
tContractorAllowDTO.setModify(Constants.MODIFY_STATUS_ZERO);
}
}else{
tContractorAllowDTO.setApproval(Constants.APPROVAL_STATUS_ZERO);
tContractorAllowDTO.setModify(Constants.APPROVAL_STATUS_ZERO);
}
}
return tContractorAllowDTOPage;
......
......@@ -7,9 +7,11 @@ import com.testor.common.util.BeanConverUtil;
import com.testor.module.contractor.common.model.constant.ContractorProcessStatus;
import com.testor.module.contractor.enums.*;
import com.testor.module.contractor.ledger.model.domain.TContractorMaterial;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.ledger.model.domain.TContractorProtectiveEquipment;
import com.testor.module.contractor.ledger.model.domain.TContractorTools;
import com.testor.module.contractor.ledger.service.TContractorMaterialService;
import com.testor.module.contractor.ledger.service.TContractorProjectService;
import com.testor.module.contractor.ledger.service.TContractorProtectiveEquipmentService;
import com.testor.module.contractor.ledger.service.TContractorToolsService;
import com.testor.module.contractor.manage.dao.TContractorDailyPlanDao;
......@@ -81,6 +83,9 @@ public class TContractorDailyPlanServiceImpl extends SuperServiceImpl<TContracto
@Autowired
private TContractorToolsService tContractorToolsService;
@Autowired
private TContractorProjectService tContractorProjectService;
@Override
@Transactional(rollbackFor = Exception.class)
public TContractorDailyPlan addEntity(TContractorDailyPlanDTO addRequest) {
......@@ -237,6 +242,22 @@ public class TContractorDailyPlanServiceImpl extends SuperServiceImpl<TContracto
loadTools(tContractorDailyPlanDTO, id);
loadMaterials(tContractorDailyPlanDTO, id);
if(null != tContractorDailyPlanDTO){
if(tContractorDailyPlanDTO.getProjId() != null) {
List<TContractorProject> contractorProject = tContractorProjectService.list(new LambdaQueryWrapper<TContractorProject>()
.eq(TContractorProject::getId, tContractorDailyPlanDTO.getProjId()));
if (contractorProject != null && !contractorProject.isEmpty()) {
// 使用Stream API提取项目名称并用逗号拼接
String projectNames = contractorProject.stream()
.map(TContractorProject::getName) // 假设TContractorProject有getName方法
.filter(StringUtils::isNotBlank) // 过滤掉空值
.collect(Collectors.joining(",")); // 用逗号拼接
// 将拼接后的项目名称设置到DTO中
tContractorDailyPlanDTO.setTcontractorProjectName(projectNames);
}
}
}
return tContractorDailyPlanDTO;
}
......@@ -244,33 +265,45 @@ public class TContractorDailyPlanServiceImpl extends SuperServiceImpl<TContracto
private void loadSpecialOperationsManagement(TContractorDailyPlanDTO dto, String id) {
List<TContractorDailyPlanContent> specialOperationsManagementList =
tContractorDailyPlanContentService.getByIdAndType(id, DailyPlanContentEnum.SPECIAL_WORK_MANAGEMENT.getValue());
dto.setSpecialOperationsManagementList(specialOperationsManagementList);
if(null != specialOperationsManagementList && specialOperationsManagementList.size() > 0){
dto.setSpecialOperationsManagementList(specialOperationsManagementList);
}
}
// 加载安全科技管理
private void loadSafetyTechnologyManagement(TContractorDailyPlanDTO dto, String id) {
List<TContractorDailyPlanContent> safetyTechnologyManagement =
tContractorDailyPlanContentService.getByIdAndType(id, DailyPlanContentEnum.PENDING_SUBMISSION.getValue());
dto.setSafetyTechnologyManagement(safetyTechnologyManagement);
if(null != safetyTechnologyManagement && safetyTechnologyManagement.size() > 0){
dto.setSafetyTechnologyManagement(safetyTechnologyManagement);
}
}
// 加载计划变更和工作停复工信息
private void loadPlanChangeInfo(TContractorDailyPlanDTO dto, String id) {
TContractorDailyPlanChange tContractorDailyPlanChange =
tContractorDailyPlanChangeService.getByPlanId(id);
dto.setTContractorDailyPlanChange(tContractorDailyPlanChange);
if(null != tContractorDailyPlanChange){
dto.setTContractorDailyPlanChange(tContractorDailyPlanChange);
}
TContractorDailyPlanStopRestartWork dailyPlanStopWork =
tContractorDailyPlanStopRestartWorkService.getOne(new LambdaQueryWrapper<TContractorDailyPlanStopRestartWork>()
.eq(TContractorDailyPlanStopRestartWork::getPlanId, id)
.eq(TContractorDailyPlanStopRestartWork::getType, DailyPlanStopRestartWorkEnum.STOPPAGES.getValue()));
dto.setTContractorDailyPlanStopWork(dailyPlanStopWork);
if(null != dailyPlanStopWork){
dto.setTContractorDailyPlanStopWork(dailyPlanStopWork);
}
TContractorDailyPlanStopRestartWork dailyPlanRestartWork =
tContractorDailyPlanStopRestartWorkService.getOne(new LambdaQueryWrapper<TContractorDailyPlanStopRestartWork>()
.eq(TContractorDailyPlanStopRestartWork::getPlanId, id)
.eq(TContractorDailyPlanStopRestartWork::getType, DailyPlanStopRestartWorkEnum.RETURN_TO_WORK.getValue()));
dto.setTContractorDailyPlanRestartWork(dailyPlanRestartWork);
if(null != dailyPlanRestartWork){
dto.setTContractorDailyPlanRestartWork(dailyPlanRestartWork);
}
}
// 加载防护设备并拼接
......
package com.testor.module.contractor.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.biz.file.model.dto.FileAjaxDTO;
......@@ -14,10 +15,12 @@ import com.testor.module.contractor.enums.ContractorFlowTypeEnum;
import com.testor.module.contractor.enums.GeneralStatusEnum;
import com.testor.module.contractor.enums.SafetyBriefContentEnum;
import com.testor.module.contractor.ledger.model.domain.TContractorPerson;
import com.testor.module.contractor.ledger.model.domain.TContractorProject;
import com.testor.module.contractor.ledger.model.domain.TContractorProtectiveEquipment;
import com.testor.module.contractor.ledger.model.dto.TContractorPersonParam;
import com.testor.module.contractor.ledger.model.dto.TContractorProtectiveEquipmentParam;
import com.testor.module.contractor.ledger.service.TContractorPersonService;
import com.testor.module.contractor.ledger.service.TContractorProjectService;
import com.testor.module.contractor.ledger.service.TContractorProtectiveEquipmentService;
import com.testor.module.contractor.manage.dao.TContractorSafetyBriefDao;
import com.testor.module.contractor.manage.model.domain.*;
......@@ -94,6 +97,9 @@ public class TContractorSafetyBriefServiceImpl extends SuperServiceImpl<TContrac
@Autowired
private FileController fileController;
@Autowired
private TContractorProjectService tContractorProjectService;
@Override
public Page<ContractorSafetyBriefDto> pageList(TContractorSafetyBriefParam param) {
Long page =
......@@ -113,6 +119,24 @@ public class TContractorSafetyBriefServiceImpl extends SuperServiceImpl<TContrac
List<TContractorSafetyBriefDetail> detailList =
tContractorSafetyBriefDetailService.list(new QueryWrapper<TContractorSafetyBriefDetail>().eq(TContractorSafetyBriefDetail.BRIEF_ID, id).orderByAsc(TContractorSafetyBriefDetail.TREE_SORT));
dto.setBriefDetailList(detailList);
if(null != dto){
if(dto.getProjId() != null) {
List<TContractorProject> contractorProject = tContractorProjectService.list(new LambdaQueryWrapper<TContractorProject>()
.eq(TContractorProject::getId, dto.getProjId()));
if (contractorProject != null && !contractorProject.isEmpty()) {
// 使用Stream API提取项目名称并用逗号拼接
String projectNames = contractorProject.stream()
.map(TContractorProject::getName) // 假设TContractorProject有getName方法
.filter(StringUtils::isNotBlank) // 过滤掉空值
.collect(Collectors.joining(",")); // 用逗号拼接
// 将拼接后的项目名称设置到DTO中
dto.setTcontractorProjectName(projectNames);
}
}
}
return dto;
}
......
......@@ -60,7 +60,7 @@ public class TContractorAccessLogApprovalController extends SuperController {
@GetMapping(value = "/selectUserIdsByOrgId")
public BaseResponse<List<SysUser>> selectUserIdsByOrgId(@RequestParam("orgId") String orgId){
BaseResponse<List<SysUser>> baseResponse=new BaseResponse<>();
List<SysUser> sysUsers = userService.selectUserIdsByOrgId(orgId);
List<SysUser> sysUsers = userService.getApprovalUsers(orgId);
baseResponse.setData(sysUsers);
return baseResponse;
}
......@@ -77,10 +77,10 @@ public class TContractorAccessLogApprovalController extends SuperController {
@ApiOperation(value = "批量更新审批状态", notes = "List THazardWorkPlan with page")
@GetMapping(value = "/批量更新审批状态")
public BaseResponse<Integer> updateApprovalStatus(@RequestParam("ids") List<String> ids,@RequestParam("approvalStatus") String approvalStatus){
@PostMapping(value = "/updateApprovalStatus")
public BaseResponse<Integer> updateApprovalStatus(@RequestBody TContractorAccessLogApprovalParam param){
BaseResponse<Integer>baseResponse=new BaseResponse<>();
int count = tContractorAccessLogApprovalService.updateApprovalStatus(ids, approvalStatus);
int count = tContractorAccessLogApprovalService.updateApprovalStatus(param);
baseResponse.setData(count);
return baseResponse;
}
......
package com.testor.module.hazard.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.module.hazard.model.domain.TContractorAccessLogApproval;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import com.testor.module.hazard.model.dto.TContractorAccessLogApprovalParam;
import com.testor.module.hazard.model.dto.THazardWorkPlanMonitoringRecordParam;
import com.testor.module.hazard.service.THazardWorkPlanMonitoringRecordService;
import com.tongtech.tfw.backend.common.biz.models.BaseResponse;
import com.tongtech.tfw.backend.common.biz.models.BaseResponseList;
import com.tongtech.tfw.backend.core.helper.ObjectHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/hazard/hazardWorkPlanMonitoringRecord")
@Api(value = "THazardWorkPlanMonitoringRecordController", tags = "危险作业计划监控记录")
@Slf4j
public class THazardWorkPlanMonitoringRecordController {
@Autowired
private THazardWorkPlanMonitoringRecordService tHazardWorkPlanMonitoringRecordService;
@ApiOperation(value = "获取 危险作业计划监控记录 分页列表", notes = "List THazardWorkPlanMonitoringRecord with page")
@GetMapping(value = "/list")
public BaseResponse<BaseResponseList<THazardWorkPlanMonitoringRecord>> listEntity(THazardWorkPlanMonitoringRecordParam param){
BaseResponse<BaseResponseList<THazardWorkPlanMonitoringRecord>>baseResponse=new BaseResponse<>();
Page<THazardWorkPlanMonitoringRecord> THazardWorkPlanMonitoringRecord = tHazardWorkPlanMonitoringRecordService.selectPage(param);
BaseResponseList<THazardWorkPlanMonitoringRecord> baseResponseList=new BaseResponseList<>();
baseResponseList.setData(THazardWorkPlanMonitoringRecord.getRecords());
baseResponseList.setTotal(THazardWorkPlanMonitoringRecord.getTotal());
baseResponse.setData(baseResponseList);
return baseResponse;
}
@ApiOperation(value = "新增 危险作业计划监控记录", notes = "Add THazardWorkPlanMonitoringRecord")
@PostMapping(value = "/add")
public BaseResponse<THazardWorkPlanMonitoringRecord> addEntity(@RequestBody THazardWorkPlanMonitoringRecord addRequest) {
BaseResponse<THazardWorkPlanMonitoringRecord> baseResponse=new BaseResponse<>();
if(ObjectHelper.isNotEmpty(addRequest)){
tHazardWorkPlanMonitoringRecordService.insertContractorAccessLogApproval(addRequest);
}
return baseResponse;
}
}
......@@ -29,6 +29,15 @@ public interface TContractorAccessLogApprovalDao extends BaseMapper<TContractorA
*/
List<TContractorAccessLogApproval> selectByContractorAllowIdAndCreateBy(@Param("contractorAllowId") String contractorAllowId, @Param("createBy") String createBy);
/**
* 根据合同准入管理ID和审批人查询审批记录
*
* @param contractorAllowId 合同准入管理ID
* @param nameBy 审批人
* @return 审批记录
*/
List<TContractorAccessLogApproval> selectByContractorAllowIdAndNameBy(@Param("contractorAllowId") String contractorAllowId, @Param("nameBy") String nameBy);
/**
* 根据合同准入管理ID和审批状态查询审批记录数量
*
......
package com.testor.module.hazard.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import com.tongtech.tfw.backend.common.models.supers.SuperDao;
import com.tongtech.tfw.workflow.apis.task.model.dto.TodoTask;
import com.tongtech.tfw.workflow.apis.task.model.dto.TodoTaskSqlParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 危险作业监测记录Mapper接口
*
* @author testor-framework
* @date 2025-01-20
*/
public interface THazardWorkPlanMonitoringRecordDao extends SuperDao<THazardWorkPlanMonitoringRecord>
{
/**
* 查询待办列表
*/
IPage<TodoTask> selectToDoList(Page<TodoTask> resultPage, @Param("todo") TodoTaskSqlParam todoTaskSqlParam);
/**
* 根据计划ID查询监测记录
*/
List<THazardWorkPlanMonitoringRecord> selectByPlanId(@Param("planId") String planId);
/**
* 根据计划ID列表查询监测记录
*/
List<THazardWorkPlanMonitoringRecord> selectByPlanIds(@Param("planIds") List<String> planIds);
/**
* 批量插入监测记录
*/
int insertBatch(@Param("list") List<THazardWorkPlanMonitoringRecord> list);
}
\ No newline at end of file
package com.testor.module.hazard.dao;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecordProject;
import com.tongtech.tfw.backend.common.models.supers.SuperDao;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 危险作业监测记录项目Mapper接口
*
* @author testor-framework
* @date 2025-01-20
*/
public interface THazardWorkPlanMonitoringRecordProjectDao extends SuperDao<THazardWorkPlanMonitoringRecordProject>
{
/**
* 根据监测记录ID查询项目列表
*/
List<THazardWorkPlanMonitoringRecordProject> selectByRecordId(@Param("recordId") String recordId);
/**
* 根据监测记录ID列表查询项目列表
*/
List<THazardWorkPlanMonitoringRecordProject> selectByRecordIds(@Param("recordIds") List<String> recordIds);
/**
* 批量插入监测记录项目
*/
int insertBatch(@Param("list") List<THazardWorkPlanMonitoringRecordProject> list);
/**
* 根据监测记录ID删除项目
*/
int deleteByRecordId(@Param("recordId") String recordId);
/**
* 根据监测记录ID列表批量删除项目
*/
int deleteByRecordIds(@Param("recordIds") List<String> recordIds);
}
\ No newline at end of file
package com.testor.module.hazard.model.domain;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.testor.common.annotation.Translation;
import com.testor.common.constant.TransConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.tongtech.tfw.backend.common.models.supers.SuperModel;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 危险作业监测记录对象 t_hazard_work_plan_monitoring_record
*
* @author testor-framework
* @date 2025-01-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_hazard_work_plan_monitoring_record")
@ApiModel(value = "THazardWorkPlanMonitoringRecord对象", description = "危险作业监测记录")
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class THazardWorkPlanMonitoringRecord extends SuperModel
{
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ApiModelProperty(value = "主键ID")
@TableId("id")
private String id;
/**
* 危险作业id
*/
@ApiModelProperty(value = "危险作业id")
@TableField("plan_id")
private String planId;
/**
* 检测位置
*/
@ApiModelProperty(value = "检测位置")
@TableField("detection_position")
private String detectionPosition;
/**
* 结论
*/
@ApiModelProperty(value = "结论")
@TableField("conclusion")
private String conclusion;
/**
* 现场照片
*/
@ApiModelProperty(value = "现场照片")
@TableField("scene_photo")
private String scenePhoto;
/**
* 检测人签字
*/
@ApiModelProperty(value = "检测人签字")
@TableField("inspector_signature")
private String inspectorSignature;
/**
* 检测时间
*/
@ApiModelProperty(value = "检测时间")
@TableField("inspector_time")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date inspectorTime;
/**
* 监测项目列表(非数据库字段)
*/
@ApiModelProperty(value = "监测项目列表")
@TableField(exist = false)
private List<THazardWorkPlanMonitoringRecordProject> projectList;
// 常量定义
public static final String ID = "id";
public static final String PLAN_ID = "plan_id";
public static final String DETECTION_POSITION = "detection_position";
public static final String CONCLUSION = "conclusion";
public static final String SCENE_PHOTO = "scene_photo";
public static final String STATUS = "status";
public static final String INSPECTOR_SIGNATURE = "inspector_signature";
public static final String INSPECTOR_TIME = "inspector_time";
}
\ No newline at end of file
package com.testor.module.hazard.model.domain;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.tongtech.tfw.backend.common.models.supers.SuperModel;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 危险作业监测记录项目对象 t_hazard_work_plan_monitoring_record_project
*
* @author testor-framework
* @date 2025-01-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_hazard_work_plan_monitoring_record_project")
@ApiModel(value = "THazardWorkPlanMonitoringRecordProject对象", description = "危险作业监测记录项目")
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class THazardWorkPlanMonitoringRecordProject extends SuperModel
{
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ApiModelProperty(value = "主键ID")
@TableId("id")
private String id;
/**
* 项目名称
*/
@ApiModelProperty(value = "项目名称")
@TableField("project_name")
private String projectName;
/**
* 项目值
*/
@ApiModelProperty(value = "项目值")
@TableField("project_value")
private String projectValue;
/**
* 危险作业监测记录表id
*/
@ApiModelProperty(value = "危险作业监测记录表id")
@TableField("hazard_work_plan_monitoring_record_id")
private String hazardWorkPlanMonitoringRecordId;
// 常量定义
public static final String ID = "id";
public static final String PROJECT_NAME = "project_name";
public static final String PROJECT_VALUE = "project_value";
public static final String HAZARD_WORK_PLAN_MONITORING_RECORD_ID = "hazard_work_plan_monitoring_record_id";
public static final String STATUS = "status";
}
\ No newline at end of file
......@@ -7,6 +7,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 危险作业计划 删除参数对象
*
......@@ -31,4 +33,7 @@ public class TContractorAccessLogApprovalParam extends TContractorAccessLogAppro
@ApiModelProperty(value = "排序方式")
private String orderType;
@ApiModelProperty(value = "批量ID")
private List<String> ids;
}
......@@ -23,4 +23,5 @@ public class THazardWorkPlanDelParam implements java.io.Serializable
@ApiModelProperty(value = "批量ID")
private List<String> ids;
}
package com.testor.module.hazard.model.dto;
import com.testor.module.hazard.model.domain.TContractorAccessLogApproval;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@ApiModel(value = "THazardWorkPlanMonitoringRecordParam 列表查询参数对象")
@EqualsAndHashCode(callSuper = true)
public class THazardWorkPlanMonitoringRecordParam extends THazardWorkPlanMonitoringRecord {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "每页数量")
private String limit;
@ApiModelProperty(value = "当前页数")
private String page;
@ApiModelProperty(value = "排序字段")
private String orderBy;
@ApiModelProperty(value = "排序方式")
private String orderType;
}
......@@ -53,7 +53,7 @@ public interface TContractorAccessLogApprovalService extends SuperService<TContr
* @param approvalStatus 审批状态
* @return 更新数量
*/
int updateApprovalStatus(List<String> ids,String approvalStatus);
int updateApprovalStatus(TContractorAccessLogApprovalParam param);
}
package com.testor.module.hazard.service;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecordProject;
import com.tongtech.tfw.backend.common.models.supers.SuperService;
public interface THazardWorkPlanMonitoringRecordProjectService extends SuperService<THazardWorkPlanMonitoringRecordProject> {
}
package com.testor.module.hazard.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.module.hazard.model.domain.TContractorAccessLogApproval;
import com.testor.module.hazard.model.domain.THazardWorkPlanCheck;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import com.testor.module.hazard.model.dto.TContractorAccessLogApprovalParam;
import com.testor.module.hazard.model.dto.THazardWorkPlanMonitoringRecordParam;
import com.tongtech.tfw.backend.common.models.supers.SuperService;
import java.util.List;
public interface THazardWorkPlanMonitoringRecordService extends SuperService<THazardWorkPlanMonitoringRecord> {
/**
* 查询计划监控记录列表
* @param param
* @return
*/
Page<THazardWorkPlanMonitoringRecord> selectPage(THazardWorkPlanMonitoringRecordParam param);
/**
* 新增计划监控记录
* @param hazardWorkPlanMonitoringRecord
*/
void insertContractorAccessLogApproval(THazardWorkPlanMonitoringRecord hazardWorkPlanMonitoringRecord);
}
......@@ -55,8 +55,8 @@ public class TContractorAccessLogApprovalServiceImpl extends SuperServiceImpl<TC
}
@Override
public int updateApprovalStatus(List<String> ids, String approvalStatus) {
return baseMapper.updateApprovalStatus(ids, approvalStatus);
public int updateApprovalStatus(TContractorAccessLogApprovalParam param) {
return baseMapper.updateApprovalStatus(param.getIds(), param.getApprovalStatus());
}
private QueryWrapper<TContractorAccessLogApproval> createQuery(TContractorAccessLogApprovalParam queryParam) {
......
package com.testor.module.hazard.service.impl;
import com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordDao;
import com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordProjectDao;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecordProject;
import com.testor.module.hazard.service.THazardWorkPlanMonitoringRecordProjectService;
import com.testor.module.hazard.service.THazardWorkPlanMonitoringRecordService;
import com.tongtech.tfw.backend.common.models.supers.SuperServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class THazardWorkPlanMonitoringRecordProjectServiceImpl extends SuperServiceImpl<THazardWorkPlanMonitoringRecordProjectDao, THazardWorkPlanMonitoringRecordProject> implements THazardWorkPlanMonitoringRecordProjectService {
}
package com.testor.module.hazard.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.testor.module.hazard.dao.THazardWorkPlanCheckDao;
import com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordDao;
import com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordProjectDao;
import com.testor.module.hazard.model.domain.TContractorAccessLogApproval;
import com.testor.module.hazard.model.domain.THazardWorkPlanCheck;
import com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord;
import com.testor.module.hazard.model.dto.TContractorAccessLogApprovalParam;
import com.testor.module.hazard.model.dto.THazardWorkPlanMonitoringRecordParam;
import com.testor.module.hazard.service.THazardWorkPlanCheckService;
import com.testor.module.hazard.service.THazardWorkPlanMonitoringRecordService;
import com.tongtech.tfw.backend.common.biz.constants.BizConstants;
import com.tongtech.tfw.backend.common.models.supers.SuperServiceImpl;
import com.tongtech.tfw.backend.core.helper.StringHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class THazardWorkPlanMonitoringRecordServiceImpl extends SuperServiceImpl<THazardWorkPlanMonitoringRecordDao, THazardWorkPlanMonitoringRecord> implements THazardWorkPlanMonitoringRecordService {
@Autowired
private THazardWorkPlanMonitoringRecordProjectDao hazardWorkPlanMonitoringRecordProjectDao;
@Override
public Page<THazardWorkPlanMonitoringRecord> selectPage(THazardWorkPlanMonitoringRecordParam param) {
Long page =
StringHelper.isEmpty(param.getPage()) ? BizConstants.PAGE : Long.valueOf(param.getPage());
Long limit =
StringHelper.isEmpty(param.getLimit()) ? BizConstants.LIMIT : Long.valueOf(param.getLimit());
Page<THazardWorkPlanMonitoringRecord> resultPage = new Page<>(page, limit); // 修改此处泛型类型
QueryWrapper<THazardWorkPlanMonitoringRecord> queryWrapper = this.createQuery(param);
Page<THazardWorkPlanMonitoringRecord> tHazardWorkPlanMonitoringRecordPage = this.page(resultPage, queryWrapper);
tHazardWorkPlanMonitoringRecordPage.getRecords().forEach( tHazardWorkPlanMonitoringRecord -> {
tHazardWorkPlanMonitoringRecord.setProjectList(
hazardWorkPlanMonitoringRecordProjectDao.selectByRecordId(tHazardWorkPlanMonitoringRecord.getId()));
});
return tHazardWorkPlanMonitoringRecordPage;
}
@Transactional
@Override
public void insertContractorAccessLogApproval(THazardWorkPlanMonitoringRecord hazardWorkPlanMonitoringRecord) {
this.baseMapper.insert(hazardWorkPlanMonitoringRecord);
if(hazardWorkPlanMonitoringRecord.getProjectList() != null && !hazardWorkPlanMonitoringRecord.getProjectList().isEmpty()) {
hazardWorkPlanMonitoringRecord.getProjectList().forEach(project -> {
project.setHazardWorkPlanMonitoringRecordId(hazardWorkPlanMonitoringRecord.getId());
hazardWorkPlanMonitoringRecordProjectDao.insert(project);
});
}
}
private QueryWrapper<THazardWorkPlanMonitoringRecord> createQuery(THazardWorkPlanMonitoringRecordParam queryParam) {
QueryWrapper<THazardWorkPlanMonitoringRecord> queryWrapper = new QueryWrapper<>();
if (StringHelper.isNotEmpty(queryParam.getPlanId())) {
queryWrapper.eq("plan_id", queryParam.getPlanId());
}
queryWrapper.orderByDesc(THazardWorkPlanMonitoringRecord.CREATE_DATE);
return queryWrapper;
}
}
......@@ -3,6 +3,7 @@ package com.testor.module.iam.dao;
import com.testor.biz.sys.user.model.domain.SysUser;
import com.testor.module.iam.model.domain.IamSysUser;
import com.tongtech.tfw.backend.common.models.supers.SuperDao;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -11,10 +12,24 @@ import java.util.List;
public interface SysUserDao extends SuperDao<SysUser> {
/**
* 准入管理修改获取审批人
* @param orgId
* @return
* 查询有权限审批当前组织数据的用户
* 逻辑:用户所在组织能够看到当前组织的数据
*/
List<SysUser> selectUserIdsByOrgId(String orgId);
List<SysUser> selectApprovalUsersByOrgId(@Param("orgId") String orgId);
/**
* 查询有权限审批特定承包商记录的用户
*/
List<SysUser> selectApprovalUsersForContractor(@Param("contractorId") String contractorId, @Param("orgId") String orgId);
/**
* 检查用户是否有审批角色
*/
boolean checkUserHasApprovalRole(@Param("userId") String userId);
/**
* 检查组织访问权限
*/
boolean checkOrgAccess(@Param("sourceOrgId") String sourceOrgId, @Param("targetOrgId") String targetOrgId);
}
......@@ -7,12 +7,25 @@ import com.tongtech.tfw.backend.common.models.supers.SuperService;
import java.util.List;
public interface SysUserService extends SuperService<SysUser> {
/**
* 获取有权限审批当前组织承包商数据的用户
*/
public List<SysUser> getApprovalUsers(String orgId);
/**
* 获取有权限审批特定承包商记录的用户
*/
public List<SysUser> getApprovalUsersForContractor(String contractorId, String orgId);
/**
* 验证用户是否有审批权限
*/
public boolean validateApprovalPermission(String userId, String recordId, String orgId);
/**
* 准入管理修改获取审批人
* @param orgId
* @return
* 验证用户是否有审批权限
*/
List<SysUser> selectUserIdsByOrgId(String orgId);
public boolean validateApprovalPermissionForOrg(String userId, String orgId);
}
package com.testor.module.iam.service.impl;
import com.testor.biz.sys.user.model.domain.SysUser;
import com.testor.module.contractor.manage.dao.TContractorAllowDao;
import com.testor.module.contractor.manage.model.domain.TContractorAllow;
import com.testor.module.contractor.manage.model.dto.TContractorAllowDTO;
import com.testor.module.iam.dao.IamSysUserDao;
import com.testor.module.iam.dao.SysUserDao;
import com.testor.module.iam.model.domain.IamSysUser;
import com.testor.module.iam.service.IamSysUserService;
import com.testor.module.iam.service.SysUserService;
import com.tongtech.tfw.backend.common.models.supers.SuperServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List;
@Service("SysUserService")
public class SysUserServiceImpl extends SuperServiceImpl<SysUserDao, SysUser> implements SysUserService {
@Override
public List<SysUser> selectUserIdsByOrgId(String orgId) {
return baseMapper.selectUserIdsByOrgId(orgId);
@Autowired
private TContractorAllowDao tContractorAllowDao;
/**
* 获取有权限审批当前组织承包商数据的用户
*/
public List<SysUser> getApprovalUsers(String orgId) {
return baseMapper.selectApprovalUsersByOrgId(orgId);
}
/**
* 获取有权限审批特定承包商记录的用户
*/
@Transactional(readOnly = true)
public List<SysUser> getApprovalUsersForContractor(String contractorId, String orgId) {
// 首先验证承包商记录是否存在且可访问
TContractorAllow contractor = tContractorAllowDao.selectById(contractorId);
if (contractor == null) {
throw new RuntimeException("承包商记录不存在");
}
// 检查当前用户是否有权限访问该承包商记录
boolean hasAccess = baseMapper.checkOrgAccess(contractor.getOrgId(), orgId);
if (!hasAccess) {
throw new RuntimeException("无权限访问该承包商记录");
}
return baseMapper.selectApprovalUsersForContractor(contractorId, orgId);
}
/**
* 验证用户是否有审批权限
*/
public boolean validateApprovalPermission(String userId, String recordId, String orgId) {
// 1. 检查用户是否有审批角色
boolean hasRole = baseMapper.checkUserHasApprovalRole(userId);
if (!hasRole) {
return false;
}
// 2. 获取用户信息
SysUser user = baseMapper.selectById(userId);
if (user == null) {
return false;
}
// 3. 检查用户组织权限
boolean hasOrgAccess = baseMapper.checkOrgAccess(user.getOrgId(), orgId);
if (!hasOrgAccess) {
return false;
}
// 4. 检查记录访问权限
TContractorAllow record = tContractorAllowDao.selectById(recordId);
if (record == null) {
return false;
}
return baseMapper.checkOrgAccess(record.getOrgId(), user.getOrgId());
}
/**
* 验证用户是否有审批当前组织数据的权限
*/
public boolean validateApprovalPermissionForOrg(String userId, String orgId) {
// 1. 检查用户是否有审批角色
boolean hasRole = baseMapper.checkUserHasApprovalRole(userId);
if (!hasRole) {
return false;
}
// 2. 获取用户信息
SysUser user = baseMapper.selectById(userId);
if (user == null) {
return false;
}
// 3. 检查用户组织权限
return baseMapper.checkOrgAccess(user.getOrgId(), orgId);
}
}
......@@ -154,6 +154,15 @@ public class TTrainExaminationManageController extends SuperController {
return tTrainExaminationManageService.getByIds(id);
}
@ApiOperation(value = "获取 考试管理—安全培训教育 ", notes = "Get TTrainExaminationManage By Id")
@GetMapping(value = "/select")
public BaseResponse<TTrainExaminationManageParam> getByCondition(@RequestParam("id") String id,
@RequestParam(value = "orgId", required = false) String orgId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "status", required = false) String status) {
return tTrainExaminationManageService.getByCondition(id,orgId,name,status);
}
@ApiOperation(value = "删除 考试管理—安全培训教育 ", notes = "delete TTrainExaminationManage By Id")
@PutMapping(value = "/delete")
......
......@@ -24,6 +24,8 @@ public interface TTrainExaminationManageService extends SuperService<TTrainExami
BaseResponse<TTrainExaminationManageParam> getByIds(String id);
BaseResponse<TTrainExaminationManageParam> getByCondition(String id,String orgId,String name,String status);
BaseResponse<BizGeneralResponse> deleteEntity(TTrainExaminationManageDelParam deleteRequest)throws Exception;
IPage<TTrainExaminationManageParam> getExamAffiliation(TTrainExaminationManageParam param, String parentIds, String orgId);
......
......@@ -185,6 +185,28 @@ public class TTrainExaminationManageServiceImpl extends SuperServiceImpl<TTrainE
return baseResponse;
}
@Override
public BaseResponse<TTrainExaminationManageParam> getByCondition(String id, String orgId, String name, String status) {
BaseResponse<TTrainExaminationManageParam> baseResponse = new BaseResponse<>();
if (StringHelper.isNotEmpty(id)) {
TTrainExaminationManage data = this.getById(id);
TTrainExaminationManageParam tTrainProjectParam = BeanHelper.beanToBean(data, TTrainExaminationManageParam.class);
// 培训计划id
String projectParamId = tTrainProjectParam.getId();
// 试卷id
String testPaperId = tTrainProjectParam.getPaperId();
// 获取人员集合
List<TTrainMyManagement> personList = tTrainMyManagementService.getPerson(projectParamId, orgId, name, status);
List<MyManagement> collect = personList.stream().map(bean -> bean.beanToBean(MyManagement.class)).collect(Collectors.toList());
// 获取试卷名称
String testPaperName = tTrainPaperService.getTestPaperName(testPaperId);
tTrainProjectParam.setMyManagements(collect);
tTrainProjectParam.setTestPaperName(testPaperName);
baseResponse.setData(tTrainProjectParam);
}
return baseResponse;
}
@Override
public BaseResponse<BizGeneralResponse> deleteEntity(TTrainExaminationManageDelParam deleteRequest) throws Exception{
BaseResponse<BizGeneralResponse> baseResponse = new BaseResponse<>();
......
......@@ -31,6 +31,9 @@ public interface TTrainMyManagementService extends SuperService<TTrainMyManageme
// 教育培训获取详情
List<TTrainMyManagement> getPerson(String projectParamId);
// 教育培训获取详情
List<TTrainMyManagement> getPerson(String projectParamId,String orgId,String name,String status);
// 员工培训情况-培训计划
IPage<TTrainMyManagementParam> staffTrainCase(TTrainMyManagementParam param,String parentIds,String orgId);
......
package com.testor.module.train.myManagement.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -177,6 +178,17 @@ public class TTrainMyManagementServiceImpl extends SuperServiceImpl<TTrainMyMana
return list;
}
@Override
public List<TTrainMyManagement> getPerson(String projectParamId, String orgId, String name, String status) {
return this.list(new LambdaQueryWrapper<TTrainMyManagement>()
.eq(TTrainMyManagement::getTaskId, projectParamId)
.eq(StringUtils.isNotBlank(orgId), TTrainMyManagement::getOrgId, orgId)
.like(StringUtils.isNotBlank(name), TTrainMyManagement::getPersonName, name)
.eq(StringUtils.isNotBlank(status), TTrainMyManagement::getCurrentStatus, status)
.orderByDesc(TTrainMyManagement::getCurrentStatus, TTrainMyManagement::getCreateDate)
);
}
@Override
public IPage<TTrainMyManagementParam> staffTrainCase(TTrainMyManagementParam param, String parentIds, String orgId) {
Long page = StringHelper.isEmpty(param.getPage()) ? BizConstants.PAGE : Long.valueOf(param.getPage());
......
......@@ -33,6 +33,11 @@
where approval_status = '2' and contractor_allow_id =#{contractorAllowId} and create_by = #{createBy}
</select>
<select id="selectByContractorAllowIdAndNameBy" resultMap="BaseResultMap">
select * from t_contractor_access_log_approval
where approval_status = '2' and contractor_allow_id =#{contractorAllowId} and name_by = #{nameBy}
</select>
<update id="updateApprovalStatus">
update t_contractor_access_log_approval
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordDao">
<!-- 开启二级缓存 -->
<!-- <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> -->
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecord">
<id column="id" property="id"/>
<result column="plan_id" property="planId"/>
<result column="detection_position" property="detectionPosition"/>
<result column="conclusion" property="conclusion"/>
<result column="scene_photo" property="scenePhoto"/>
<result column="status" property="status"/>
<result column="inspector_signature" property="inspectorSignature"/>
<result column="inspector_time" property="inspectorTime"/>
<!-- 继承父类的字段 -->
<result column="create_by" property="createBy"/>
<result column="create_date" property="createDate"/>
<result column="update_by" property="updateBy"/>
<result column="update_date" property="updateDate"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, plan_id, detection_position, conclusion, scene_photo, status,
inspector_signature, inspector_time, create_by, create_date, update_by,
update_date
</sql>
<!-- 查询待办列表 -->
<select id="selectToDoList" resultType="com.tongtech.tfw.workflow.apis.task.model.dto.TodoTask">
SELECT
t.id as taskId,
t.name as taskName,
t.proc_inst_id as processInstanceId,
t.proc_def_id as processDefinitionId,
t.create_time as createTime,
t.assignee as assignee,
i.business_key as businessKey
FROM act_ru_task t
LEFT JOIN act_ru_execution i ON t.proc_inst_id_ = i.id_
WHERE t.assignee_ = #{todo.userId}
ORDER BY t.create_time_ DESC
</select>
<!-- 根据计划ID查询监测记录 -->
<select id="selectByPlanId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_hazard_work_plan_monitoring_record
WHERE plan_id = #{planId}
ORDER BY create_date DESC
</select>
<!-- 根据计划ID列表查询监测记录 -->
<select id="selectByPlanIds" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_hazard_work_plan_monitoring_record
WHERE plan_id IN
<foreach collection="planIds" item="planId" open="(" separator="," close=")">
#{planId}
</foreach>
ORDER BY create_date DESC
</select>
<!-- 批量插入监测记录 -->
<insert id="insertBatch">
INSERT INTO t_hazard_work_plan_monitoring_record (
id, plan_id, detection_position, conclusion, scene_photo, status,
inspector_signature, inspector_time, create_by, create_date, update_by, update_date
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id}, #{item.planId}, #{item.detectionPosition}, #{item.conclusion},
#{item.scenePhoto}, #{item.status}, #{item.inspectorSignature},
#{item.inspectorTime}, #{item.createBy}, #{item.createDate},
#{item.updateBy}, #{item.updateDate}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.testor.module.hazard.dao.THazardWorkPlanMonitoringRecordProjectDao">
<!-- 开启二级缓存 -->
<!-- <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> -->
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.testor.module.hazard.model.domain.THazardWorkPlanMonitoringRecordProject">
<id column="id" property="id"/>
<result column="project_name" property="projectName"/>
<result column="project_value" property="projectValue"/>
<result column="hazard_work_plan_monitoring_record_id" property="hazardWorkPlanMonitoringRecordId"/>
<result column="status" property="status"/>
<!-- 继承父类的字段 -->
<result column="create_by" property="createBy"/>
<result column="create_date" property="createDate"/>
<result column="update_by" property="updateBy"/>
<result column="update_date" property="updateDate"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, project_name, project_value, hazard_work_plan_monitoring_record_id, status,
create_by, create_date, update_by, update_date
</sql>
<!-- 根据监测记录ID查询项目列表 -->
<select id="selectByRecordId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_hazard_work_plan_monitoring_record_project
WHERE hazard_work_plan_monitoring_record_id = #{recordId}
ORDER BY create_date ASC
</select>
<!-- 根据监测记录ID列表查询项目列表 -->
<select id="selectByRecordIds" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_hazard_work_plan_monitoring_record_project
WHERE hazard_work_plan_monitoring_record_id IN
<foreach collection="recordIds" item="recordId" open="(" separator="," close=")">
#{recordId}
</foreach>
ORDER BY create_date ASC
</select>
<!-- 批量插入监测记录项目 -->
<insert id="insertBatch">
INSERT INTO t_hazard_work_plan_monitoring_record_project (
id, project_name, project_value, hazard_work_plan_monitoring_record_id, status,
create_by, create_date, update_by, update_date
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.id}, #{item.projectName}, #{item.projectValue},
#{item.hazardWorkPlanMonitoringRecordId}, #{item.status},
#{item.createBy}, #{item.createDate}, #{item.updateBy}, #{item.updateDate}
)
</foreach>
</insert>
<!-- 根据监测记录ID删除项目 -->
<update id="deleteByRecordId">
UPDATE t_hazard_work_plan_monitoring_record_project
SET
update_by = #{updateBy},
update_date = NOW()
WHERE hazard_work_plan_monitoring_record_id = #{recordId}
</update>
<!-- 根据监测记录ID列表批量删除项目 -->
<update id="deleteByRecordIds">
UPDATE t_hazard_work_plan_monitoring_record_project
SET
update_by = #{updateBy},
update_date = NOW()
WHERE hazard_work_plan_monitoring_record_id IN
<foreach collection="recordIds" item="recordId" open="(" separator="," close=")">
#{recordId}
</foreach>
</update>
</mapper>
\ No newline at end of file
......@@ -44,25 +44,68 @@
del_flag, remark
</sql>
<select id="selectUserIdsByOrgId" resultMap="BaseResultMap">
select * from t_sys_user
where user_id in(
select user_id from t_sys_user_role
where role_id in(
select role_id from t_sys_role
where role_name in(
'安全管理部门','作业所在部门','用户管理员','系统管理员'
)
)
and
user_id in(
select user_id from t_sys_user
where org_id in(
select org_id from t_sys_org
where status !=1 and is_dept = '0' and parent_ids like concat('%',#{orgId},'%') or org_id = #{orgId}
)
<!-- 查询有权限审批当前组织数据的用户 -->
<select id="selectApprovalUsersByOrgId" resultMap="BaseResultMap">
SELECT DISTINCT u.*
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
JOIN t_sys_org o ON u.org_id = o.org_id
WHERE r.role_name IN ('安全管理部门', '作业所在部门', '用户管理员', '系统管理员')
AND o.status != '1'
AND o.is_dept = '0'
AND EXISTS (
SELECT 1
FROM t_sys_org o2
WHERE o2.org_id = #{orgId}
AND (o2.parent_ids LIKE CONCAT('%', o.org_id, '%') OR o2.org_id = o.org_id)
)
</select>
<!-- 查询有权限审批特定承包商记录的用户 -->
<select id="selectApprovalUsersForContractor" resultMap="BaseResultMap">
WITH contractor_orgs AS (
SELECT unnest(string_to_array(tcl.org_id, ',')) AS org_id
FROM t_contractor_allow tca
JOIN t_contractor_ledger tcl ON tcl.id = tca.contractor_id
WHERE tca.id = #{contractorId}
)
SELECT DISTINCT u.*
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
JOIN t_sys_org o ON u.org_id = o.org_id
JOIN contractor_orgs co ON o.org_id = co.org_id
WHERE r.role_name IN ('安全管理部门', '作业所在部门', '用户管理员', '系统管理员')
AND o.status != '1'
AND o.is_dept = '0'
AND EXISTS (
SELECT 1
FROM t_sys_org o2
WHERE o2.org_id = #{orgId}
AND (o2.parent_ids LIKE CONCAT('%', o.org_id, '%') OR o2.org_id = o.org_id)
)
</select>
<!-- 检查用户是否有审批角色 -->
<select id="checkUserHasApprovalRole" resultType="boolean">
SELECT COUNT(*) > 0
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
WHERE u.user_id = #{userId}
AND r.role_name IN ('安全管理部门', '作业所在部门', '用户管理员', '系统管理员')
</select>
<!-- 检查组织访问权限 -->
<select id="checkOrgAccess" resultType="boolean">
SELECT EXISTS (
SELECT 1
FROM t_sys_org o1
JOIN t_sys_org o2 ON o1.org_id = #{sourceOrgId}
WHERE (o2.parent_ids LIKE CONCAT('%', o1.org_id, '%') OR o2.org_id = o1.org_id)
AND o1.org_id = #{targetOrgId}
)
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment