项目对接

This commit is contained in:
lcj
2025-12-08 19:10:04 +08:00
parent bb8c951651
commit f62c542684
12 changed files with 239 additions and 205 deletions

View File

@ -54,3 +54,4 @@ docs
/file
.idea/
chat-memory/
queries/

View File

@ -1,37 +1,28 @@
package org.dromara.message.controller;
import java.util.List;
import java.util.Objects;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.message.domain.bo.MsgConfigAddReq;
import org.dromara.message.domain.bo.MsgConfigEditReq;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysUserService;
import org.springframework.boot.actuate.beans.BeansEndpoint;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import cn.hutool.core.bean.BeanUtil;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.message.domain.vo.MsgConfigVo;
import org.dromara.message.domain.bo.MsgConfigBo;
import org.dromara.message.service.IMsgConfigService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.message.domain.bo.MsgConfigAddReq;
import org.dromara.message.domain.bo.MsgConfigBo;
import org.dromara.message.domain.bo.MsgConfigEditReq;
import org.dromara.message.domain.vo.MsgConfigVo;
import org.dromara.message.service.IMsgConfigService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 消息配置
@ -46,21 +37,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
public class MsgConfigController extends BaseController {
private final IMsgConfigService msgConfigService;
private final ISysUserService userService;
private final ISysDeptService deptService;
/**
* 获取当前用户所在上级部门ID
*/
@SaCheckPermission("message:config:allUsersOfTheDepartment")
@GetMapping("/allUsersOfTheDepartment")
public R<SysDeptBo> allUsersOfTheDepartment() {
//获取当前用户的上级部门
Long deptId = Objects.requireNonNull(LoginHelper.getLoginUser()).getDeptId();
SysDeptBo bm = deptService.selectDeptByIdBo(deptId);
//从顶级往下推两个部门
return R.ok(bm);
}
/**
* 查询消息配置列表

View File

@ -1,36 +1,35 @@
package org.dromara.project.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.contractor.domain.dto.contractor.SubContractorQueryReq;
import org.dromara.contractor.domain.vo.contractor.SubContractorVo;
import org.dromara.contractor.service.ISubContractorService;
import org.dromara.project.domain.dto.attendance.*;
import org.dromara.project.domain.dto.projectteam.BusProjectTeamQueryReq;
import org.dromara.project.domain.vo.attendance.*;
import org.dromara.project.domain.vo.projectteam.BusProjectTeamVo;
import org.dromara.project.service.IBusProjectTeamService;
import org.dromara.system.domain.dto.FbUserListDto;
import org.dromara.system.domain.vo.SysUserVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.project.domain.vo.BusAttendanceVo;
import org.dromara.project.domain.bo.BusAttendanceBo;
import org.dromara.project.service.IBusAttendanceService;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.contractor.domain.dto.contractor.SubContractorQueryReq;
import org.dromara.contractor.domain.vo.contractor.SubContractorVo;
import org.dromara.contractor.service.ISubContractorService;
import org.dromara.project.domain.bo.BusAttendanceBo;
import org.dromara.project.domain.dto.attendance.*;
import org.dromara.project.domain.dto.projectteam.BusProjectTeamQueryReq;
import org.dromara.project.domain.vo.BusAttendanceVo;
import org.dromara.project.domain.vo.attendance.*;
import org.dromara.project.domain.vo.projectteam.BusProjectTeamVo;
import org.dromara.project.service.IBusAttendanceService;
import org.dromara.project.service.IBusProjectTeamService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 考勤
@ -138,6 +137,7 @@ public class BusAttendanceController extends BaseController {
public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(TwoWeekDto dto) {
return R.ok(busAttendanceService.getClockDateForTwoWeekList(dto));
}
/**
* 查询项目施工人员当天考勤状况
*/

View File

@ -168,4 +168,9 @@ public class BusProject extends BaseEntity {
*/
private String position;
/**
* xzd项目id
*/
private Long xzdProjectId;
}

View File

@ -140,4 +140,9 @@ public class BusProjectCreateReq implements Serializable {
* 所属部门列表
*/
private List<Long> deptIds;
/**
* xzd项目id
*/
private Long xzdProjectId;
}

View File

@ -223,4 +223,9 @@ public class BusProjectVo implements Serializable {
*/
private List<SysRoleVo> roleVos;
/**
* xzd项目id
*/
private Long xzdProjectId;
}

View File

@ -99,6 +99,7 @@ public class MqDelayTaskServiceImpl extends ServiceImpl<MqDelayTaskMapper, MqDel
task.setStatus(2);
this.updateById(task);
} catch (Exception e) {
log.error("执行任务失败:{}", e.getMessage(), e);
// 更新失败状态
task.setRetryCount(task.getRetryCount() + 1);
task.setFailReason(e.getMessage());

View File

@ -14,8 +14,12 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sse.dto.SseMessageDto;
import org.dromara.common.sse.utils.SseMessageUtils;
import org.dromara.rabbitmq.domain.MqDelayTask;
import org.dromara.rabbitmq.enums.MqDelayTaskTypeEnum;
import org.dromara.rabbitmq.service.IMqDelayTaskService;
import org.dromara.safety.domain.HazardHiddenDanger;
import org.dromara.safety.domain.HazardHiddenDangerRectify;
import org.dromara.safety.domain.HazardRule;
import org.dromara.safety.domain.bo.HazardHiddenDangerBo;
import org.dromara.safety.domain.bo.HazardHiddenDangerRectifyBo;
import org.dromara.safety.domain.dto.hiddendangerrectify.HazardHiddenDangerRectifyRectificationReq;
@ -28,6 +32,7 @@ import org.dromara.safety.mapper.HazardHiddenDangerRectifyMapper;
import org.dromara.safety.service.IHazardHiddenDangerRectifyService;
import org.dromara.safety.service.IHazardHiddenDangerService;
import org.dromara.safety.service.IHazardRuleNotifyObjectService;
import org.dromara.safety.service.IHazardRuleService;
import org.dromara.websocket.ChatServerHandler;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -57,6 +62,10 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
private final IHazardRuleNotifyObjectService hazardRuleNotifyObjectService;
private final IHazardRuleService hazardRuleService;
private final IMqDelayTaskService mqDelayTaskService;
/**
* 查询隐患整改情况
*
@ -323,6 +332,12 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
if (!HazardHiddenDanger.RECTIFY.equals(hiddenDanger.getStatus())) {
return;
}
// 隐患等级
HazardRule rule = hazardRuleService.getById(hiddenDanger.getDangerLevelId());
String notifyMethod = rule.getNotifyMethod();
if (notifyMethod.equals("1")) {
// 通知领导
} else {
// 发送消息
String dangerCode = hiddenDanger.getDangerCode();
Long rectifyUserId = hiddenDanger.getRectifyUserId();
@ -351,5 +366,28 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
sseDto.setProjectId(projectId);
sseDto.setIsRecord(true);
SseMessageUtils.publishMessage(sseDto);
// 重复整改
if (notifyMethod.equals("2")) {
// 获取通知时间
LocalDateTime executeTime = LocalDateTime.now();
String responseUnit = rule.getResponseUnit();
switch (responseUnit) {
case "3" -> executeTime = executeTime.plusDays(rule.getResponseTime());
case "2" -> executeTime = executeTime.plusHours(rule.getResponseTime());
case "1" -> executeTime = executeTime.plusMinutes(rule.getResponseTime());
}
// 发送整改期限数据到消息队列
MqDelayTask task = new MqDelayTask();
task.setBizType(MqDelayTaskTypeEnum.HIDDEN_DANGER.getType());
task.setBizId(bizId);
task.setExecuteTime(executeTime);
try {
mqDelayTaskService.addDelayTask(task);
} catch (Exception e) {
log.error("添加延迟任务失败,延迟任务: {}", task, e);
throw new ServiceException("添加延迟任务失败");
}
}
}
}
}

View File

@ -1,7 +1,6 @@
package org.dromara.system.service;
import cn.hutool.core.lang.tree.Tree;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.bo.SysDeptBo;
import org.dromara.system.domain.vo.SysDeptVo;
@ -60,13 +59,6 @@ public interface ISysDeptService {
*/
SysDeptVo selectDeptById(Long deptId);
/**
* 根据部门ID获取到顶级部门
*
* @return 部门信息
*/
SysDeptBo selectDeptByIdBo(Long deptId);
/**
* 根据部门ID查询所属项目ID列表
*

View File

@ -35,7 +35,6 @@ import org.dromara.system.mapper.SysPostMapper;
import org.dromara.system.mapper.SysRoleMapper;
import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysRoleService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
@ -60,8 +59,6 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
private final SysUserMapper userMapper;
private final SysPostMapper postMapper;
private final ISysRoleService roleService;
/**
* 查询部门管理数据
*
@ -220,16 +217,6 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
return dept;
}
/**
* 根据部门ID获取到顶级部门
*
* @return 部门信息
*/
@Override
public SysDeptBo selectDeptByIdBo(Long deptId) {
return null;
}
/**
* 根据部门ID查询所属项目ID列表
*

View File

@ -1,7 +1,10 @@
package org.dromara.xzd.biddingManagement.biaoqianlixiang.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
@ -9,19 +12,20 @@ import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdProjectRiskAssessment;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.bo.XzdBqlxProjectInfoBo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.dto.BiddingManagementDto;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.dto.QuerBiddingManagementDto;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.QuerListXzdBidPreVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.QueryListXzdVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBqlxProjectInfoVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.mapper.XzdBidPreProjectMapper;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBidPreProjectService;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBqlxProjectInfoService;
import org.dromara.xzd.biddingManagement.biddingDocument.domain.XzdBiddingFileEstimate;
import org.dromara.xzd.biddingManagement.biddingDocument.service.IXzdBiddingFileEstimateService;
@ -41,15 +45,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.mapper.XzdBidPreProjectMapper;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBidPreProjectService;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -69,7 +66,6 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
private final IXzdBqlxProjectInfoService iXzdBqlxProjectInfoService;
private final AreaUtil areaUtil;
private final SysOssServiceImpl sysOssService;
@ -104,8 +100,6 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
@Autowired
private IXzdBiddingAgencyFeePaymentService xzdBiddingAgencyFeePaymentService;
/**
* 查询标前立项
*
@ -253,7 +247,6 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
iXzdBqlxProjectInfoService.saveOrUpdate(xzdBqlxProjectInfo);
return true;
}
@ -306,9 +299,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
// 删除附件
if (!StringUtils.isEmpty(xzdBidPreProjectVo.getFileId())) {
List<Long> collect = Arrays.stream(xzdBidPreProjectVo.getFileId().split(",")).map(item -> {
return Long.parseLong(item);
}).collect(Collectors.toList());
List<Long> collect = Arrays.stream(xzdBidPreProjectVo.getFileId().split(",")).map(Long::parseLong).collect(Collectors.toList());
sysOssService.deleteWithValidByIds(collect, false);
}
@ -322,6 +313,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
@ -329,7 +321,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdbqlx')")
@EventListener(condition = "#processEvent.flowCode.endsWith('xzdbqlx')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("标前立项审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
@ -351,7 +343,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdbqlx')")
@EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdbqlx')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("标前立项审核任务创建了{}", processTaskEvent.toString());
}

View File

@ -5,11 +5,13 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.service.XzdProjectService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.SpringUtils;
@ -18,6 +20,8 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.project.domain.dto.project.BusProjectCreateReq;
import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
@ -50,6 +54,9 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
private final XzdProjectMapper baseMapper;
@Resource
private IBusProjectService projectService;
@Autowired
private XzdProjectProfileServiceImpl xzdProjectProfileService;
@Autowired
@ -723,13 +730,38 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('XzdProject')")
@EventListener(condition = "#processEvent.flowCode.endsWith('XzdProject')")
@Transactional
public void processPlansHandler(ProcessEvent processEvent) {
log.info("项目信息审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdProject byId = this.getById(Long.valueOf(id));
byId.setShzt(processEvent.getStatus());
if (byId == null) {
log.error("项目信息审核任务更新状态失败:{} 无此项目", id);
return;
}
String status = processEvent.getStatus();
if (BusinessStatusEnum.FINISH.getStatus().equals(status)) {
try {
// 创建系统项目
BusProjectCreateReq project = new BusProjectCreateReq();
project.setXzdProjectId(byId.getId());
project.setProjectName(byId.getProjectName());
project.setShortName(byId.getProjectAbbreviation());
project.setOnStreamTime(String.valueOf(byId.getActualStartDate()));
// 获取项目概括
XzdProjectProfile projectProfile = xzdProjectProfileService.lambdaQuery()
.eq(XzdProjectProfile::getXzdProjectId, byId.getId())
.last("limit 1")
.one();
project.setProjectGeneralize(projectProfile.getProjectProfile());
project.setProvince(projectProfile.getProvince());
projectService.insertByBo(project);
} catch (Exception e) {
log.error("自动创建系统项目失败:{} - {}", byId.getId(), byId.getProjectName(), e);
}
}
byId.setShzt(status);
boolean b = this.updateById(byId);
if (!b) {
log.error("项目信息审核任务更新状态失败");
@ -746,7 +778,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('XzdProject')")
@EventListener(condition = "#processTaskEvent.flowCode.endsWith('XzdProject')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("项目信息审批审核任务创建了{}", processTaskEvent.toString());
}