项目对接

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);
}
/**
* 查询消息配置列表
@ -79,7 +55,7 @@ public class MsgConfigController extends BaseController {
@SaCheckPermission("message:config:query")
@GetMapping("/{id}")
public R<MsgConfigVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@PathVariable Long id) {
return R.ok(msgConfigService.queryById(id));
}

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;
/**
* 考勤
@ -92,7 +91,7 @@ public class BusAttendanceController extends BaseController {
@SaCheckPermission("project:attendance:query")
@GetMapping("/{id}")
public R<BusAttendanceVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
@PathVariable Long id) {
return R.ok(busAttendanceService.queryById(id));
}
@ -138,6 +137,7 @@ public class BusAttendanceController extends BaseController {
public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(TwoWeekDto dto) {
return R.ok(busAttendanceService.getClockDateForTwoWeekList(dto));
}
/**
* 查询项目施工人员当天考勤状况
*/
@ -150,8 +150,8 @@ public class BusAttendanceController extends BaseController {
* 查询当天出勤人员
*/
@GetMapping("/list/attendanceUser")
public TableDataInfo<AttendanceTodayUserVo> getTodayAttendanceUser(TodayUserDto dto, PageQuery pageQuery) {
return busAttendanceService.getTodayAttendanceUser(dto,pageQuery);
public TableDataInfo<AttendanceTodayUserVo> getTodayAttendanceUser(TodayUserDto dto, PageQuery pageQuery) {
return busAttendanceService.getTodayAttendanceUser(dto, pageQuery);
}
/**
@ -209,8 +209,8 @@ public class BusAttendanceController extends BaseController {
* 查询分包当天出勤人员
*/
@GetMapping("/sub/list/attendanceUser")
public TableDataInfo<SubAttendanceTodayUserVo> getSubTodayAttendanceUser(SubTodayUserDto dto, PageQuery pageQuery) {
return busAttendanceService.getSubTodayAttendanceUser(dto,pageQuery);
public TableDataInfo<SubAttendanceTodayUserVo> getSubTodayAttendanceUser(SubTodayUserDto dto, PageQuery pageQuery) {
return busAttendanceService.getSubTodayAttendanceUser(dto, pageQuery);
}
/**

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,33 +332,62 @@ public class HazardHiddenDangerRectifyServiceImpl extends ServiceImpl<HazardHidd
if (!HazardHiddenDanger.RECTIFY.equals(hiddenDanger.getStatus())) {
return;
}
// 发送消息
String dangerCode = hiddenDanger.getDangerCode();
Long rectifyUserId = hiddenDanger.getRectifyUserId();
Long projectId = hiddenDanger.getProjectId();
String titleRectify = "您的安全隐患工单[" + dangerCode + "]已超时,请及时处理!";
try {
chatServerHandler.sendSystemMessageToUser(rectifyUserId, titleRectify, "2");
SseMessageUtils.sendMessage(rectifyUserId, titleRectify);
} catch (Exception e) {
log.error("异步发送系统消息失败用户ID: {}, 消息: {}", rectifyUserId, titleRectify, e);
}
// 发送给需要通知的对象
Set<Long> userIds = hazardRuleNotifyObjectService.queryNotifyObjectIds(hiddenDanger.getDangerLevelId(), projectId);
SseMessageDto sseDto = new SseMessageDto();
String title = "安全隐患工单[" + dangerCode + "]未进行整改,请及时关注!";
for (Long userId : userIds) {
// 隐患等级
HazardRule rule = hazardRuleService.getById(hiddenDanger.getDangerLevelId());
String notifyMethod = rule.getNotifyMethod();
if (notifyMethod.equals("1")) {
// 通知领导
} else {
// 发送消息
String dangerCode = hiddenDanger.getDangerCode();
Long rectifyUserId = hiddenDanger.getRectifyUserId();
Long projectId = hiddenDanger.getProjectId();
String titleRectify = "您的安全隐患工单[" + dangerCode + "]已超时,请及时处理!";
try {
chatServerHandler.sendSystemMessageToUser(userId, title, "2");
chatServerHandler.sendSystemMessageToUser(rectifyUserId, titleRectify, "2");
SseMessageUtils.sendMessage(rectifyUserId, titleRectify);
} catch (Exception e) {
log.error("异步发送系统消息失败用户ID: {}, 消息: {}", userId, title, e);
log.error("异步发送系统消息失败用户ID: {}, 消息: {}", rectifyUserId, titleRectify, e);
}
// 发送给需要通知的对象
Set<Long> userIds = hazardRuleNotifyObjectService.queryNotifyObjectIds(hiddenDanger.getDangerLevelId(), projectId);
SseMessageDto sseDto = new SseMessageDto();
String title = "安全隐患工单[" + dangerCode + "]未进行整改,请及时关注!";
for (Long userId : userIds) {
try {
chatServerHandler.sendSystemMessageToUser(userId, title, "2");
} catch (Exception e) {
log.error("异步发送系统消息失败用户ID: {}, 消息: {}", userId, title, e);
}
}
sseDto.setUserIds(userIds.stream().toList());
sseDto.setMessage(title);
sseDto.setRoute("");
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("添加延迟任务失败");
}
}
}
sseDto.setUserIds(userIds.stream().toList());
sseDto.setMessage(title);
sseDto.setRoute("");
sseDto.setProjectId(projectId);
sseDto.setIsRecord(true);
SseMessageUtils.publishMessage(sseDto);
}
}

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;
@ -77,34 +73,32 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
//招标文件审估
@Lazy
@Autowired
private IXzdBiddingFileEstimateService xzdBiddingFileEstimateService;
private IXzdBiddingFileEstimateService xzdBiddingFileEstimateService;
//投标文件
@Lazy
@Autowired
private IXzdBiddingDocumentService xzdBiddingDocumentService;
private IXzdBiddingDocumentService xzdBiddingDocumentService;
//投标保证金缴纳
@Lazy
@Autowired
private IXzdBidDepositPaymentService xzdBidDepositPaymentService;
private IXzdBidDepositPaymentService xzdBidDepositPaymentService;
//投标保证金收回
@Lazy
@Autowired
private IXzdBidDepositRecoveryService xzdBidDepositRecoveryService;
private IXzdBidDepositRecoveryService xzdBidDepositRecoveryService;
//标后分析
@Lazy
@Autowired
private IXzdPostBidAnalysisService xzdPostBidAnalysisService;
private IXzdPostBidAnalysisService xzdPostBidAnalysisService;
//招标代理服务费支付申请
@Lazy
@Autowired
private IXzdBiddingAgencyFeePaymentService xzdBiddingAgencyFeePaymentService;
private IXzdBiddingAgencyFeePaymentService xzdBiddingAgencyFeePaymentService;
/**
* 查询标前立项
@ -113,13 +107,13 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
* @return 标前立项
*/
@Override
public QuerListXzdBidPreVo queryById(Long id){
public QuerListXzdBidPreVo queryById(Long id) {
QuerListXzdBidPreVo querListXzdBidPreVo = new QuerListXzdBidPreVo();
XzdBidPreProjectVo xzdBidPreProjectVo = baseMapper.selectVoById(id);
XzdBqlxProjectInfo xzdBqlxProjectInfo = iXzdBqlxProjectInfoService.getBaseMapper().selectOne(new LambdaQueryWrapper<>(XzdBqlxProjectInfo.class).eq(XzdBqlxProjectInfo::getBidPreProjectId, id));
XzdBqlxProjectInfoVo res = new XzdBqlxProjectInfoVo();
if (xzdBqlxProjectInfo != null){
if (xzdBqlxProjectInfo != null) {
BeanUtils.copyProperties(xzdBqlxProjectInfo, res);
}
querListXzdBidPreVo.setXzdBqlxProjectInfoVo(res);
@ -141,12 +135,12 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
QueryListXzdVo queryListXzdVo = new QueryListXzdVo();
if (pageQuery.getPageNum() != null && pageQuery.getPageSize() != null){
bo.setNum((pageQuery.getPageNum() - 1 ) * pageQuery.getPageSize() );
if (pageQuery.getPageNum() != null && pageQuery.getPageSize() != null) {
bo.setNum((pageQuery.getPageNum() - 1) * pageQuery.getPageSize());
}
List<QuerListXzdBidPreVo> list = baseMapper.queryPageListBy(bo,pageQuery.getPageSize());
Integer res = baseMapper.queryPageListByNum(bo,pageQuery.getPageSize());
List<QuerListXzdBidPreVo> list = baseMapper.queryPageListBy(bo, pageQuery.getPageSize());
Integer res = baseMapper.queryPageListByNum(bo, pageQuery.getPageSize());
queryListXzdVo.setList(list);
@ -203,19 +197,19 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
public Boolean insertByBo(BiddingManagementDto bo) {
String banBen = BatchNumberGenerator.generateBatchNumber("BQLX-");
// 标前立项
XzdBidPreProjectBo xzdBidPreProjectBo = bo.getXzdBidPreProjectBo();
XzdBidPreProject xzdBidPreProject = new XzdBidPreProject();
if (xzdBidPreProjectBo != null) {
BeanUtil.copyProperties(xzdBidPreProjectBo, xzdBidPreProject);
xzdBidPreProject.setProjectNumber(banBen);
baseMapper.insert(xzdBidPreProject);
}
XzdBidPreProjectBo xzdBidPreProjectBo = bo.getXzdBidPreProjectBo();
XzdBidPreProject xzdBidPreProject = new XzdBidPreProject();
if (xzdBidPreProjectBo != null) {
BeanUtil.copyProperties(xzdBidPreProjectBo, xzdBidPreProject);
xzdBidPreProject.setProjectNumber(banBen);
baseMapper.insert(xzdBidPreProject);
}
//标前立项-项目信息
XzdBqlxProjectInfoBo xzdBqlxProjectInfoBo = bo.getXzdBqlxProjectInfoBo();
xzdBqlxProjectInfoBo.setBidPreProjectId(xzdBidPreProject.getId());
XzdBqlxProjectInfoBo xzdBqlxProjectInfoBo = bo.getXzdBqlxProjectInfoBo();
xzdBqlxProjectInfoBo.setBidPreProjectId(xzdBidPreProject.getId());
iXzdBqlxProjectInfoService.insertByBo(xzdBqlxProjectInfoBo);
iXzdBqlxProjectInfoService.insertByBo(xzdBqlxProjectInfoBo);
return true;
@ -253,14 +247,13 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
iXzdBqlxProjectInfoService.saveOrUpdate(xzdBqlxProjectInfo);
return true;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdBidPreProject entity){
private void validEntityBeforeSave(XzdBidPreProject entity) {
//TODO 做一些数据校验,如唯一约束
}
@ -275,7 +268,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
}
for (Long id : ids) {
@ -285,7 +278,7 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
if (l > 0) throw new ServiceException("招标文件审估已引用,不允许删除");
//投标文件
l = xzdBiddingDocumentService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdBiddingDocument>().eq(XzdBiddingDocument::getProjectName, id));
l = xzdBiddingDocumentService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdBiddingDocument>().eq(XzdBiddingDocument::getProjectName, id));
if (l > 0) throw new ServiceException("投标文件已引用,不允许删除");
//投标保证金缴纳
@ -305,23 +298,22 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
if (l > 0) throw new ServiceException("招标代理服务费支付申请已引用,不允许删除");
// 删除附件
if (!StringUtils.isEmpty(xzdBidPreProjectVo.getFileId())){
List<Long> collect = Arrays.stream(xzdBidPreProjectVo.getFileId().split(",")).map(item -> {
return Long.parseLong(item);
}).collect(Collectors.toList());
if (!StringUtils.isEmpty(xzdBidPreProjectVo.getFileId())) {
List<Long> collect = Arrays.stream(xzdBidPreProjectVo.getFileId().split(",")).map(Long::parseLong).collect(Collectors.toList());
sysOssService.deleteWithValidByIds(collect, false);
}
// 删除项目信息
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("bid_pre_project_id",id);
objectObjectHashMap.put("bid_pre_project_id", id);
iXzdBqlxProjectInfoService.removeByMap(objectObjectHashMap);
}
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
@ -85,7 +92,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
* @return 项目信息
*/
@Override
public XzdProjectVo queryById(Long id){
public XzdProjectVo queryById(Long id) {
XzdProjectVo projectVo = baseMapper.selectVoById(id);
setValue(projectVo);
return projectVo;
@ -100,10 +107,10 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
*/
@Override
public TableDataInfo<XzdProjectVo> queryPageList(XzdProjectBo bo, PageQuery pageQuery) {
if(pageQuery.getPageNum() != null && pageQuery.getPageSize() != null) {
if (pageQuery.getPageNum() != null && pageQuery.getPageSize() != null) {
bo.setPageNum(pageQuery.getPageNum());
bo.setPageSize(pageQuery.getPageSize());
}else {
} else {
bo.setPageNum(1);
bo.setPageSize(10);
}
@ -112,12 +119,12 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
SysDeptVo deptVo = iSysDeptService.selectDeptById(deptId);
if (LoginHelper.isSuperAdmin()) {
bo.setSsgs(deptVo.getDeptId());
}else {
} else {
String ancestors = deptVo.getAncestors();
List<Long> ids = StringUtils.splitTo(ancestors, Convert::toLong);
if (ids.size() == 2) {
bo.setSsgs(deptVo.getDeptId());
}else {
} else {
bo.setSsgs(iSysDeptService.selectDeptById(ids.get(2)).getDeptId());
}
}
@ -202,30 +209,30 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
SysDeptVo deptVo = iSysDeptService.selectDeptById(deptId);
if (LoginHelper.isSuperAdmin()) {
add.setSsgs(deptVo.getDeptId());
}else {
} else {
String ancestors = deptVo.getAncestors();
List<Long> ids = StringUtils.splitTo(ancestors, Convert::toLong);
if (ids.size() == 2) {
add.setSsgs(deptVo.getDeptId());
}else {
} else {
add.setSsgs(iSysDeptService.selectDeptById(ids.get(2)).getDeptId());
}
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}else {
} else {
return false;
}
//项目概况处理
if (bo.getXmgk() != null){
if (bo.getXmgk() != null) {
bo.getXmgk().setXzdProjectId(add.getId());
xzdProjectProfileService.insertByBo(bo.getXmgk());
}
//项目人员处理
if (bo.getXmry() != null && !bo.getXmry().isEmpty()){
if (bo.getXmry() != null && !bo.getXmry().isEmpty()) {
for (XzdProjectPersonnelBo personnelBo : bo.getXmry()) {
personnelBo.setXzdProjectId(add.getId());
xzdProjectPersonnelService.insertByBo(personnelBo);
@ -233,19 +240,19 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//税务信息处理
if (bo.getSwxx() != null){
if (bo.getSwxx() != null) {
bo.getSwxx().setXzdProjectId(add.getId());
xzdProjectTaxInfoService.insertByBo(bo.getSwxx());
}
//核算信息
if (bo.getHsxx() != null){
if (bo.getHsxx() != null) {
bo.getHsxx().setXzdProjectId(add.getId());
xzdProjectAccountingInfoService.insertByBo(bo.getHsxx());
}
//仓库信息
if (bo.getXmck() != null && !bo.getXmck().isEmpty()){
if (bo.getXmck() != null && !bo.getXmck().isEmpty()) {
for (XzdProjectWarehousesBo warehousesBo : bo.getXmck()) {
warehousesBo.setXzdProjectId(add.getId());
xzdProjectWarehousesService.insertByBo(warehousesBo);
@ -253,7 +260,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//内部账户信息
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()){
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()) {
for (XzdProjectInternalAccountsBo internalAccountsBo : bo.getNbzj()) {
internalAccountsBo.setXzdProjectId(add.getId());
xzdProjectInternalAccountsService.insertByBo(internalAccountsBo);
@ -261,7 +268,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//参与单位信息
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()){
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()) {
for (XzdProjectParticipatingUnitsBo participatingUnitsBo : bo.getCjdw()) {
participatingUnitsBo.setXzdProjectId(add.getId());
xzdProjectParticipatingUnitsService.insertByBo(participatingUnitsBo);
@ -287,17 +294,17 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
XzdProject update = MapstructUtils.convert(bo, XzdProject.class);
validEntityBeforeSave(update);
boolean b = baseMapper.updateById(update) > 0;
if (!b){
if (!b) {
return false;
}
//项目概况处理
if (bo.getXmgk() != null){
if (bo.getXmgk() != null) {
xzdProjectProfileService.updateByBo(bo.getXmgk());
}
//项目人员处理
if (bo.getXmry() != null && !bo.getXmry().isEmpty()){
if (bo.getXmry() != null && !bo.getXmry().isEmpty()) {
// 获取原有记录的ID列表
if (oldValue.getXmry() != null && !oldValue.getXmry().isEmpty()) {
@ -323,9 +330,9 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
xzdProjectPersonnelService.removeById(warehouses.getId());
}
}
xzdProjectPersonnelService.saveOrUpdateBatch( now);
xzdProjectPersonnelService.saveOrUpdateBatch(now);
}else {
} else {
for (XzdProjectPersonnelBo boValue : bo.getXmry()) {
boValue.setXzdProjectId(update.getId());
xzdProjectPersonnelService.insertByBo(boValue);
@ -334,18 +341,18 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//税务信息处理
if (bo.getSwxx() != null){
if (bo.getSwxx() != null) {
xzdProjectTaxInfoService.updateByBo(bo.getSwxx());
}
//核算信息
if (bo.getHsxx() != null){
if (bo.getHsxx() != null) {
xzdProjectAccountingInfoService.updateByBo(bo.getHsxx());
}
//仓库信息
if (bo.getXmck() != null && !bo.getXmck().isEmpty()){
if (bo.getXmck() != null && !bo.getXmck().isEmpty()) {
// 获取原有记录的ID列表
if (oldValue.getXmck() != null && !oldValue.getXmck().isEmpty()) {
@ -359,7 +366,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
List<XzdProjectWarehouses> now = new ArrayList<>();
for (XzdProjectWarehousesBo boValue : bo.getXmck()) {
if (boValue.getId() == null){
if (boValue.getId() == null) {
boValue.setXzdProjectId(update.getId());
}
XzdProjectWarehouses temp = new XzdProjectWarehouses();
@ -373,9 +380,9 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
xzdProjectWarehousesService.removeById(warehouses.getId());
}
}
xzdProjectWarehousesService.saveOrUpdateBatch( now);
xzdProjectWarehousesService.saveOrUpdateBatch(now);
}else {
} else {
for (XzdProjectWarehousesBo boValue : bo.getXmck()) {
boValue.setXzdProjectId(update.getId());
xzdProjectWarehousesService.insertByBo(boValue);
@ -384,7 +391,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//内部账户信息
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()){
if (bo.getNbzj() != null && !bo.getNbzj().isEmpty()) {
// 获取原有记录的ID列表
if (oldValue.getNbzj() != null && !oldValue.getNbzj().isEmpty()) {
@ -398,7 +405,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
List<XzdProjectInternalAccounts> now = new ArrayList<>();
for (XzdProjectInternalAccountsBo boValue : bo.getNbzj()) {
if (boValue.getId() == null){
if (boValue.getId() == null) {
boValue.setXzdProjectId(update.getId());
}
XzdProjectInternalAccounts temp = new XzdProjectInternalAccounts();
@ -412,9 +419,9 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
xzdProjectInternalAccountsService.removeById(warehouses.getId());
}
}
xzdProjectInternalAccountsService.saveOrUpdateBatch( now);
xzdProjectInternalAccountsService.saveOrUpdateBatch(now);
}else {
} else {
for (XzdProjectInternalAccountsBo boValue : bo.getNbzj()) {
boValue.setXzdProjectId(update.getId());
xzdProjectInternalAccountsService.insertByBo(boValue);
@ -423,7 +430,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
}
//参与单位信息
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()){
if (bo.getCjdw() != null && !bo.getCjdw().isEmpty()) {
// 获取原有记录的ID列表
if (oldValue.getCjdw() != null && !oldValue.getCjdw().isEmpty()) {
@ -437,7 +444,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
List<XzdProjectParticipatingUnits> now = new ArrayList<>();
for (XzdProjectParticipatingUnitsBo boValue : bo.getCjdw()) {
if (boValue.getId() == null){
if (boValue.getId() == null) {
boValue.setXzdProjectId(update.getId());
}
XzdProjectParticipatingUnits temp = new XzdProjectParticipatingUnits();
@ -451,9 +458,9 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
xzdProjectParticipatingUnitsService.removeById(warehouses.getId());
}
}
xzdProjectParticipatingUnitsService.saveOrUpdateBatch( now);
xzdProjectParticipatingUnitsService.saveOrUpdateBatch(now);
}else {
} else {
for (XzdProjectParticipatingUnitsBo boValue : bo.getCjdw()) {
boValue.setXzdProjectId(update.getId());
xzdProjectParticipatingUnitsService.insertByBo(boValue);
@ -467,7 +474,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdProject entity){
private void validEntityBeforeSave(XzdProject entity) {
//TODO 做一些数据校验,如唯一约束
}
@ -480,7 +487,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
@ -549,7 +556,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
return xzdProjectVos;
}
public void setValue(XzdProjectVo entity){
public void setValue(XzdProjectVo entity) {
if (entity != null) {
//项目概况
LambdaQueryWrapper<XzdProjectProfile> profileLambdaQueryWrapper = new LambdaQueryWrapper<>();
@ -627,7 +634,7 @@ public class XzdProjectServiceImpl extends ServiceImpl<XzdProjectMapper, XzdProj
if (xzdProjectTypeVo != null) {
entity.setProjectTypeName(xzdProjectTypeVo.getTypeName());
XzdProjectTypeVo bigType = xzdProjectTypeService.getBigType(xzdProjectTypeVo.getId());
if (bigType != null){
if (bigType != null) {
entity.setXmdl(bigType.getTypeName());
}
}
@ -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());
}