ソースを参照

pms 瑞都日报 附件

zhangcl 1 週間 前
コミット
1a5e25f629

+ 34 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/AttachmentTypeEnum.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.enums;
+
+/**
+ * @description: 附件 细分项
+ * @author: ruiqi
+ * @create: 2025-10-20
+ **/
+public enum AttachmentTypeEnum {
+    EXTERNAL_RENTAL("EXTERNAL_RENTAL", "外租设备", 1),
+    CONSTRUCTION_DESIGN("CONSTRUCTION_DESIGN", "施工设计", 2),
+    COMPLETION_REPORT("COMPLETION_REPORT", "完工报告", 3);
+
+    private String code;
+    private String msg;
+    private Integer num;
+
+    AttachmentTypeEnum(String code, String msg, Integer num) {
+        this.code = code;
+        this.msg = msg;
+        this.num = num;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+}

+ 15 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/IotRdDailyReportController.java

@@ -10,6 +10,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdailyreportattrs.vo.IotDailyReportAttrsPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
@@ -17,12 +18,16 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDai
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdailyreportattrs.IotDailyReportAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
+import cn.iocoder.yudao.module.pms.enums.AttachmentCategoryEnum;
+import cn.iocoder.yudao.module.pms.enums.AttachmentTypeEnum;
 import cn.iocoder.yudao.module.pms.service.IotDeviceService;
+import cn.iocoder.yudao.module.pms.service.iotattachment.IotAttachmentService;
 import cn.iocoder.yudao.module.pms.service.iotdailyreportattrs.IotDailyReportAttrsService;
 import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
 import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
@@ -31,7 +36,6 @@ import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -77,7 +81,7 @@ public class IotRdDailyReportController {
     private IotDailyReportAttrsService iotDailyReportAttrsService;
 
     @Resource
-    private DictDataService dictDataService;
+    private IotAttachmentService iotAttachmentService;
 
     @Resource
     private AdminUserApi adminUserApi;
@@ -176,6 +180,15 @@ public class IotRdDailyReportController {
                 dailyReportVO.setResponsiblePersonNames(userNames);
             }
         }
+        // 查询当前日报关联的附件信息
+        IotAttachmentPageReqVO reqVO = new IotAttachmentPageReqVO();
+        reqVO.setBizId(dailyReport.getId());
+        reqVO.setCategory(AttachmentCategoryEnum.DAILY_REPORT.getCode());
+        reqVO.setType(AttachmentTypeEnum.EXTERNAL_RENTAL.getCode());
+        List<IotAttachmentDO> attachments = iotAttachmentService.getIotAttachments(reqVO);
+        if (CollUtil.isNotEmpty(attachments)) {
+            dailyReportVO.setAttachments(attachments);
+        }
         // 查询日报对应的部门信息
         if (ObjUtil.isNotEmpty(dailyReport.getDeptId())) {
             DeptDO dept = deptService.getDept(dailyReport.getDeptId());

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
 
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdailyreportattrs.IotDailyReportAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@@ -254,5 +255,5 @@ public class IotRdDailyReportRespVO {
      */
     @Schema(description = "附件列表", example = "https://aims.deepoil.cc/admin-api/infra/file/29/get/人力资源.png")
     @ExcelProperty("附件列表")
-    private List<IotDailyReportAttrsDO> attachments;
+    private List<IotAttachmentDO> attachments;
 }

+ 15 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotattachment/IotAttachmentMapper.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachme
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 附件 Mapper
  *
@@ -29,4 +31,17 @@ public interface IotAttachmentMapper extends BaseMapperX<IotAttachmentDO> {
                 .orderByDesc(IotAttachmentDO::getId));
     }
 
+    default List<IotAttachmentDO> attachments(IotAttachmentPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<IotAttachmentDO>()
+                .eqIfPresent(IotAttachmentDO::getCategory, reqVO.getCategory())
+                .eqIfPresent(IotAttachmentDO::getBizId, reqVO.getBizId())
+                .eqIfPresent(IotAttachmentDO::getType, reqVO.getType())
+                .likeIfPresent(IotAttachmentDO::getFilename, reqVO.getFilename())
+                .eqIfPresent(IotAttachmentDO::getFileType, reqVO.getFileType())
+                .eqIfPresent(IotAttachmentDO::getFilePath, reqVO.getFilePath())
+                .eqIfPresent(IotAttachmentDO::getFileSize, reqVO.getFileSize())
+                .eqIfPresent(IotAttachmentDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotAttachmentDO::getCreateTime, reqVO.getCreateTime()));
+    }
+
 }

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotattachment/IotAttachmentService.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachme
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 附件 Service 接口
@@ -52,4 +53,12 @@ public interface IotAttachmentService {
      */
     PageResult<IotAttachmentDO> getIotAttachmentPage(IotAttachmentPageReqVO pageReqVO);
 
+    /**
+     * 获得附件列表
+     *
+     * @param pageReqVO 列表查询
+     * @return 附件列表
+     */
+    List<IotAttachmentDO> getIotAttachments(IotAttachmentPageReqVO pageReqVO);
+
 }

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotattachment/IotAttachmentServiceImpl.java

@@ -11,6 +11,8 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_ATTACHMENT_NOT_EXISTS;
 
@@ -68,4 +70,9 @@ public class IotAttachmentServiceImpl implements IotAttachmentService {
         return iotAttachmentMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<IotAttachmentDO> getIotAttachments(IotAttachmentPageReqVO pageReqVO) {
+        return iotAttachmentMapper.attachments(pageReqVO);
+    }
+
 }

+ 31 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportServiceImpl.java

@@ -7,14 +7,20 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotattachment.IotAttachmentMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreport.IotRdDailyReportMapper;
+import cn.iocoder.yudao.module.pms.enums.AttachmentCategoryEnum;
+import cn.iocoder.yudao.module.pms.enums.AttachmentTypeEnum;
 import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
+import com.google.common.collect.ImmutableMap;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -32,6 +38,9 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
     @Resource
     private IotRdDailyReportMapper iotRdDailyReportMapper;
 
+    @Resource
+    private IotAttachmentMapper iotAttachmentMapper;
+
     @Override
     public Long createIotRdDailyReport(IotRdDailyReportSaveReqVO createReqVO) {
         // 插入
@@ -55,9 +64,29 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
         // 如果上传了附件 保存附件
         if (CollUtil.isNotEmpty(updateReqVO.getAttachments())) {
             List<IotAttachmentSaveReqVO> attachments = updateReqVO.getAttachments();
-
+            List<IotAttachmentDO> tobeAddedAttachments = new ArrayList<>();
+            attachments.forEach(att -> {
+                IotAttachmentDO attachment = new IotAttachmentDO();
+                attachment.setBizId(att.getBizId());
+                attachment.setCategory(AttachmentCategoryEnum.DAILY_REPORT.getCode());
+                attachment.setType(AttachmentTypeEnum.EXTERNAL_RENTAL.getCode());
+                attachment.setFilePath(att.getFilePath());
+                attachment.setFileSize(att.getFileSize());
+                attachment.setFilename(att.getFilename());
+                attachment.setFileType(att.getFileType());
+                attachment.setRemark(att.getRemark());
+                tobeAddedAttachments.add(attachment);
+            });
+            if (CollUtil.isNotEmpty(tobeAddedAttachments)) {
+                // 先删除再新增
+                int count = iotAttachmentMapper.deleteByMap(ImmutableMap.of(
+                        "category", AttachmentCategoryEnum.DAILY_REPORT.getCode(),
+                        "biz_id", updateObj.getId(),
+                        "type", AttachmentTypeEnum.EXTERNAL_RENTAL.getCode()
+                ));
+                iotAttachmentMapper.insertBatch(tobeAddedAttachments);
+            }
         }
-        ;
     }
 
     @Override