Parcourir la source

处理isc_materials_change_record

车车 il y a 4 mois
Parent
commit
1589b1c4a5

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/machinery/MachineryController.java

@@ -92,7 +92,7 @@ public class MachineryController {
     }
 
     @Operation(summary = "设备工艺隔离点建立关联关系")
-    @PreAuthorize("@ss.hasPermi('iscs:machinery:edit')")
+    @PreAuthorize("@ss.hasPermission('iscs:machinery:update')")
     @ApiAccessLog(operateType = UPDATE)
     @PostMapping("/saveMachineryPoints")
     public CommonResult<Boolean> saveMachineryPoints(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") MachineryPointsSaveReqVO vo)

+ 92 - 95
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/MaterialsChangeRecordController.java

@@ -1,95 +1,92 @@
-package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord;
-
-import org.springframework.web.bind.annotation.*;
-import jakarta.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 jakarta.validation.constraints.*;
-import jakarta.validation.*;
-import jakarta.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.iscs.controller.admin.materialschangerecord.vo.*;
-import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
-import cn.iocoder.yudao.module.iscs.service.materialschangerecord.MaterialsChangeRecordService;
-
-@Tag(name = "管理后台 - 物资更换记录")
-@RestController
-@RequestMapping("/iscs/materials-change-record")
-@Validated
-public class MaterialsChangeRecordController {
-
-    @Resource
-    private MaterialsChangeRecordService materialsChangeRecordService;
-
-    @PostMapping("/insertMaterialsChangeRecord")
-    @Operation(summary = "创建物资更换记录")
-    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:create')")
-    public CommonResult<Long> insertMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO createReqVO) {
-        return success(materialsChangeRecordService.createMaterialsChangeRecord(createReqVO));
-    }
-
-    @PutMapping("/updateMaterialsChangeRecord")
-    @Operation(summary = "更新物资更换记录")
-    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:update')")
-    public CommonResult<Boolean> updateMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO updateReqVO) {
-        materialsChangeRecordService.updateMaterialsChangeRecord(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/deleteMaterialsChangeRecordList")
-    @Parameter(name = "ids", description = "编号", required = true)
-    @Operation(summary = "批量删除物资更换记录")
-                @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:delete')")
-    public CommonResult<Boolean> deleteMaterialsChangeRecordList(@RequestParam("ids") List<Long> ids) {
-        materialsChangeRecordService.deleteMaterialsChangeRecordListByIds(ids);
-        return success(true);
-    }
-
-    @GetMapping("/selectMaterialsChangeRecordById")
-    @Operation(summary = "获得物资更换记录")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
-    public CommonResult<MaterialsChangeRecordRespVO> selectMaterialsChangeRecordById(@RequestParam("id") Long id) {
-        MaterialsChangeRecordDO materialsChangeRecord = materialsChangeRecordService.getMaterialsChangeRecord(id);
-        return success(BeanUtils.toBean(materialsChangeRecord, MaterialsChangeRecordRespVO.class));
-    }
-
-    @GetMapping("/getMaterialsChangeRecordPage")
-    @Operation(summary = "获得物资更换记录分页")
-    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
-    public CommonResult<PageResult<MaterialsChangeRecordRespVO>> getMaterialsChangeRecordPage(@Valid MaterialsChangeRecordPageReqVO pageReqVO) {
-        PageResult<MaterialsChangeRecordDO> pageResult = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, MaterialsChangeRecordRespVO.class));
-    }
-
-    @GetMapping("/exportMaterialsChangeRecordExcel")
-    @Operation(summary = "导出物资更换记录 Excel")
-    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportMaterialsChangeRecordExcel(@Valid MaterialsChangeRecordPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<MaterialsChangeRecordDO> list = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "物资更换记录.xls", "数据", MaterialsChangeRecordRespVO.class,
-                        BeanUtils.toBean(list, MaterialsChangeRecordRespVO.class));
-    }
-
-}
+package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import cn.iocoder.yudao.module.iscs.service.materialschangerecord.MaterialsChangeRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 物资更换记录")
+@RestController
+@RequestMapping("/iscs/materials-change-record")
+@Validated
+public class MaterialsChangeRecordController {
+
+    @Resource
+    private MaterialsChangeRecordService materialsChangeRecordService;
+
+    @PostMapping("/insertMaterialsChangeRecord")
+    @Operation(summary = "创建物资更换记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:create')")
+    public CommonResult<Long> insertMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO createReqVO) {
+        return success(materialsChangeRecordService.createMaterialsChangeRecord(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsChangeRecord")
+    @Operation(summary = "更新物资更换记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:update')")
+    public CommonResult<Boolean> updateMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO updateReqVO) {
+        materialsChangeRecordService.updateMaterialsChangeRecord(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsChangeRecordList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资更换记录")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:delete')")
+    public CommonResult<Boolean> deleteMaterialsChangeRecordList(@RequestParam("ids") List<Long> ids) {
+        materialsChangeRecordService.deleteMaterialsChangeRecordListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsChangeRecordById")
+    @Operation(summary = "获得物资更换记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
+    public CommonResult<MaterialsChangeRecordRespVO> selectMaterialsChangeRecordById(@RequestParam("id") Long id) {
+        MaterialsChangeRecordDO materialsChangeRecord = materialsChangeRecordService.getMaterialsChangeRecord(id);
+        return success(BeanUtils.toBean(materialsChangeRecord, MaterialsChangeRecordRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsChangeRecordPage")
+    @Operation(summary = "获得物资更换记录分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
+    public CommonResult<PageResult<MaterialsChangeRecordRespVO>> getMaterialsChangeRecordPage(@Valid MaterialsChangeRecordPageReqVO pageReqVO) {
+        PageResult<MaterialsChangeRecordRespVO> pageResult = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsChangeRecordRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsChangeRecordExcel")
+    @Operation(summary = "导出物资更换记录 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsChangeRecordExcel(@Valid MaterialsChangeRecordPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsChangeRecordRespVO> list = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资更换记录.xls", "数据", MaterialsChangeRecordRespVO.class, list);
+    }
+
+}

+ 22 - 4
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordPageReqVO.java

@@ -1,10 +1,10 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 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;
@@ -48,4 +48,22 @@ public class MaterialsChangeRecordPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
-}
+    @Schema(description = "物资柜id")
+    private Long cabinetId;
+
+    @Schema(description = "物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "更换人Name")
+    private String changeUserName;
+
+    @Schema(description = "startTime")
+    private String startTime;
+
+    @Schema(description = "endTime")
+    private String endTime;
+
+    @Schema(description = "检查记录id")
+    private Long recordId;
+
+}

+ 35 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordRespVO.java

@@ -1,11 +1,11 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 物资更换记录 Response VO")
 @Data
@@ -60,4 +60,34 @@ public class MaterialsChangeRecordRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
-}
+    @Schema(description = "物资柜id")
+    private Long cabinetId;
+
+    @Schema(description = "物资柜名称")
+    private String cabinetName;
+
+    @Schema(description = "原物资id")
+    private String oldMaterialsName;
+
+    @Schema(description = "新物资id")
+    private String newMaterialsName;
+
+    @Schema(description = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @Schema(description = "物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "物资类型Name")
+    private String materialsTypeName;
+
+    @Schema(description = "物资类型图标")
+    private String materialsTypeIcon;
+
+    @Schema(description = "物资类型缩略图")
+    private String materialsTypePicture;
+
+    @Schema(description = "更换人")
+    private String changeUserName;
+
+}

+ 5 - 7
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordSaveReqVO.java

@@ -1,11 +1,9 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import jakarta.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
+import lombok.Data;
+
+import java.util.Date;
 
 @Schema(description = "管理后台 - 物资更换记录新增/修改 Request VO")
 @Data
@@ -33,7 +31,7 @@ public class MaterialsChangeRecordSaveReqVO {
     private Long changeUserId;
 
     @Schema(description = "更换时间")
-    private LocalDateTime changeDate;
+    private Date changeDate;
 
     @Schema(description = "更换类型(0-手动更换 1-自动更换)", example = "2")
     private String changeType;
@@ -44,4 +42,4 @@ public class MaterialsChangeRecordSaveReqVO {
     @Schema(description = "状态", example = "2")
     private String status;
 
-}
+}

+ 8 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialschangerecord/MaterialsChangeRecordMapper.java

@@ -1,13 +1,14 @@
 package cn.iocoder.yudao.module.iscs.dal.mysql.materialschangerecord;
 
-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.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordRespVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 物资更换记录 Mapper
@@ -33,4 +34,6 @@ public interface MaterialsChangeRecordMapper extends BaseMapperX<MaterialsChange
                 .orderByDesc(MaterialsChangeRecordDO::getId));
     }
 
-}
+    Page<MaterialsChangeRecordRespVO> getMaterialsChangeRecordPage(Page<MaterialsChangeRecordDO> page, @Param(value = "vo") MaterialsChangeRecordPageReqVO vo);
+
+}

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/machinery/MachineryServiceImpl.java

@@ -184,7 +184,7 @@ public class MachineryServiceImpl extends ServiceImpl<MachineryMapper, Machinery
     @Override
     public Boolean saveMachineryPoints(MachineryPointsSaveReqVO vo) {
         // 断言校验
-        Assert.notNull(vo.getId(), "id不可为空!");
+        Assert.notNull(vo.getMachineryId(), "id不可为空!");
         Assert.isFalse(vo.getPointIdList().isEmpty(), "请选择隔离点!");
         // 开始存储工艺和隔离点的关联关系
         machineryPointsService.remove(Wrappers.<MachineryPointsDO>lambdaQuery()

+ 65 - 63
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordService.java

@@ -1,63 +1,65 @@
-package cn.iocoder.yudao.module.iscs.service.materialschangerecord;
-
-import java.util.*;
-import jakarta.validation.*;
-import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.*;
-import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * 物资更换记录 Service 接口
- *
- * @author 芋道源码
- */
-public interface MaterialsChangeRecordService extends IService<MaterialsChangeRecordDO> {
-
-    /**
-     * 创建物资更换记录
-     *
-     * @param createReqVO 创建信息
-     * @return 编号
-     */
-    Long createMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO createReqVO);
-
-    /**
-     * 更新物资更换记录
-     *
-     * @param updateReqVO 更新信息
-     */
-    void updateMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO updateReqVO);
-
-    /**
-     * 删除物资更换记录
-     *
-     * @param id 编号
-     */
-    void deleteMaterialsChangeRecord(Long id);
-
-    /**
-    * 批量删除物资更换记录
-    *
-    * @param ids 编号
-    */
-    void deleteMaterialsChangeRecordListByIds(List<Long> ids);
-
-    /**
-     * 获得物资更换记录
-     *
-     * @param id 编号
-     * @return 物资更换记录
-     */
-    MaterialsChangeRecordDO getMaterialsChangeRecord(Long id);
-
-    /**
-     * 获得物资更换记录分页
-     *
-     * @param pageReqVO 分页查询
-     * @return 物资更换记录分页
-     */
-    PageResult<MaterialsChangeRecordDO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO);
-
-}
+package cn.iocoder.yudao.module.iscs.service.materialschangerecord;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 物资更换记录 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface MaterialsChangeRecordService extends IService<MaterialsChangeRecordDO> {
+
+    /**
+     * 创建物资更换记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO createReqVO);
+
+    /**
+     * 更新物资更换记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资更换记录
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsChangeRecord(Long id);
+
+    /**
+    * 批量删除物资更换记录
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsChangeRecordListByIds(List<Long> ids);
+
+    /**
+     * 获得物资更换记录
+     *
+     * @param id 编号
+     * @return 物资更换记录
+     */
+    MaterialsChangeRecordDO getMaterialsChangeRecord(Long id);
+
+    /**
+     * 获得物资更换记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资更换记录分页
+     */
+    PageResult<MaterialsChangeRecordRespVO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO);
+
+}

+ 66 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordServiceImpl.java

@@ -4,14 +4,23 @@ import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materials.MaterialsDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.materialschangerecord.MaterialsChangeRecordMapper;
+import cn.iocoder.yudao.module.iscs.service.materials.MaterialsService;
+import cn.iocoder.yudao.module.iscs.service.materialscheckrecord.MaterialsCheckRecordService;
+import com.baomidou.mybatisplus.core.toolkit.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,9 +34,59 @@ public class MaterialsChangeRecordServiceImpl extends ServiceImpl<MaterialsChang
 
     @Resource
     private MaterialsChangeRecordMapper materialsChangeRecordMapper;
+    @Resource
+    private MaterialsCheckRecordService materialsCheckRecordService;
+    @Resource
+    private MaterialsService materialsService;
 
     @Override
     public Long createMaterialsChangeRecord(MaterialsChangeRecordSaveReqVO createReqVO) {
+        Assert.notNull(createReqVO.getOldMaterialsId(), "原物资ID不能为空!");
+        Assert.notNull(createReqVO.getNewMaterialsId(), "新物资ID不能为空,若物资不变填写原物资ID即可!");
+        Assert.isFalse(createReqVO.getNewMaterialsId().equals(createReqVO.getOldMaterialsId())
+                        && createReqVO.getNewMaterialsRfid().equals(createReqVO.getOldMaterialsRfid()),
+                "物资更换数据相同,更换失败!");
+        // 查询改物资的最新报异常记录
+        MaterialsCheckRecordDO checkRecord = materialsCheckRecordService.getOne(Wrappers.<MaterialsCheckRecordDO>lambdaQuery()
+                .eq(MaterialsCheckRecordDO::getMaterialsId, createReqVO.getOldMaterialsId())
+                .last("limit 1"));
+        if (checkRecord != null) {
+            createReqVO.setCheckRecordId(checkRecord.getId());
+        } else {
+            createReqVO.setCheckRecordId(0L);
+        }
+        if (!createReqVO.getOldMaterialsId().equals(createReqVO.getNewMaterialsId())) {
+            // 1.物资全部换新
+            // 原物资的数据
+            MaterialsDO oldMaterials = materialsService.getById(createReqVO.getOldMaterialsId());
+            Assert.isFalse(oldMaterials == null, "原物资不存在");
+            // 新物资的数据
+            MaterialsDO newMaterials = materialsService.getById(createReqVO.getNewMaterialsId());
+            Assert.isFalse(newMaterials == null, "新物资不存在");
+            // 检测新物资有没有绑定该物资柜,那现在绑定下,如果已经绑定,判断是否跟原来的一样,不一样直接报错
+            if (newMaterials.getMaterialsCabinetId() != null && newMaterials.getMaterialsCabinetId() != 0) {
+                Assert.isTrue(oldMaterials.getMaterialsCabinetId().equals(newMaterials.getMaterialsCabinetId()), "新物资不属于当前物资柜,请检查数据!");
+            } else {
+                // 如果新物资的物资柜属性是空的,现在绑定下
+                materialsService.update(Wrappers.<MaterialsDO>lambdaUpdate()
+                        .eq(MaterialsDO::getId, createReqVO.getNewMaterialsId())
+                        .set(MaterialsDO::getMaterialsCabinetId, oldMaterials.getMaterialsCabinetId())
+                        .set(MaterialsDO::getLoanState, "1"));
+            }
+
+            // 因为id变更了,则原物资绑定物资柜的信息清理
+            materialsService.update(Wrappers.<MaterialsDO>lambdaUpdate()
+                    .eq(MaterialsDO::getId, createReqVO.getOldMaterialsId())
+                    .set(MaterialsDO::getMaterialsCabinetId, null)
+                    .set(MaterialsDO::getLoanState, "0"));
+        } else {
+            // 2.如果只是更换rfid
+            materialsService.update(Wrappers.<MaterialsDO>lambdaUpdate()
+                    .eq(MaterialsDO::getId, createReqVO.getOldMaterialsId())
+                    .set(MaterialsDO::getMaterialsRfid, createReqVO.getNewMaterialsRfid())
+                    .set(MaterialsDO::getStatus, 0));
+        }
+        createReqVO.setChangeDate(new Date());
         // 插入
         MaterialsChangeRecordDO materialsChangeRecord = BeanUtils.toBean(createReqVO, MaterialsChangeRecordDO.class);
         materialsChangeRecordMapper.insert(materialsChangeRecord);
@@ -80,8 +139,13 @@ public class MaterialsChangeRecordServiceImpl extends ServiceImpl<MaterialsChang
     }
 
     @Override
-    public PageResult<MaterialsChangeRecordDO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO) {
-        return materialsChangeRecordMapper.selectPage(pageReqVO);
+    public PageResult<MaterialsChangeRecordRespVO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO) {
+        Page<MaterialsChangeRecordDO> page = new Page<MaterialsChangeRecordDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<MaterialsChangeRecordRespVO> pageResult = materialsChangeRecordMapper.getMaterialsChangeRecordPage(page, pageReqVO);
+        PageResult<MaterialsChangeRecordRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        return respVOPageResult;
     }
 
 }

+ 57 - 1
yudao-module-iscs/src/main/resources/mapper/MaterialsChangeRecordMapper.xml

@@ -9,4 +9,60 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+    <select id="getMaterialsChangeRecordPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordRespVO">
+        SELECT
+        c.*,
+        t.materials_type_name,
+        t.materials_type_icon,
+        t.materials_type_picture,
+        u.nick_name as change_user_name,
+        mc.cabinet_id,
+        mc.cabinet_name,
+        m.materials_name as new_materials_name,
+        m2.materials_name as old_materials_name
+        FROM
+        is_materials_change_record c
+        LEFT JOIN isc_materials m ON m.id = c.new_materials_id
+        LEFT JOIN isc_materials m2 ON m2.id = c.old_materials_id
+        LEFT JOIN isc_materials_cabinet mc ON mc.id = m.materials_cabinet_id
+        LEFT JOIN isc_materials_type t ON t.id = m.materials_type_id
+        LEFT JOIN system_users u ON u.id = c.change_user_id
+        <where>
+            <if test="vo.recordId != null">
+                and c.check_record_id = #{vo.recordId}
+            </if>
+            <if test="vo.cabinetId != null">
+                and m.materials_cabinet_id = #{vo.cabinetId}
+            </if>
+            <if test="vo.materialsTypeId != null">
+                and m.materials_type_id = #{vo.materialsTypeId}
+            </if>
+            <if test="vo.changeUserId != null">
+                and c.change_user_id = #{vo.changeUserId}
+            </if>
+            <if test="vo.changeUserName != null and vo.changeUserName.trim != ''">
+                and u.nick_name like concat('%',#{vo.changeUserName},'%')
+            </if>
+            <if test="vo.startTime != null and vo.startTime.trim != ''">
+                and c.change_date &gt;= #{vo.startTime}
+            </if>
+            <if test="vo.endTime != null and vo.endTime.trim != ''">
+                and c.change_date &lt;= #{vo.endTime}
+            </if>
+            <if test="vo.oldMaterialsId != null">
+                and c.old_materials_id = #{vo.oldMaterialsId}
+            </if>
+            <if test="vo.oldMaterialsRfid != null and vo.oldMaterialsRfid.trim != ''">
+                and c.old_materials_rfid like concat('%',#{vo.oldMaterialsRfid},'%')
+            </if>
+            <if test="vo.newMaterialsId != null">
+                and c.new_materials_id = #{vo.newMaterialsId}
+            </if>
+            <if test="vo.newMaterialsRfid != null and vo.newMaterialsRfid.trim != ''">
+                and c.new_materials_rfid like concat('%',#{vo.newMaterialsRfid},'%')
+            </if>
+        </where>
+        order by c.id desc
+    </select>
+</mapper>