lipenghui 4 месяцев назад
Родитель
Сommit
8a8a255969
12 измененных файлов с 534 добавлено и 12 удалено
  1. 98 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/IotMaintainMaterialController.java
  2. 53 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialPageReqVO.java
  3. 64 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialRespVO.java
  4. 46 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialSaveReqVO.java
  5. 72 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/material/IotMaintainMaterialDO.java
  6. 36 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/material/IotMaintainMaterialMapper.java
  7. 3 7
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainServiceImpl.java
  8. 57 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/material/IotMaintainMaterialService.java
  9. 75 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/material/IotMaintainMaterialServiceImpl.java
  10. 1 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
  11. 21 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
  12. 8 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

+ 98 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/IotMaintainMaterialController.java

@@ -0,0 +1,98 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.material;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
+import cn.iocoder.yudao.module.pms.service.maintain.material.IotMaintainMaterialService;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.rq.dal.dataobject.iotmaintainmaterial.IotMaintainMaterialDO;
+
+
+@Tag(name = "管理后台 - 工单物料")
+@RestController
+@RequestMapping("/rq/iot-maintain-material")
+@Validated
+public class IotMaintainMaterialController {
+
+    @Resource
+    private IotMaintainMaterialService iotMaintainMaterialService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建工单物料")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:create')")
+    public CommonResult<Long> createIotMaintainMaterial(@Valid @RequestBody IotMaintainMaterialSaveReqVO createReqVO) {
+        return success(iotMaintainMaterialService.createIotMaintainMaterial(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新工单物料")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:update')")
+    public CommonResult<Boolean> updateIotMaintainMaterial(@Valid @RequestBody IotMaintainMaterialSaveReqVO updateReqVO) {
+        iotMaintainMaterialService.updateIotMaintainMaterial(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除工单物料")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:delete')")
+    public CommonResult<Boolean> deleteIotMaintainMaterial(@RequestParam("id") Long id) {
+        iotMaintainMaterialService.deleteIotMaintainMaterial(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得工单物料")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:query')")
+    public CommonResult<IotMaintainMaterialRespVO> getIotMaintainMaterial(@RequestParam("id") Long id) {
+        IotMaintainMaterialDO iotMaintainMaterial = iotMaintainMaterialService.getIotMaintainMaterial(id);
+        return success(BeanUtils.toBean(iotMaintainMaterial, IotMaintainMaterialRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得工单物料分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:query')")
+    public CommonResult<PageResult<IotMaintainMaterialRespVO>> getIotMaintainMaterialPage(@Valid IotMaintainMaterialPageReqVO pageReqVO) {
+        PageResult<IotMaintainMaterialDO> pageResult = iotMaintainMaterialService.getIotMaintainMaterialPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotMaintainMaterialRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出工单物料 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-maintain-material:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotMaintainMaterialExcel(@Valid IotMaintainMaterialPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotMaintainMaterialDO> list = iotMaintainMaterialService.getIotMaintainMaterialPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "工单物料.xls", "数据", IotMaintainMaterialRespVO.class,
+                        BeanUtils.toBean(list, IotMaintainMaterialRespVO.class));
+    }
+
+}

+ 53 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialPageReqVO.java

@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 工单物料分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotMaintainMaterialPageReqVO extends PageParam {
+
+    @Schema(description = "物料编码")
+    private String code;
+
+    @Schema(description = "物料名称", example = "张三")
+    private String name;
+
+    @Schema(description = "单位")
+    private String unit;
+
+    @Schema(description = "单价", example = "28614")
+    private BigDecimal price;
+
+    @Schema(description = "物料来源", example = "2")
+    private String sourceType;
+
+    @Schema(description = "消耗数量", example = "30700")
+    private Integer depleteCount;
+
+    @Schema(description = "总库存数量", example = "5934")
+    private Integer totalCount;
+
+    @Schema(description = "SAP系统中的物料唯一编号")
+    private String sapCode;
+
+    @Schema(description = "状态 0启用  1停用", example = "2")
+    private Integer status;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 64 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialRespVO.java

@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 工单物料 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotMaintainMaterialRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1446")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "物料编码")
+    @ExcelProperty("物料编码")
+    private String code;
+
+    @Schema(description = "物料名称", example = "张三")
+    @ExcelProperty("物料名称")
+    private String name;
+
+    @Schema(description = "单位")
+    @ExcelProperty("单位")
+    private String unit;
+
+    @Schema(description = "单价", example = "28614")
+    @ExcelProperty("单价")
+    private BigDecimal price;
+
+    @Schema(description = "物料来源", example = "2")
+    @ExcelProperty("物料来源")
+    private String sourceType;
+
+    @Schema(description = "消耗数量", example = "30700")
+    @ExcelProperty("消耗数量")
+    private Integer depleteCount;
+
+    @Schema(description = "总库存数量", example = "5934")
+    @ExcelProperty("总库存数量")
+    private Integer totalCount;
+
+    @Schema(description = "SAP系统中的物料唯一编号")
+    @ExcelProperty("SAP系统中的物料唯一编号")
+    private String sapCode;
+
+    @Schema(description = "状态 0启用  1停用", example = "2")
+    @ExcelProperty("状态 0启用  1停用")
+    private Integer status;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 46 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/material/vo/IotMaintainMaterialSaveReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 工单物料新增/修改 Request VO")
+@Data
+public class IotMaintainMaterialSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1446")
+    private Long id;
+
+    @Schema(description = "物料编码")
+    private String code;
+
+    @Schema(description = "物料名称", example = "张三")
+    private String name;
+
+    @Schema(description = "单位")
+    private String unit;
+
+    @Schema(description = "单价", example = "28614")
+    private BigDecimal price;
+
+    @Schema(description = "物料来源", example = "2")
+    private String sourceType;
+
+    @Schema(description = "消耗数量", example = "30700")
+    private Integer depleteCount;
+
+    @Schema(description = "总库存数量", example = "5934")
+    private Integer totalCount;
+
+    @Schema(description = "SAP系统中的物料唯一编号")
+    private String sapCode;
+
+    @Schema(description = "状态 0启用  1停用", example = "2")
+    private Integer status;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+}

+ 72 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/material/IotMaintainMaterialDO.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.rq.dal.dataobject.iotmaintainmaterial;
+
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 工单物料 DO
+ *
+ * @author 李鹏辉
+ */
+@TableName("rq_iot_maintain_material")
+@KeySequence("rq_iot_maintain_material_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotMaintainMaterialDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 物料编码
+     */
+    private String code;
+    /**
+     * 物料名称
+     */
+    private String name;
+    /**
+     * 单位
+     */
+    private String unit;
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+    /**
+     * 物料来源
+     */
+    private String sourceType;
+    /**
+     * 消耗数量
+     */
+    private Integer depleteCount;
+    /**
+     * 总库存数量
+     */
+    private Integer totalCount;
+    /**
+     * SAP系统中的物料唯一编号
+     */
+    private String sapCode;
+    /**
+     * 状态 0启用  1停用
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 36 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/material/IotMaintainMaterialMapper.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.maintain.material;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialPageReqVO;
+import cn.iocoder.yudao.module.rq.dal.dataobject.iotmaintainmaterial.IotMaintainMaterialDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工单物料 Mapper
+ *
+ * @author 李鹏辉
+ */
+@Mapper
+public interface IotMaintainMaterialMapper extends BaseMapperX<IotMaintainMaterialDO> {
+
+    default PageResult<IotMaintainMaterialDO> selectPage(IotMaintainMaterialPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotMaintainMaterialDO>()
+                .eqIfPresent(IotMaintainMaterialDO::getCode, reqVO.getCode())
+                .likeIfPresent(IotMaintainMaterialDO::getName, reqVO.getName())
+                .eqIfPresent(IotMaintainMaterialDO::getUnit, reqVO.getUnit())
+                .eqIfPresent(IotMaintainMaterialDO::getPrice, reqVO.getPrice())
+                .eqIfPresent(IotMaintainMaterialDO::getSourceType, reqVO.getSourceType())
+                .eqIfPresent(IotMaintainMaterialDO::getDepleteCount, reqVO.getDepleteCount())
+                .eqIfPresent(IotMaintainMaterialDO::getTotalCount, reqVO.getTotalCount())
+                .eqIfPresent(IotMaintainMaterialDO::getSapCode, reqVO.getSapCode())
+                .eqIfPresent(IotMaintainMaterialDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(IotMaintainMaterialDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotMaintainMaterialDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotMaintainMaterialDO::getId));
+    }
+
+}

+ 3 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainServiceImpl.java

@@ -1,19 +1,15 @@
 package cn.iocoder.yudao.module.pms.service.maintain;
 
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 
+import javax.annotation.Resource;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTAIN_NOT_EXISTS;

+ 57 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/material/IotMaintainMaterialService.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.pms.service.maintain.material;
+
+import java.util.*;
+import javax.validation.*;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
+import cn.iocoder.yudao.module.rq.dal.dataobject.iotmaintainmaterial.IotMaintainMaterialDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+/**
+ * 工单物料 Service 接口
+ *
+ * @author 李鹏辉
+ */
+public interface IotMaintainMaterialService {
+
+    /**
+     * 创建工单物料
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotMaintainMaterial(@Valid IotMaintainMaterialSaveReqVO createReqVO);
+
+    /**
+     * 更新工单物料
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotMaintainMaterial(@Valid IotMaintainMaterialSaveReqVO updateReqVO);
+
+    /**
+     * 删除工单物料
+     *
+     * @param id 编号
+     */
+    void deleteIotMaintainMaterial(Long id);
+
+    /**
+     * 获得工单物料
+     *
+     * @param id 编号
+     * @return 工单物料
+     */
+    IotMaintainMaterialDO getIotMaintainMaterial(Long id);
+
+    /**
+     * 获得工单物料分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 工单物料分页
+     */
+    PageResult<IotMaintainMaterialDO> getIotMaintainMaterialPage(IotMaintainMaterialPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/material/IotMaintainMaterialServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.pms.service.maintain.material;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.material.IotMaintainMaterialMapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.module.rq.dal.dataobject.iotmaintainmaterial.IotMaintainMaterialDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTAIN_MATERIAL_NOT_EXISTS;
+
+/**
+ * 工单物料 Service 实现类
+ *
+ * @author 李鹏辉
+ */
+@Service
+@Validated
+public class IotMaintainMaterialServiceImpl implements IotMaintainMaterialService {
+
+    @Resource
+    private IotMaintainMaterialMapper iotMaintainMaterialMapper;
+
+    @Override
+    public Long createIotMaintainMaterial(IotMaintainMaterialSaveReqVO createReqVO) {
+        // 插入
+        IotMaintainMaterialDO iotMaintainMaterial = BeanUtils.toBean(createReqVO, IotMaintainMaterialDO.class);
+        iotMaintainMaterialMapper.insert(iotMaintainMaterial);
+        // 返回
+        return iotMaintainMaterial.getId();
+    }
+
+    @Override
+    public void updateIotMaintainMaterial(IotMaintainMaterialSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotMaintainMaterialExists(updateReqVO.getId());
+        // 更新
+        IotMaintainMaterialDO updateObj = BeanUtils.toBean(updateReqVO, IotMaintainMaterialDO.class);
+        iotMaintainMaterialMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotMaintainMaterial(Long id) {
+        // 校验存在
+        validateIotMaintainMaterialExists(id);
+        // 删除
+        iotMaintainMaterialMapper.deleteById(id);
+    }
+
+    private void validateIotMaintainMaterialExists(Long id) {
+        if (iotMaintainMaterialMapper.selectById(id) == null) {
+            throw exception(IOT_MAINTAIN_MATERIAL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotMaintainMaterialDO getIotMaintainMaterial(Long id) {
+        return iotMaintainMaterialMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotMaintainMaterialDO> getIotMaintainMaterialPage(IotMaintainMaterialPageReqVO pageReqVO) {
+        return iotMaintainMaterialMapper.selectPage(pageReqVO);
+    }
+
+}

+ 1 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java

@@ -30,6 +30,7 @@ public interface AdminUserApi {
      * @return 用户下属用户列表
      */
     List<AdminUserRespDTO> getUserListBySubordinate(Long id);
+    List<AdminUserRespDTO> getUserListByDeptId(Long id);
 
     /**
      * 通过用户 ID 查询用户们

+ 21 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java

@@ -13,10 +13,7 @@ import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 
@@ -60,6 +57,26 @@ public class AdminUserApiImpl implements AdminUserApi {
         return BeanUtils.toBean(users, AdminUserRespDTO.class);
     }
 
+    @Override
+    public List<AdminUserRespDTO> getUserListByDeptId(Long id) {
+        DeptDO dept = deptService.getDept(id);
+        if (Objects.isNull(dept)) {
+            return Collections.emptyList();
+        }
+        // 1.2 获取所有子部门
+        Set<Long> deptIds = new HashSet<>();
+        deptIds.add(dept.getId());
+        List<DeptDO> childDeptList = deptService.getChildDeptList(deptIds);
+        if (CollUtil.isNotEmpty(childDeptList)) {
+            deptIds.addAll(convertSet(childDeptList, DeptDO::getId));
+        }
+
+        // 2. 获取部门对应的用户信息
+        List<AdminUserDO> users = userService.getUserListByDeptIds(deptIds);
+        users.removeIf(item -> ObjUtil.equal(item.getId(), id)); // 排除自己
+        return BeanUtils.toBean(users, AdminUserRespDTO.class);
+    }
+
     @Override
     public List<AdminUserRespDTO> getUserList(Collection<Long> ids) {
         return DataPermissionUtils.executeIgnore(() -> { // 禁用数据权限。原因是,一般基于指定 id 的 API 查询,都是数据拼接为主

+ 8 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -176,9 +176,16 @@ public class UserController {
 
     @GetMapping("/dept/users")
     @PreAuthorize("@ss.hasPermission('system:user:query')")
-    public CommonResult<List<AdminUserRespDTO>> getUsersByDeptId(Long userId) {
+    public CommonResult<List<AdminUserRespDTO>> getUsersByLeader(Long userId) {
         List<AdminUserRespDTO> userListBySubordinate = adminUserApi.getUserListBySubordinate(userId);
         return success(userListBySubordinate);
     }
 
+    @GetMapping("/dept/users/id")
+    @PreAuthorize("@ss.hasPermission('system:user:query')")
+    public CommonResult<List<AdminUserRespDTO>> getUsersByDeptId(Long userId) {
+        List<AdminUserRespDTO> userListBySubordinate = adminUserApi.getUserListByDeptId(userId);
+        return success(userListBySubordinate);
+    }
+
 }