diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProjectBigScreenController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProjectBigScreenController.java index ba59a87a..d65d3bcc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProjectBigScreenController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProjectBigScreenController.java @@ -100,9 +100,16 @@ public class ProjectBigScreenController extends BaseController { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(BusLandTransferLedgerSon::getParentId, list1); List sonList = busLandTransferLedgerSonService.list(lambdaQueryWrapper); - Map collect = sonList.stream().filter(vo -> "1".equals(vo.getTransferStatus())) - .collect(Collectors.toMap(BusLandTransferLedgerSon::getParentId, BusLandTransferLedgerSon::getAreaValue)); - + Map collect = sonList.stream() + .filter(vo -> "1".equals(vo.getTransferStatus())) + .collect(Collectors.groupingBy( + BusLandTransferLedgerSon::getParentId, + Collectors.reducing( + BigDecimal.ZERO, + BusLandTransferLedgerSon::getAreaValue, + BigDecimal::add + ) + )); for (BusLandTransferLedger busLandTransferLedger : levelList) { BigDecimal areaValue = collect.get(busLandTransferLedger.getId()); if (areaValue != null) { diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProjectBigScreenServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProjectBigScreenServiceImpl.java index c3305554..814be24a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProjectBigScreenServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProjectBigScreenServiceImpl.java @@ -21,6 +21,7 @@ import org.dromara.drone.service.IDroProjectDroneService; import org.dromara.gps.domain.bo.GpsEquipmentBo; import org.dromara.gps.domain.vo.DeviceVo; import org.dromara.gps.domain.vo.GpsEquipmentSonVo; +import org.dromara.gps.domain.vo.LocationVo; import org.dromara.gps.service.IDeviceService; import org.dromara.gps.service.IGpsEquipmentService; import org.dromara.manager.weathermanager.vo.WeatherVo; @@ -479,10 +480,10 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService { LocalDateTime now = LocalDateTime.now(); List voList = gpsEquipmentService.getClientList(projectId, startOfDay, now); List appList = gpsEquipmentService.getUserListByProjectId(projectId, startOfDay, now); - List anqmList = deviceService.getUserListByProjectId(projectId, startOfDay, now); + List anqmList = deviceService.getUserListByProjectId(projectId, startOfDay, now); List othYs7DeviceList = othYs7DeviceService.lambdaQuery() .eq(OthYs7Device::getProjectId, projectId) - .between(OthYs7Device::getUpdateTime, startOfDay, now) +// .between(OthYs7Device::getUpdateTime, startOfDay, now) .list(); List wrjKeys = droProjectDroneService.getTopicsByProjectId(projectId); List> maps = new ArrayList<>(); @@ -498,26 +499,6 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService { List> anqmChildrenMap = new ArrayList<>(); List> wrjChildrenMap = new ArrayList<>(); List> sxtChildrenMap = new ArrayList<>(); - - Map sxt = new HashMap<>(); - sxt.put("id", 4545555); - sxt.put("label", ""); - sxt.put("name", "摄像头"); - sxt.put("type", "shexiangtou"); - sxt.put("lat", 23.81524718); - sxt.put("lng", 107.13038137); - sxt.put("alt", 0); - sxtChildrenMap.add(sxt); - Map anqm = new HashMap<>(); - anqm.put("id", 45454455154L); - anqm.put("label", ""); - anqm.put("name", "安全帽"); - anqm.put("type", "positioningDevice"); - anqm.put("lat", 23.81488041); - anqm.put("lng", 107.12917371); - anqm.put("alt", 0); - - anqmChildrenMap.add(anqm); if (voList != null && !voList.isEmpty()) { for (GpsEquipmentSonVo item : voList) { Map gps = new HashMap<>(); @@ -535,9 +516,9 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService { if (appList != null && !appList.isEmpty()) { for (GpsEquipmentSonVo item : appList) { Map app = new HashMap<>(); - app.put("id", item.getClientId()); + app.put("id", item.getUserId()); app.put("userId", item.getUserId()); - app.put("label", item.getClientId()); + app.put("label", item.getUserId()); app.put("name", item.getDeviceName()); app.put("type", "app"); app.put("lat", item.getLocLatitude()); @@ -546,20 +527,35 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService { appChildrenMap.add(app); } } -// if (othYs7DeviceList != null && !othYs7DeviceList.isEmpty()) { -// for (OthYs7Device item : othYs7DeviceList) { -// Map sxt = new HashMap<>(); -// sxt.put("id", item.getDeviceSerial()); -// sxt.put("label", item.getDeviceSerial()); -// sxt.put("name", item.getDeviceName()); -// sxt.put("type", "shexiangtou"); -// sxt.put("lat", item.getLatitude()); -// sxt.put("lng", item.getLongitude()); -// sxt.put("alt", item.getAltitude()); -// sxt.put("detail", item.getDetail()); -// sxtChildrenMap.add(sxt); -// } -// } + if (anqmList != null && !anqmList.isEmpty()) { + for (LocationVo item : anqmList) { + Map anqm = new HashMap<>(); + anqm.put("id", item.getDevNum()); + anqm.put("userId", item.getUserId()); + anqm.put("label", item.getDevNum()); + anqm.put("name", item.getDevNum()); + anqm.put("type", "positioningDevice"); + anqm.put("lat", item.getLatitude()); + anqm.put("lng", item.getLongitude()); + anqm.put("alt", item.getElevation()); + anqmChildrenMap.add(anqm); + } + } + if (othYs7DeviceList != null && !othYs7DeviceList.isEmpty()) { + for (OthYs7Device item : othYs7DeviceList) { + Map sxt = new HashMap<>(); + sxt.put("id", item.getDeviceSerial()); + sxt.put("label", item.getDeviceSerial()); + sxt.put("name", item.getDeviceName()); + sxt.put("type", "shexiangtou"); + sxt.put("lat", item.getLatitude()); + sxt.put("lng", item.getLongitude()); + sxt.put("alt", item.getAltitude()); + sxt.put("status", item.getStatus()); + sxt.put("detail", item.getDetail()); + sxtChildrenMap.add(sxt); + } + } if (wrjKeys != null && !wrjKeys.isEmpty()) { for (String key : wrjKeys) { Object object = stringRedisTemplate.opsForValue().get("wrj:osd4:" + key); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java index 6712e85f..dad9ecf7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java @@ -183,7 +183,7 @@ public class SubConstructionUserServiceImpl extends ServiceImpl byUserId = projectTeamService.getByUserId(userId, req.getProjectId()); if (CollectionUtil.isEmpty(byUserId)) { - return new TableDataInfo<>(); + return TableDataInfo.build(new ArrayList<>()); } list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList(); } @@ -1394,6 +1394,7 @@ public class SubConstructionUserServiceImpl extends ServiceImpl byUserId = projectTeamService.getByUserId(userId, dto.getProjectId()); if(CollectionUtil.isEmpty(byUserId)){ - return new TableDataInfo<>(); + return TableDataInfo.build(new ArrayList<>()); } list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList(); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSmsRecordController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSmsRecordController.java new file mode 100644 index 00000000..35e33944 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesSmsRecordController.java @@ -0,0 +1,105 @@ +package org.dromara.design.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.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 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.design.domain.vo.DesSmsRecordVo; +import org.dromara.design.domain.bo.DesSmsRecordBo; +import org.dromara.design.service.IDesSmsRecordService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 设计图纸短信记录 + * + * @author Lion Li + * @date 2025-10-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/design/smsRecord") +public class DesSmsRecordController extends BaseController { + + private final IDesSmsRecordService desSmsRecordService; + + /** + * 查询设计图纸短信记录列表 + */ + @SaCheckPermission("design:smsRecord:list") + @GetMapping("/list") + public TableDataInfo list(DesSmsRecordBo bo, PageQuery pageQuery) { + return desSmsRecordService.queryPageList(bo, pageQuery); + } + + /** + * 导出设计图纸短信记录列表 + */ + @SaCheckPermission("design:smsRecord:export") + @Log(title = "设计图纸短信记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DesSmsRecordBo bo, HttpServletResponse response) { + List list = desSmsRecordService.queryList(bo); + ExcelUtil.exportExcel(list, "设计图纸短信记录", DesSmsRecordVo.class, response); + } + + /** + * 获取设计图纸短信记录详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("design:smsRecord:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(desSmsRecordService.queryById(id)); + } + + /** + * 新增设计图纸短信记录 + */ + @SaCheckPermission("design:smsRecord:add") + @Log(title = "设计图纸短信记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DesSmsRecordBo bo) { + return toAjax(desSmsRecordService.insertByBo(bo)); + } + + /** + * 修改设计图纸短信记录 + */ + @SaCheckPermission("design:smsRecord:edit") + @Log(title = "设计图纸短信记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DesSmsRecordBo bo) { + return toAjax(desSmsRecordService.updateByBo(bo)); + } + + /** + * 删除设计图纸短信记录 + * + * @param ids 主键串 + */ + @SaCheckPermission("design:smsRecord:remove") + @Log(title = "设计图纸短信记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(desSmsRecordService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileAppController.java index 34d56a8a..f2e3682b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileAppController.java @@ -40,12 +40,9 @@ public class DesVolumeFileAppController extends BaseController { private IDesVolumeFileService desVolumeFileService; - /** - * app图纸管理分页查询 - */ - @GetMapping("/list") - public TableDataInfo list(DesVolumeFileAppPageDto dto, PageQuery pageQuery) { - return desVolumeFileService.queryAppPageList(dto, pageQuery); + @GetMapping("/joinList") + public TableDataInfo joinList(DesVolumeFileBo bo, PageQuery pageQuery) { + return desVolumeFileService.queryJoinPageList(bo, pageQuery); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileViewerAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileViewerAppController.java new file mode 100644 index 00000000..041822e3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/app/DesVolumeFileViewerAppController.java @@ -0,0 +1,52 @@ +package org.dromara.design.controller.app; + +import cn.dev33.satoken.annotation.SaCheckPermission; +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.excel.utils.ExcelUtil; +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.design.domain.bo.DesVolumeFileViewerBo; +import org.dromara.design.domain.vo.volumefileviewer.DesVolumeFileViewerVo; +import org.dromara.design.service.IDesVolumeFileViewerService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 卷册文件查阅人 + * + * @author lilemy + * @date 2025-08-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app/design/volumeFileViewer") +public class DesVolumeFileViewerAppController extends BaseController { + + private final IDesVolumeFileViewerService desVolumeFileViewerService; + + /** + * 新增卷册文件查阅人 + */ + @Log(title = "卷册文件查阅人", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DesVolumeFileViewerBo bo) { + return toAjax(desVolumeFileViewerService.insertByBo(bo)); + } + +} + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesSmsRecord.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesSmsRecord.java new file mode 100644 index 00000000..0e842414 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/DesSmsRecord.java @@ -0,0 +1,46 @@ +package org.dromara.design.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 设计图纸短信记录对象 des_sms_record + * + * @author Lion Li + * @date 2025-10-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("des_sms_record") +public class DesSmsRecord extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 图纸id + */ + private Long volumeFileId; + + /** + * 0-不需要再次发送 1-需要再次发送 + */ + private String again; + + /** + * 用户类型(1-项目经理,2-设计部主任) + */ + private String type; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSmsRecordBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSmsRecordBo.java new file mode 100644 index 00000000..ecdb7005 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesSmsRecordBo.java @@ -0,0 +1,46 @@ +package org.dromara.design.domain.bo; + +import org.dromara.design.domain.DesSmsRecord; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 设计图纸短信记录业务对象 des_sms_record + * + * @author Lion Li + * @date 2025-10-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DesSmsRecord.class, reverseConvertGenerate = false) +public class DesSmsRecordBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 图纸id + */ + @NotNull(message = "图纸id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long volumeFileId; + + /** + * 0-不需要再次发送 1-需要再次发送 + */ + private String again; + + /** + * 用户类型(1-项目经理,2-设计部主任) + */ + private String type; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileBo.java index 19006906..009c8e2e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/DesVolumeFileBo.java @@ -62,7 +62,7 @@ public class DesVolumeFileBo extends BaseEntity { /** - * 备注 + * 项目id */ private Long projectId; @@ -78,6 +78,9 @@ public class DesVolumeFileBo extends BaseEntity { private String documentName; + /** + * 审核状态 + */ private String auditStatus; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSmsRecordVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSmsRecordVo.java new file mode 100644 index 00000000..1f4f6490 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DesSmsRecordVo.java @@ -0,0 +1,56 @@ +package org.dromara.design.domain.vo; + +import org.dromara.design.domain.DesSmsRecord; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 设计图纸短信记录视图对象 des_sms_record + * + * @author Lion Li + * @date 2025-10-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DesSmsRecord.class) +public class DesSmsRecordVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 图纸id + */ + @ExcelProperty(value = "图纸id") + private Long volumeFileId; + + /** + * 0-不需要再次发送 1-需要再次发送 + */ + @ExcelProperty(value = "0-不需要再次发送 1-需要再次发送") + private String again; + + /** + * 用户类型(1-项目经理,2-设计部主任) + */ + @ExcelProperty(value = "用户类型(1-项目经理,2-设计部主任)") + private String type; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/DesSmsRecordMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/DesSmsRecordMapper.java new file mode 100644 index 00000000..f24ff6cf --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/DesSmsRecordMapper.java @@ -0,0 +1,15 @@ +package org.dromara.design.mapper; + +import org.dromara.design.domain.DesSmsRecord; +import org.dromara.design.domain.vo.DesSmsRecordVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设计图纸短信记录Mapper接口 + * + * @author Lion Li + * @date 2025-10-13 + */ +public interface DesSmsRecordMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSmsRecordService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSmsRecordService.java new file mode 100644 index 00000000..6d0f12f8 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IDesSmsRecordService.java @@ -0,0 +1,81 @@ +package org.dromara.design.service; + +import org.dromara.design.domain.vo.DesSmsRecordVo; +import org.dromara.design.domain.bo.DesSmsRecordBo; +import org.dromara.design.domain.DesSmsRecord; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 设计图纸短信记录Service接口 + * + * @author Lion Li + * @date 2025-10-13 + */ +public interface IDesSmsRecordService extends IService{ + + /** + * 查询设计图纸短信记录 + * + * @param id 主键 + * @return 设计图纸短信记录 + */ + DesSmsRecordVo queryById(Long id); + + /** + * 分页查询设计图纸短信记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计图纸短信记录分页列表 + */ + TableDataInfo queryPageList(DesSmsRecordBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设计图纸短信记录列表 + * + * @param bo 查询条件 + * @return 设计图纸短信记录列表 + */ + List queryList(DesSmsRecordBo bo); + + /** + * 新增设计图纸短信记录 + * + * @param bo 设计图纸短信记录 + * @return 是否新增成功 + */ + Boolean insertByBo(DesSmsRecordBo bo); + + /** + * 修改设计图纸短信记录 + * + * @param bo 设计图纸短信记录 + * @return 是否修改成功 + */ + Boolean updateByBo(DesSmsRecordBo bo); + + /** + * 校验并批量删除设计图纸短信记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 创建短信记录 + * + * @param volumeFileId 卷册文件id + */ + void createSmsRecord(Long volumeFileId); + + + void updateSmsRecord(Long volumeFileId); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSmsRecordServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSmsRecordServiceImpl.java new file mode 100644 index 00000000..e3224e13 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesSmsRecordServiceImpl.java @@ -0,0 +1,228 @@ +package org.dromara.design.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.design.domain.DesVolumeCatalog; +import org.dromara.design.domain.DesVolumeFile; +import org.dromara.design.domain.DesVolumeFileViewer; +import org.dromara.design.service.IDesVolumeCatalogService; +import org.dromara.design.service.IDesVolumeFileService; +import org.dromara.design.service.IDesVolumeFileViewerService; +import org.dromara.system.domain.SysUser; +import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.dromara.design.domain.bo.DesSmsRecordBo; +import org.dromara.design.domain.vo.DesSmsRecordVo; +import org.dromara.design.domain.DesSmsRecord; +import org.dromara.design.mapper.DesSmsRecordMapper; +import org.dromara.design.service.IDesSmsRecordService; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 设计图纸短信记录Service业务层处理 + * + * @author Lion Li + * @date 2025-10-13 + */ +@RequiredArgsConstructor +@Service +public class DesSmsRecordServiceImpl extends ServiceImpl implements IDesSmsRecordService { + + private final DesSmsRecordMapper baseMapper; + + @Resource + @Lazy + private IDesVolumeFileViewerService volumeFileViewerService; + + @Resource + @Lazy + private ISysRoleService roleService; + + @Resource + @Lazy + private ISysUserService userService; + + @Resource + @Lazy + private IDesVolumeFileService designFileService; + + @Resource + @Lazy + private IDesVolumeCatalogService volumeCatalogService; + + /** + * 查询设计图纸短信记录 + * + * @param id 主键 + * @return 设计图纸短信记录 + */ + @Override + public DesSmsRecordVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询设计图纸短信记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计图纸短信记录分页列表 + */ + @Override + public TableDataInfo queryPageList(DesSmsRecordBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的设计图纸短信记录列表 + * + * @param bo 查询条件 + * @return 设计图纸短信记录列表 + */ + @Override + public List queryList(DesSmsRecordBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DesSmsRecordBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(DesSmsRecord::getId); + lqw.eq(bo.getVolumeFileId() != null, DesSmsRecord::getVolumeFileId, bo.getVolumeFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAgain()), DesSmsRecord::getAgain, bo.getAgain()); + lqw.eq(StringUtils.isNotBlank(bo.getType()), DesSmsRecord::getType, bo.getType()); + return lqw; + } + + /** + * 新增设计图纸短信记录 + * + * @param bo 设计图纸短信记录 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DesSmsRecordBo bo) { + DesSmsRecord add = MapstructUtils.convert(bo, DesSmsRecord.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改设计图纸短信记录 + * + * @param bo 设计图纸短信记录 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DesSmsRecordBo bo) { + DesSmsRecord update = MapstructUtils.convert(bo, DesSmsRecord.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DesSmsRecord entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设计图纸短信记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + @Async + public void createSmsRecord(Long volumeFileId) { + + List desSmsRecords = new ArrayList<>(); + + DesSmsRecord desSmsRecord = new DesSmsRecord(); + desSmsRecord.setVolumeFileId(volumeFileId); + desSmsRecord.setAgain("1"); + desSmsRecord.setType("1"); + desSmsRecords.add(desSmsRecord); + + DesSmsRecord desSmsRecord1 = new DesSmsRecord(); + desSmsRecord1.setVolumeFileId(volumeFileId); + desSmsRecord1.setAgain("1"); + desSmsRecord1.setType("2"); + + desSmsRecords.add(desSmsRecord1); + baseMapper.insertBatch(desSmsRecords); + + } + + @Override + @Async + public void updateSmsRecord(Long volumeFileId) { + List desSmsRecords = baseMapper.selectList(Wrappers.lambdaQuery() + .eq(DesSmsRecord::getVolumeFileId, volumeFileId) + .eq(DesSmsRecord::getAgain, "1") + ); + for (DesSmsRecord record : desSmsRecords) { + DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId()); + DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId()); + + List longs = new ArrayList<>(); + if (record.getType().equals("1")) { + longs = roleService.selectRoleIdsByName("项目经理"); + } else { + longs.add(1961028169115197442L); + } + if (CollectionUtil.isEmpty(longs)) { + continue; + } + List sysUsers = userService.selectUserByRoleIdsAndProjectId(longs, desVolumeCatalog.getProjectId()); + List userIds = sysUsers.stream().map(SysUser::getUserId).toList(); + if (CollectionUtil.isEmpty(userIds)) { + continue; + } + List list = volumeFileViewerService.list(Wrappers.lambdaQuery(DesVolumeFileViewer.class) + .eq(DesVolumeFileViewer::getVolumeFileId, record.getVolumeFileId()) + .in(DesVolumeFileViewer::getUserId, userIds) + ); + List list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList(); + + List list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList(); + if (list2.isEmpty()) { + record.setAgain("0"); + baseMapper.updateById(record); + } + } + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileServiceImpl.java index 6561b6ee..1678cc40 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileServiceImpl.java @@ -34,10 +34,7 @@ import org.dromara.design.domain.dto.volumefile.DesVolumeFileCreateReq; import org.dromara.design.domain.vo.BusDrawingreviewReceiptsVo; import org.dromara.design.domain.vo.volumefile.*; import org.dromara.design.mapper.DesVolumeFileMapper; -import org.dromara.design.service.IBusDrawingreviewReceiptsService; -import org.dromara.design.service.IDesDrawingService; -import org.dromara.design.service.IDesVolumeCatalogService; -import org.dromara.design.service.IDesVolumeFileService; +import org.dromara.design.service.*; import org.dromara.project.domain.BusProject; import org.dromara.project.service.IBusProjectService; import org.dromara.system.domain.SysUser; @@ -95,6 +92,9 @@ public class DesVolumeFileServiceImpl extends ServiceImpl sysUsers = userService.selectUserByRoleIdsAndProjectId(longs, byId.getProjectId()); asyncUtil.sendSms(sysUsers.stream().map(SysUser::getPhonenumber).toList(), "config5"); - asyncUtil.sendSse(sysUsers.stream().map(SysUser::getUserId).toList(), "有新的蓝图审批完成"); + asyncUtil.sendSse(sysUsers.stream().map(SysUser::getUserId).toList(), "有新的过程图纸审批完成"); + desSmsRecordService.createSmsRecord(desVolumeFile.getId()); } } @@ -698,6 +699,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl sysUsers = userService.selectUserByRoleIdsAndProjectId(longs, byId.getProjectId()); asyncUtil.sendSms(sysUsers.stream().map(SysUser::getPhonenumber).toList(), "config5"); asyncUtil.sendSse(sysUsers.stream().map(SysUser::getUserId).toList(), "有新的蓝图审批完成"); + desSmsRecordService.createSmsRecord(desVolumeFile.getId()); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileViewerServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileViewerServiceImpl.java index 5b67f526..60be64af 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileViewerServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesVolumeFileViewerServiceImpl.java @@ -3,6 +3,7 @@ package org.dromara.design.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -13,6 +14,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.design.domain.vo.volumefileviewer.DesVolumeFileViewerVo; +import org.dromara.design.service.IDesSmsRecordService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.design.domain.bo.DesVolumeFileViewerBo; @@ -36,6 +39,8 @@ public class DesVolumeFileViewerServiceImpl extends ServiceImpl { @Select("WITH RankedData AS (\n" + " SELECT\n" + " *,\n" + - " ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY create_time DESC) AS rn\n" + + " ROW_NUMBER() OVER (PARTITION BY dev_num ORDER BY create_time DESC) AS rn\n" + " FROM\n" + " anqm_location \n " + "WHERE \n" + @@ -48,5 +48,5 @@ public interface LocationMapper extends BaseMapperPlus { " RankedData\n" + "WHERE\n" + " rn = 1;") - List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); + List getUserListByProjectId(@Param("projectId") Long projectId, @Param("startOfDay") LocalDateTime startOfDay, @Param("now") LocalDateTime now); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IDeviceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IDeviceService.java index 12276448..efd8890f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IDeviceService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IDeviceService.java @@ -1,16 +1,13 @@ package org.dromara.gps.service; import org.dromara.gps.domain.bo.GpsEquipmentBo; -import org.dromara.gps.domain.vo.AnqmUserVo; -import org.dromara.gps.domain.vo.DeviceVo; +import org.dromara.gps.domain.vo.*; import org.dromara.gps.domain.bo.DeviceBo; import org.dromara.gps.domain.Device; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.gps.domain.vo.GpsProjectVo; -import org.dromara.gps.domain.vo.GpsUserVo; import java.time.LocalDateTime; import java.util.Collection; @@ -80,7 +77,7 @@ public interface IDeviceService extends IService{ Boolean unbindManmachine(DeviceBo bo); - List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); + List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); List getUserList(DeviceBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/ILocationService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/ILocationService.java index ed06d6f6..cdc8f6a1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/ILocationService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/ILocationService.java @@ -73,5 +73,5 @@ public interface ILocationService extends IService{ List getLargerScreenList(LocationBo bo); - List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); + List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/DeviceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/DeviceServiceImpl.java index 052e064d..c7f4f2dd 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/DeviceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/DeviceServiceImpl.java @@ -255,7 +255,7 @@ public class DeviceServiceImpl extends ServiceImpl impleme } @Override - public List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { + public List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { return locationService.getUserListByProjectId(projectId,startOfDay,now); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/LocationServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/LocationServiceImpl.java index 79dfd8e1..c90f234a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/LocationServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/LocationServiceImpl.java @@ -156,7 +156,7 @@ public class LocationServiceImpl extends ServiceImpl i } @Override - public List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { + public List getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { return baseMapper.getUserListByProjectId(projectId,startOfDay,now); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java new file mode 100644 index 00000000..cc017494 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java @@ -0,0 +1,99 @@ +package org.dromara.job.design; + +import cn.hutool.core.collection.CollectionUtil; +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.utils.AsyncUtil; +import org.dromara.design.domain.DesSmsRecord; +import org.dromara.design.domain.DesVolumeCatalog; +import org.dromara.design.domain.DesVolumeFile; +import org.dromara.design.domain.DesVolumeFileViewer; +import org.dromara.design.service.IDesSmsRecordService; +import org.dromara.design.service.IDesVolumeCatalogService; +import org.dromara.design.service.IDesVolumeFileService; +import org.dromara.design.service.IDesVolumeFileViewerService; +import org.dromara.system.domain.SysUser; +import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Slf4j +@Component +public class DesignFileJob { + + @Resource + private IDesSmsRecordService desSmsRecordService; + @Resource + private IDesVolumeFileService designFileService; + @Resource + private IDesVolumeFileViewerService volumeFileViewerService; + @Resource + private IDesVolumeCatalogService volumeCatalogService; + @Resource + private ISysRoleService roleService; + + @Resource + private ISysUserService userService; + + @Resource + private AsyncUtil asyncUtil; + + + @JobExecutor(name = "designFileSms") + public void designFileSms() { + log.info("执行定时任务:设计图纸查看短信提醒"); + + //查询到时间的记录 + // 计算3天前的时间(当前时间 - 3天的毫秒数) + long threeDaysMillis = 3L * 24 * 60 * 60 * 1000; // 3天的毫秒数 + Date threeDaysAgo = new Date(System.currentTimeMillis() - threeDaysMillis); + + // 查询条件:again为"1",且创建时间 <= 3天前 + List records = desSmsRecordService.list(Wrappers.lambdaQuery(DesSmsRecord.class) + .eq(DesSmsRecord::getAgain, "1") + .le(DesSmsRecord::getCreateTime, threeDaysAgo) // Date类型直接比较 + ); + for (DesSmsRecord record : records) { + DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId()); + DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId()); + + List longs = new ArrayList<>(); + if(record.getType().equals("1")){ + longs = roleService.selectRoleIdsByName("项目经理"); + }else { + longs.add(1961028169115197442L); + } + if(CollectionUtil.isEmpty(longs)){ + continue; + } + List sysUsers = userService.selectUserByRoleIdsAndProjectId(longs, desVolumeCatalog.getProjectId()); + List userIds = sysUsers.stream().map(SysUser::getUserId).toList(); + if(CollectionUtil.isEmpty(userIds)){ + continue; + } + + List list = volumeFileViewerService.list(Wrappers.lambdaQuery(DesVolumeFileViewer.class) + .eq(DesVolumeFileViewer::getVolumeFileId, record.getVolumeFileId()) + .in(DesVolumeFileViewer::getUserId, userIds) + ); + List list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList(); + //找出没有查看的人 发送短信 + List list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList(); + asyncUtil.sendSms(list2.stream().map(SysUser::getPhonenumber).toList(), "config5"); + + } + + List list1 = records.stream().map(DesSmsRecord::getId).toList(); + + desSmsRecordService.lambdaUpdate().in(DesSmsRecord::getId, list1) + .set(DesSmsRecord::getAgain, "0").update(); + + log.info("定时任务:设计图纸查看短信提醒 完成"); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java index 7a1e1bbc..54da9726 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.R; +import org.dromara.common.sse.dto.SseMessageDto; +import org.dromara.common.sse.utils.SseMessageUtils; import org.dromara.project.service.IBusProjectService; import org.dromara.quality.domain.QltQualityInspection; import org.dromara.quality.service.IQltQualityInspectionService; @@ -19,6 +21,7 @@ import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Component; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; @Slf4j @@ -52,7 +55,7 @@ public class InspectionJob { for (int i = 0; i < list.size(); i += batchSize) { int endIndex = Math.min(i + batchSize, list.size()); List batch = list.subList(i, endIndex); - + List userIds = new ArrayList<>(); for (QltQualityInspection qualityInspection : batch) { Long correctorId = qualityInspection.getCorrectorId(); String phonenumber = userService.queryById(correctorId).getPhonenumber(); @@ -63,8 +66,15 @@ public class InspectionJob { if (!smsResponse.isSuccess()) { log.error("验证码短信发送异常 => {}", smsResponse); } + userIds.add(correctorId); } - + if(userIds.isEmpty()){ + continue; + } + SseMessageDto sseMessageDto = new SseMessageDto(); + sseMessageDto.setMessage("您负责整改的质量工单已逾期,请尽快前往处理!"); + sseMessageDto.setUserIds(userIds); + SseMessageUtils.publishMessage(sseMessageDto); log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); } @@ -88,6 +98,7 @@ public class InspectionJob { int endIndex = Math.min(i + batchSize, list.size()); List batch = list.subList(i, endIndex); + List userIds = new ArrayList<>(); for (HseSafetyInspection safetyInspection : batch) { Long correctorId = safetyInspection.getCorrectorId(); String phonenumber = userService.queryById(correctorId).getPhonenumber(); @@ -98,8 +109,14 @@ public class InspectionJob { if (!smsResponse.isSuccess()) { log.error("验证码短信发送异常 => {}", smsResponse); } + userIds.add(correctorId); } + SseMessageDto sseMessageDto = new SseMessageDto(); + sseMessageDto.setMessage("您负责整改的安全工单已逾期,请尽快前往处理!"); + sseMessageDto.setUserIds(userIds); + SseMessageUtils.publishMessage(sseMessageDto); + log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusLeaveAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusLeaveAppController.java index 43dcbba9..1aed34f6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusLeaveAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusLeaveAppController.java @@ -63,6 +63,13 @@ public class BusLeaveAppController extends BaseController { return leaveService.listByAuditRole(req, pageQuery); } + /** + * 获取请假信息 + */ + @GetMapping("/{id}") + public R queryById(@PathVariable Long id) { + return R.ok(leaveService.queryById(id)); + } /** * 提交请假 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAuditDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAuditDto.java index bca49270..7acc36cc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAuditDto.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/leave/BusLeaveAuditDto.java @@ -12,4 +12,7 @@ public class BusLeaveAuditDto { * 意见(1未读 2同意 3拒绝) */ private String gangerOpinion; + + private String gangerExplain; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/reissuecard/BusReissueCardUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/reissuecard/BusReissueCardUpdateReq.java index 1b3e04b3..fbe453e2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/reissuecard/BusReissueCardUpdateReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/reissuecard/BusReissueCardUpdateReq.java @@ -77,5 +77,5 @@ public class BusReissueCardUpdateReq implements Serializable { */ private LocalDate date; - + private String gangerExplain; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/leave/BusLeaveVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/leave/BusLeaveVo.java index 1afa46f4..ce46b6b8 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/leave/BusLeaveVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/leave/BusLeaveVo.java @@ -7,11 +7,13 @@ import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.project.domain.BusLeave; +import org.dromara.project.domain.vo.reissuecard.AuditUserVo; import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; +import java.util.List; /** @@ -155,11 +157,20 @@ public class BusLeaveVo implements Serializable { @ExcelProperty(value = "备注") private String remark; - /** - * 审核状态 - */ /** * 请假申请状态 */ private String auditStatus; + + private List auditors; + + /** + * 申请人类型(0-施工人员 1-管理人员 2-分包人员) + */ + private String userType; + + /** + * 头像 + */ + private String avatar; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusLeaveService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusLeaveService.java index eca74e99..3064e874 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusLeaveService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusLeaveService.java @@ -10,6 +10,7 @@ import org.dromara.project.domain.dto.leave.*; import org.dromara.project.domain.dto.reissuecard.BusReissueCardQueryReq; import org.dromara.project.domain.vo.leave.BusLeaveVo; import org.dromara.project.domain.vo.reissuecard.BusReissueCardVo; +import org.springframework.web.bind.annotation.PathVariable; import java.time.LocalDate; import java.time.LocalDateTime; @@ -127,4 +128,5 @@ public interface IBusLeaveService extends IService { Boolean audit(BusLeaveAuditDto dto); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 0f1806d4..4ef733aa 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -119,7 +119,8 @@ public class BusAttendanceServiceImpl extends ServiceImpl ATTENDANCE_STATUS = new HashSet<>(Arrays.asList(BusAttendanceClockStatusEnum.NORMAL.getValue(), - BusAttendanceClockStatusEnum.LATE.getValue(), BusAttendanceClockStatusEnum.LEAVEEARLY.getValue())); + BusAttendanceClockStatusEnum.LATE.getValue(), BusAttendanceClockStatusEnum.LEAVEEARLY.getValue() + ,BusAttendanceClockStatusEnum.REISSUE.getValue())); /** @@ -526,24 +527,13 @@ public class BusAttendanceServiceImpl extends ServiceImpl attendanceList = this.lambdaQuery() .eq(BusAttendance::getProjectId, projectId) .eq(BusAttendance::getClockDate, LocalDate.now()) + .in(BusAttendance::getClockStatus, ATTENDANCE_STATUS) + .apply(" user_id not in (select sys_user_id from sub_construction_user where project_id = {0} and user_role != '0' )", projectId) .list(); if (CollUtil.isEmpty(attendanceList)) { return List.of(); } - Map> attendanceMap = attendanceList.stream() - .collect(Collectors.groupingBy(BusAttendance::getUserId)); - List attendedUserIds = new ArrayList<>(); - for (Map.Entry> entry : attendanceMap.entrySet()) { - Long userId = entry.getKey(); - List records = entry.getValue(); - - boolean allValid = records.stream() - .anyMatch(record -> ATTENDANCE_STATUS.contains(record.getClockStatus())); - if (allValid) { - attendedUserIds.add(userId); - } - } - return attendedUserIds; + return attendanceList.stream().map(BusAttendance::getUserId).distinct().toList(); } @@ -973,7 +963,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl byUserId = projectTeamService.getByUserId(userId, dto.getProjectId()); if(CollectionUtil.isEmpty(byUserId)){ - return new TableDataInfo<>(); + return TableDataInfo.build(new ArrayList<>()); } list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList(); } @@ -1278,9 +1268,10 @@ public class BusAttendanceServiceImpl extends ServiceImpl excludeUserIds = constructionUserService.list(Wrappers.lambdaQuery() // .ne(SubConstructionUser::getUserRole, "0") +// .eq() // ).stream().map(SubConstructionUser::getSysUserId).toList(); List allUserIds = constructionUserService.list(Wrappers.lambdaQuery() diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java index 9bf682ce..4aae1372 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusLeaveServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.project.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; @@ -17,6 +18,7 @@ import org.dromara.common.core.domain.R; 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.domain.model.LoginUser; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; @@ -33,10 +35,16 @@ import org.dromara.project.domain.dto.leave.*; import org.dromara.project.domain.dto.reissuecard.BusReissueCardQueryReq; import org.dromara.project.domain.enums.*; import org.dromara.project.domain.vo.leave.BusLeaveVo; +import org.dromara.project.domain.vo.reissuecard.AuditUserVo; import org.dromara.project.domain.vo.reissuecard.BusReissueCardVo; import org.dromara.project.mapper.BusLeaveMapper; import org.dromara.project.service.*; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; import org.dromara.workflow.domain.TestLeave; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; @@ -81,6 +89,12 @@ public class BusLeaveServiceImpl extends ServiceImpl @Resource private ISysRoleService roleService; + @Resource + private ISysUserService userService; + + @Resource + private ISysOssService ossService; + /** * 查询施工人员请假申请 * @@ -89,7 +103,46 @@ public class BusLeaveServiceImpl extends ServiceImpl */ @Override public BusLeaveVo queryById(Long id) { - return baseMapper.selectVoById(id); + BusLeaveVo busLeaveVo = baseMapper.selectVoById(id); + + String userType = busLeaveVo.getUserType(); + //两个角色 一个审核分包的=6,一个审核管理的=7 + List sysUsers = new ArrayList<>(); + if(busLeaveVo.getGangerId()==null){ + if("1".equals(userType)){ + sysUsers = userService.selectUserByRoleIdAndProjectId(6L, busLeaveVo.getProjectId()); + } else if ("2".equals(userType)) { + sysUsers = userService.selectUserByRoleIdAndProjectId(7L, busLeaveVo.getProjectId()); + } + }else { + SysUserVo sysUserVo = userService.selectUserById(busLeaveVo.getGangerId()); + if(sysUserVo != null){ + busLeaveVo.setGangerName(sysUserVo.getNickName()); + if(sysUserVo.getAvatar() != null){ + SysOssVo byId1 = ossService.getById(sysUserVo.getAvatar()); + if(byId1 != null){ + busLeaveVo.setAvatar(byId1.getUrl()); + } + + } + } + } + + if(CollectionUtil.isNotEmpty(sysUsers)){ + busLeaveVo.setAuditors(sysUsers.stream().map(sysUser -> { + AuditUserVo userVo = new AuditUserVo(); + userVo.setUserId(sysUser.getUserId()); + userVo.setNickName(sysUser.getNickName()); + if(sysUser.getAvatar() != null){ + SysOssVo byId1 = ossService.getById(sysUser.getAvatar()); + if(byId1 != null){ + userVo.setAvatar(byId1.getUrl()); + } + } + return userVo; + }).collect(Collectors.toList())); + } + return busLeaveVo; } /** @@ -377,7 +430,7 @@ public class BusLeaveServiceImpl extends ServiceImpl LambdaQueryWrapper wrappers = new LambdaQueryWrapper<>(); wrappers.eq(BusLeave::getUserId, userId) - .eq(BusLeave::getAuditStatus, BusinessStatusEnum.FINISH.getStatus()) + .eq(BusLeave::getGangerOpinion, "2") .le(BusLeave::getStartTime, clockTime) // 请假开始时间 <= 当天打卡时间 .ge(BusLeave::getEndTime, clockTime); // 请假结束时间 >= 当天打卡时间 @@ -397,8 +450,8 @@ public class BusLeaveServiceImpl extends ServiceImpl // 3. 构造查询条件 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper - .eq(BusLeave::getUserId, userId) + wrapper.eq(BusLeave::getUserId, userId) + .ne(BusLeave::getGangerOpinion, "3") .le(BusLeave::getStartTime, newEnd) // 已有记录的开始时间 < 新记录的结束时间 .ge(BusLeave::getEndTime, newStart); // 已有记录的结束时间 > 新记录的开始时间 @@ -419,14 +472,14 @@ public class BusLeaveServiceImpl extends ServiceImpl lqw.eq(ObjectUtils.isNotEmpty(req.getUserId()), BusLeave::getUserId, req.getUserId()); - List relevancyList = userProjectRelevancyService.list( - Wrappers.lambdaQuery(BusUserProjectRelevancy.class) - .eq(BusUserProjectRelevancy::getProjectId, req.getProjectId()) - .eq(BusUserProjectRelevancy::getUserId, req.getUserId())); +// List relevancyList = userProjectRelevancyService.list( +// Wrappers.lambdaQuery(BusUserProjectRelevancy.class) +// .eq(BusUserProjectRelevancy::getProjectId, req.getProjectId()) +// .eq(BusUserProjectRelevancy::getUserId, req.getUserId())); - boolean b = relevancyList.stream().anyMatch(relevancy -> "2".equals(relevancy.getUserType())); +// boolean b = relevancyList.stream().anyMatch(relevancy -> "2".equals(relevancy.getUserType())); - lqw.eq(!b, BusLeave::getProjectId, req.getProjectId()); + lqw.eq(BusLeave::getProjectId, req.getProjectId()); // 新增日期范围筛选条件 if (req.getDate() != null) { LocalDateTime dateStart = LocalDateTime.of(req.getDate(), LocalTime.MIN); @@ -438,7 +491,6 @@ public class BusLeaveServiceImpl extends ServiceImpl ); } - Page result = this.page(pageQuery.build(), lqw); return TableDataInfo.build(this.getVoPage(result)); } @@ -462,10 +514,10 @@ public class BusLeaveServiceImpl extends ServiceImpl List type = new ArrayList<>(); if(roleIds.contains(7L)){ - type.add("7"); + type.add("1"); } if(roleIds.contains(6L)){ - type.add("6"); + type.add("2"); } if(CollUtil.isEmpty(type)){ return TableDataInfo.build(); @@ -489,6 +541,15 @@ public class BusLeaveServiceImpl extends ServiceImpl } String gangerOpinion = dto.getGangerOpinion(); busLeave.setGangerOpinion(gangerOpinion); + busLeave.setGangerExplain(dto.getGangerExplain()); + if(busLeave.getGangerId() == null){ + LoginUser loginUser = LoginHelper.getLoginUser(); + busLeave.setGangerId(loginUser.getUserId()); + busLeave.setGangerName(loginUser.getNickname()); + } + + busLeave.setGangerTime(LocalDateTime.now()); + int i = baseMapper.updateById(busLeave); if(gangerOpinion.equals("2")){ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java index b9b6ed01..8e4936af 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java @@ -1191,13 +1191,14 @@ public class BusProjectServiceImpl extends ServiceImpl> getInfoData(TanchuangInfoReq req) { Map> map = new HashMap<>(); SubConstructionUser byUserId = constructionUserService.getByUserId(req.getId()); - SubContractor contractor = contractorService.getById(byUserId.getContractorId()); Map renyuan = new HashMap<>(); - renyuan.put("name", byUserId.getUserName()); - renyuan.put("teamName", byUserId.getTeamName()); - renyuan.put("phone", byUserId.getPhone()); - renyuan.put("typeOfWork", dictDataService.selectDictLabel("type_of_work", byUserId.getTypeOfWork())); - renyuan.put("contractorNmae", contractor.getName()); + if (byUserId != null){ + renyuan.put("name", byUserId.getUserName() != null ? byUserId.getUserName():""); + renyuan.put("teamName", byUserId.getTeamName() != null ? byUserId.getTeamName():""); + renyuan.put("phone", byUserId.getPhone() != null ? byUserId.getPhone():""); + renyuan.put("typeOfWork", dictDataService.selectDictLabel("type_of_work", byUserId.getTypeOfWork())); + renyuan.put("contractorNmae",byUserId.getContractorId() != null ? contractorService.getById(byUserId.getContractorId()).getName():""); + } map.put("renyuan", renyuan); return map; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusReissueCardServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusReissueCardServiceImpl.java index fa1a49e8..ba76e67e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusReissueCardServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusReissueCardServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.common.core.constant.HttpStatus; 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.domain.model.LoginUser; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; @@ -117,11 +118,13 @@ public class BusReissueCardServiceImpl extends ServiceImpl sysUsers = new ArrayList<>(); - if("1".equals(userType)){ - sysUsers = userService.selectUserByRoleIdAndProjectId(6L, busReissueCardVo.getProjectId()); - } else if ("2".equals(userType)) { - sysUsers = userService.selectUserByRoleIdAndProjectId(7L, busReissueCardVo.getProjectId()); - }else{ + if(busReissueCardVo.getGangerId()==null){ + if("1".equals(userType)){ + sysUsers = userService.selectUserByRoleIdAndProjectId(6L, busReissueCardVo.getProjectId()); + } else if ("2".equals(userType)) { + sysUsers = userService.selectUserByRoleIdAndProjectId(7L, busReissueCardVo.getProjectId()); + } + }else { SysUserVo sysUserVo = userService.selectUserById(busReissueCardVo.getGangerId()); if(sysUserVo != null){ busReissueCardVo.setGangerName(sysUserVo.getNickName()); @@ -134,6 +137,7 @@ public class BusReissueCardServiceImpl extends ServiceImpl { AuditUserVo userVo = new AuditUserVo(); @@ -193,6 +197,15 @@ public class BusReissueCardServiceImpl extends ServiceImpl type = new ArrayList<>(); if(roleIds.contains(7L)){ - type.add("7"); + type.add("1"); } if(roleIds.contains(6L)){ - type.add("6"); + type.add("2"); } if(CollUtil.isEmpty(type)){ return TableDataInfo.build(); @@ -459,6 +472,15 @@ public class BusReissueCardServiceImpl extends ServiceImpl{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + String queryNameById(Long projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierInfoService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierInfoService.java index 9df420e6..52a5d29a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierInfoService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierInfoService.java @@ -73,4 +73,5 @@ public interface IXzdSupplierInfoService extends IService{ R> typeList(); + String queryNameById(Long id); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectServiceImpl.java index 19a3c025..c41b80dc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdProjectServiceImpl.java @@ -503,6 +503,12 @@ public class XzdProjectServiceImpl extends ServiceImpl 0; } + @Override + public String queryNameById(Long projectId) { + XzdProject xzdProject = baseMapper.selectById(projectId); + return xzdProject != null ? xzdProject.getProjectName() : ""; + } + private void setValue(XzdProjectVo entity){ //项目概况 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java index 17ae7c60..9bb4e0fe 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java @@ -630,6 +630,12 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl list){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();