ソースを参照

物资借取归还时独立异常

车车 7 ヶ月 前
コミット
a1194850cf

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/controller/HardwareMaterialApiController.java

@@ -113,7 +113,7 @@ public class HardwareMaterialApiController extends BaseController {
     @ApiOperation("物资领取/归还")
     @Log(title = "物资领取/归还", businessType = BusinessType.UPDATE)
     @PostMapping("/updateMaterialReceiveReturn")
-    public CommonResult<Boolean> updateMaterialReceiveReturn(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") RecRetParamDTO dto) {
+    public CommonResult<String> updateMaterialReceiveReturn(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") RecRetParamDTO dto) throws Exception {
         return CommonResult.success(hardwareMaterialApiService.updateMaterialReceiveReturn(dto));
     }
 

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsController.java

@@ -121,7 +121,7 @@ public class IsMaterialsController extends BaseController {
     @PreAuthorize("@ss.hasPermi('iscs:materials:loan')")
     @Log(title = "借出/归还物资", businessType = BusinessType.UPDATE)
     @PostMapping("/updateIsMaterialById")
-    public CommonResult<Boolean> updateIsMaterialById(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") LoanParamDTO dto) {
+    public CommonResult<String> updateIsMaterialById(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") LoanParamDTO dto) {
         return CommonResult.success(isMaterialsService.updateIsMaterialById(dto));
     }
 

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/HardwareMaterialApiService.java

@@ -91,7 +91,7 @@ public interface HardwareMaterialApiService {
      * @param dto
      * @return
      */
-    Boolean updateMaterialReceiveReturn(RecRetParamDTO dto);
+    String updateMaterialReceiveReturn(RecRetParamDTO dto) throws Exception;
 
     /**
      * 查询物资使用说明

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsLoanService.java

@@ -75,7 +75,7 @@ public interface IIsMaterialsLoanService extends IService<IsMaterialsLoan>
      * @param dto
      * @return
      */
-    Boolean returnIsMaterialsLoan(ReturnLoanDTO dto);
+    Boolean returnIsMaterialsLoan(ReturnLoanDTO dto) throws Exception;
 
     /**
      * 归还提醒

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsService.java

@@ -75,7 +75,7 @@ public interface IIsMaterialsService extends IService<IsMaterials>
      */
     Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) throws JsonProcessingException;
 
-    Boolean updateIsMaterialById(LoanParamDTO dto);
+    String updateIsMaterialById(LoanParamDTO dto);
 
     String importMaterials(List<ImportMaterialsVO> itemList, boolean updateSupport, String operName) throws JsonProcessingException;
 

+ 38 - 28
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareMaterialApiServiceImpl.java

@@ -385,43 +385,53 @@ public class HardwareMaterialApiServiceImpl implements HardwareMaterialApiServic
     }
 
     @Override
-    public Boolean updateMaterialReceiveReturn(RecRetParamDTO recRetParamDTO) {
+    public String updateMaterialReceiveReturn(RecRetParamDTO recRetParamDTO) {
         if (!recRetParamDTO.getList().isEmpty()) {
             Long userId = SecurityUtils.getUserId();
+            List<String> failRfidList = new ArrayList<>();
             for (RecRetMaterialDTO dto : recRetParamDTO.getList()) {
                 // 1.断言判断
                 Assert.notBlank(dto.getMaterialsRfid(), "请告诉我物资的rfid!");
                 Assert.notBlank(dto.getLoanState(), "请告诉我是借出还是归还!");
-                // 1.1 开始查询物资,物资柜传的rfid
-                IsMaterials materials = iIsMaterialsService.getOne(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid()));
-                Assert.isFalse(materials == null, "通过RFID:" + dto.getMaterialsRfid() + "未查询到物资!");
-                // 2.开始更新物资状态
-                iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
-                        .eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid())
-                        .set(IsMaterials::getLoanState, dto.getLoanState())
-                        .set(IsMaterials::getUpdateTime, new Date()));
-                // 4.开始更新借出表信息
-                if ("0".equals(dto.getLoanState())) {
-                    // 4.1开始新增借出记录表
-                    AddLoanDTO addMaterialsLoan = new AddLoanDTO();
-                    addMaterialsLoan.setMaterialsId(materials.getMaterialsId());
-                    addMaterialsLoan.setLoanUserId(userId);
-                    iIsMaterialsLoanService.insertIsMaterialsLoan(addMaterialsLoan);
-                } else if ("1".equals(dto.getLoanState())) {
-                    // 1.2 开始查询物资柜子,物资柜传的code
-                    IsMaterialsCabinet cabinet = iIsMaterialsCabinetService.getOne(Wrappers.<IsMaterialsCabinet>lambdaQuery()
-                            .eq(IsMaterialsCabinet::getCabinetCode, dto.getRestitutionToCabinetCode()));
-                    Assert.isFalse(cabinet == null, "通过物资柜code:" + dto.getRestitutionToCabinetCode() + "未查询到物资柜信息!");
-                    // 4.2开始更新归还记录表
-                    ReturnLoanDTO returnLoanDTO = new ReturnLoanDTO();
-                    returnLoanDTO.setMaterialsId(materials.getMaterialsId());
-                    returnLoanDTO.setRestitutionUserId(userId);
-                    returnLoanDTO.setRestitutionToId(cabinet.getCabinetId());
-                    iIsMaterialsLoanService.returnIsMaterialsLoan(returnLoanDTO);
+                try {
+                    // 1.1 开始查询物资,物资柜传的rfid
+                    IsMaterials materials = iIsMaterialsService.getOne(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid()));
+                    Assert.isFalse(materials == null, "通过RFID:" + dto.getMaterialsRfid() + "未查询到物资!");
+                    // 2.开始更新物资状态
+                    iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
+                            .eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid())
+                            .set(IsMaterials::getLoanState, dto.getLoanState())
+                            .set(IsMaterials::getUpdateTime, new Date()));
+                    // 4.开始更新借出表信息
+                    if ("0".equals(dto.getLoanState())) {
+                        // 4.1开始新增借出记录表
+                        AddLoanDTO addMaterialsLoan = new AddLoanDTO();
+                        addMaterialsLoan.setMaterialsId(materials.getMaterialsId());
+                        addMaterialsLoan.setLoanUserId(userId);
+                        iIsMaterialsLoanService.insertIsMaterialsLoan(addMaterialsLoan);
+                    } else if ("1".equals(dto.getLoanState())) {
+                        // 1.2 开始查询物资柜子,物资柜传的code
+                        IsMaterialsCabinet cabinet = iIsMaterialsCabinetService.getOne(Wrappers.<IsMaterialsCabinet>lambdaQuery()
+                                .eq(IsMaterialsCabinet::getCabinetCode, dto.getRestitutionToCabinetCode()));
+                        Assert.isFalse(cabinet == null, "通过物资柜code:" + dto.getRestitutionToCabinetCode() + "未查询到物资柜信息!");
+                        // 4.2开始更新归还记录表
+                        ReturnLoanDTO returnLoanDTO = new ReturnLoanDTO();
+                        returnLoanDTO.setMaterialsId(materials.getMaterialsId());
+                        returnLoanDTO.setRestitutionUserId(userId);
+                        returnLoanDTO.setRestitutionToId(cabinet.getCabinetId());
+                        iIsMaterialsLoanService.returnIsMaterialsLoan(returnLoanDTO);
+                    }
+                } catch (Exception e) {
+                    log.error("存在异常的存取数据:{}", e);
+                    failRfidList.add(dto.getMaterialsRfid());
                 }
             }
+            // 5.检查有没有异常的物资,如果有,则返回提示
+            if (!failRfidList.isEmpty()) {
+                return "以下RFID本次存取失败:" + failRfidList;
+            }
         }
-        return true;
+        return "true";
     }
 
     @Override

+ 80 - 76
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsLoanServiceImpl.java

@@ -492,85 +492,89 @@ public class IsMaterialsLoanServiceImpl extends ServiceImpl<IsMaterialsLoanMappe
 
     @Transactional
     @Override
-    public Boolean returnIsMaterialsLoan(ReturnLoanDTO dto) {
-        Assert.notNull(dto.getMaterialsId(), "物资id不能为空!");
-        Assert.notNull(dto.getRestitutionUserId(), "归还人id不能为空!");
-        Assert.notNull(dto.getRestitutionToId(), "归还柜id不能为空!");
-        // 0.检查借出数据
-        List<IsMaterialsLoan> loanList = list(Wrappers.<IsMaterialsLoan>lambdaQuery()
-                .eq(IsMaterialsLoan::getMaterialsId, dto.getMaterialsId())
-                .isNull(IsMaterialsLoan::getRestitutionUserId)
-                .isNull(IsMaterialsLoan::getRestitutionToId)
-        );
-        Assert.isFalse(loanList.isEmpty(), "尚未找到该物资的借出信息!");
-        Assert.isFalse(loanList.size() > 1, "该物资的借出信息出现多条!");
-        // 1.查询物资信息
-        IsMaterials materials = isMaterialsService.getById(dto.getMaterialsId());
-        // 1.1 如果不是归还到原先的柜子,则不能更新归还记录,存储归还异常等待处理,并且更新物资状态异常
-        if (!materials.getMaterialsCabinetId().equals(dto.getRestitutionToId())) {
-            IsMaterialsLoanException loanException = new IsMaterialsLoanException();
-            loanException.setMaterialsId(dto.getMaterialsId());
-            loanException.setMaterialsLoanId(loanList.get(0).getMaterialsLoanId());
-            loanException.setLoanFromId(materials.getMaterialsCabinetId());
-            // loanException.setLoanTime(loanList.get(0).getLoanTime());
-            loanException.setRestitutionUserId(dto.getRestitutionUserId());
-            loanException.setRestitutionToId(dto.getRestitutionToId());
-            // loanException.setActualRestitutionTime(new Date());
-            loanException.setOccurTime(new Date());
-            isMaterialsLoanExceptionService.save(loanException);
+    public Boolean returnIsMaterialsLoan(ReturnLoanDTO dto) throws Exception {
+        try {
+            Assert.notNull(dto.getMaterialsId(), "物资id不能为空!");
+            Assert.notNull(dto.getRestitutionUserId(), "归还人id不能为空!");
+            Assert.notNull(dto.getRestitutionToId(), "归还柜id不能为空!");
+            // 0.检查借出数据
+            List<IsMaterialsLoan> loanList = list(Wrappers.<IsMaterialsLoan>lambdaQuery()
+                    .eq(IsMaterialsLoan::getMaterialsId, dto.getMaterialsId())
+                    .isNull(IsMaterialsLoan::getRestitutionUserId)
+                    .isNull(IsMaterialsLoan::getRestitutionToId)
+            );
+            Assert.isFalse(loanList.isEmpty(), "尚未找到该物资的借出信息!");
+            // Assert.isFalse(loanList.size() > 1, "该物资的借出信息出现多条!");
+            // 1.查询物资信息
+            IsMaterials materials = isMaterialsService.getById(dto.getMaterialsId());
+            // 1.1 如果不是归还到原先的柜子,则不能更新归还记录,存储归还异常等待处理,并且更新物资状态异常
+            if (!materials.getMaterialsCabinetId().equals(dto.getRestitutionToId())) {
+                IsMaterialsLoanException loanException = new IsMaterialsLoanException();
+                loanException.setMaterialsId(dto.getMaterialsId());
+                loanException.setMaterialsLoanId(loanList.get(0).getMaterialsLoanId());
+                loanException.setLoanFromId(materials.getMaterialsCabinetId());
+                // loanException.setLoanTime(loanList.get(0).getLoanTime());
+                loanException.setRestitutionUserId(dto.getRestitutionUserId());
+                loanException.setRestitutionToId(dto.getRestitutionToId());
+                // loanException.setActualRestitutionTime(new Date());
+                loanException.setOccurTime(new Date());
+                isMaterialsLoanExceptionService.save(loanException);
+                isMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
+                        .eq(IsMaterials::getMaterialsId, materials.getMaterialsId())
+                        .set(IsMaterials::getLoanState, "0")
+                        .set(IsMaterials::getStatus, "3"));
+                return true;
+            }
+            // 2.开始更新loan表数据
+            boolean update = update(Wrappers.<IsMaterialsLoan>lambdaUpdate()
+                    .eq(IsMaterialsLoan::getMaterialsLoanId, loanList.get(0).getMaterialsLoanId())
+                    .set(IsMaterialsLoan::getRestitutionUserId, dto.getRestitutionUserId())
+                    .set(IsMaterialsLoan::getRestitutionToId, dto.getRestitutionToId())
+                    .set(IsMaterialsLoan::getStatus, 1)
+                    .set(IsMaterialsLoan::getActualRestitutionTime, new Date()));
+            // 3.开始更新物资信息
             isMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
-                    .eq(IsMaterials::getMaterialsId, materials.getMaterialsId())
-                    .set(IsMaterials::getLoanState, "0")
-                    .set(IsMaterials::getStatus, "3"));
-            return true;
-        }
-        // 2.开始更新loan表数据
-        boolean update = update(Wrappers.<IsMaterialsLoan>lambdaUpdate()
-                .eq(IsMaterialsLoan::getMaterialsLoanId, loanList.get(0).getMaterialsLoanId())
-                .set(IsMaterialsLoan::getRestitutionUserId, dto.getRestitutionUserId())
-                .set(IsMaterialsLoan::getRestitutionToId, dto.getRestitutionToId())
-                .set(IsMaterialsLoan::getStatus, 1)
-                .set(IsMaterialsLoan::getActualRestitutionTime, new Date()));
-        // 3.开始更新物资信息
-        isMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
-                .eq(IsMaterials::getMaterialsId, dto.getMaterialsId())
-                .set(IsMaterials::getLoanState, 1)
-                .set(IsMaterials::getStatus, 0));
-        // 3.1 检查当前物资是否有未处理的错换柜子异常,如果有,现在已经还对了,默认处理掉异常信息
-        List<IsMaterialsLoanException> exList = isMaterialsLoanExceptionService.list(Wrappers.<IsMaterialsLoanException>lambdaQuery()
-                .eq(IsMaterialsLoanException::getMaterialsId, dto.getMaterialsId())
-                .eq(IsMaterialsLoanException::getStatus, "0"));
-        if (!exList.isEmpty()) {
-            isMaterialsLoanExceptionService.update(Wrappers.<IsMaterialsLoanException>lambdaUpdate()
+                    .eq(IsMaterials::getMaterialsId, dto.getMaterialsId())
+                    .set(IsMaterials::getLoanState, 1)
+                    .set(IsMaterials::getStatus, 0));
+            // 3.1 检查当前物资是否有未处理的错换柜子异常,如果有,现在已经还对了,默认处理掉异常信息
+            List<IsMaterialsLoanException> exList = isMaterialsLoanExceptionService.list(Wrappers.<IsMaterialsLoanException>lambdaQuery()
                     .eq(IsMaterialsLoanException::getMaterialsId, dto.getMaterialsId())
-                    .eq(IsMaterialsLoanException::getStatus, "0")
-                    .set(IsMaterialsLoanException::getStatus, "1")
-            );
-        }
-        // 5.检查邮件里面的数据发送了没有,没有发送就取消掉
-        // 6.借用到期模板
-        IsMailTemplate reminderTemp = iIsMailTemplateService.getOne(Wrappers.<IsMailTemplate>lambdaQuery()
-                .eq(IsMailTemplate::getTemplateCode, reminder));
-        // 6.1取消未发送的邮件的发送
-        IsMailTemplate alarmTemp = iIsMailTemplateService.getOne(Wrappers.<IsMailTemplate>lambdaQuery()
-                .eq(IsMailTemplate::getTemplateCode, alarm));
-        if (reminderTemp != null) {
-            iIsMailSendTaskItemService.update(Wrappers.<IsMailSendTaskItem>lambdaUpdate()
-                    .eq(IsMailSendTaskItem::getBelongId, loanList.get(0).getMaterialsLoanId())
-                    .eq(IsMailSendTaskItem::getEmailTemplateId, reminderTemp.getTemplateId())
-                    .eq(IsMailSendTaskItem::getSendStatus, "0")
-                    .set(IsMailSendTaskItem::getIsCancelled, "1")
-                    .set(IsMailSendTaskItem::getCancelTime, new Date()));
-        }
-        if (alarmTemp != null) {
-            iIsMailSendTaskItemService.update(Wrappers.<IsMailSendTaskItem>lambdaUpdate()
-                    .eq(IsMailSendTaskItem::getBelongId, loanList.get(0).getMaterialsLoanId())
-                    .eq(IsMailSendTaskItem::getEmailTemplateId, alarmTemp.getTemplateId())
-                    .eq(IsMailSendTaskItem::getSendStatus, "0")
-                    .set(IsMailSendTaskItem::getIsCancelled, "1")
-                    .set(IsMailSendTaskItem::getCancelTime, new Date()));
+                    .eq(IsMaterialsLoanException::getStatus, "0"));
+            if (!exList.isEmpty()) {
+                isMaterialsLoanExceptionService.update(Wrappers.<IsMaterialsLoanException>lambdaUpdate()
+                        .eq(IsMaterialsLoanException::getMaterialsId, dto.getMaterialsId())
+                        .eq(IsMaterialsLoanException::getStatus, "0")
+                        .set(IsMaterialsLoanException::getStatus, "1")
+                );
+            }
+            // 5.检查邮件里面的数据发送了没有,没有发送就取消掉
+            // 6.借用到期模板
+            IsMailTemplate reminderTemp = iIsMailTemplateService.getOne(Wrappers.<IsMailTemplate>lambdaQuery()
+                    .eq(IsMailTemplate::getTemplateCode, reminder));
+            // 6.1取消未发送的邮件的发送
+            IsMailTemplate alarmTemp = iIsMailTemplateService.getOne(Wrappers.<IsMailTemplate>lambdaQuery()
+                    .eq(IsMailTemplate::getTemplateCode, alarm));
+            if (reminderTemp != null) {
+                iIsMailSendTaskItemService.update(Wrappers.<IsMailSendTaskItem>lambdaUpdate()
+                        .eq(IsMailSendTaskItem::getBelongId, loanList.get(0).getMaterialsLoanId())
+                        .eq(IsMailSendTaskItem::getEmailTemplateId, reminderTemp.getTemplateId())
+                        .eq(IsMailSendTaskItem::getSendStatus, "0")
+                        .set(IsMailSendTaskItem::getIsCancelled, "1")
+                        .set(IsMailSendTaskItem::getCancelTime, new Date()));
+            }
+            if (alarmTemp != null) {
+                iIsMailSendTaskItemService.update(Wrappers.<IsMailSendTaskItem>lambdaUpdate()
+                        .eq(IsMailSendTaskItem::getBelongId, loanList.get(0).getMaterialsLoanId())
+                        .eq(IsMailSendTaskItem::getEmailTemplateId, alarmTemp.getTemplateId())
+                        .eq(IsMailSendTaskItem::getSendStatus, "0")
+                        .set(IsMailSendTaskItem::getIsCancelled, "1")
+                        .set(IsMailSendTaskItem::getCancelTime, new Date()));
+            }
+        } catch ( Exception e) {
+            throw new Exception(e);
         }
-        return update;
+        return true;
     }
 
     @Override

+ 48 - 37
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsServiceImpl.java

@@ -196,55 +196,66 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
 
     @Transactional
     @Override
-    public Boolean updateIsMaterialById(LoanParamDTO loanParamDTO) {
+    public String updateIsMaterialById(LoanParamDTO loanParamDTO) {
         if (!loanParamDTO.getList().isEmpty()) {
             Long userId = SecurityUtils.getUserId();
+            List<String> failRfidList = new ArrayList<>();
             for (LoanMaterialDTO dto : loanParamDTO.getList()) {
                 // 1.断言判断
                 Assert.isFalse(dto.getMaterialsId() == null && StringUtils.isBlank(dto.getMaterialsRfid()), "请告诉我物资的rfid!");
                 Assert.isFalse(StringUtils.isBlank(dto.getLoanState()), "请告诉我是借出还是归还!");
-                // 1.1 开始查询物资,模拟传的id,物资柜传的rfid
-                if (dto.getMaterialsId() != null) {
-                    // 模拟,无需处理
-                } else {
-                    IsMaterials materials = getOne(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid()));
-                    Assert.isFalse(materials == null, "通过RFID:" + dto.getMaterialsRfid() + "未查询到物资!");
-                    dto.setMaterialsId(materials.getMaterialsId());
-                }
-                // 2.开始更新物资状态
-                update(Wrappers.<IsMaterials>lambdaUpdate().eq(IsMaterials::getMaterialsId, dto.getMaterialsId()).set(IsMaterials::getLoanState, dto.getLoanState()).set(IsMaterials::getUpdateTime, new Date()));
-                // 3.物资信息
-                IsMaterials materials = getById(dto.getMaterialsId());
-                Assert.notNull(materials, "该物资不存在!");
-                // 4.开始更新借出表信息
-                if ("0".equals(dto.getLoanState())) {
-                    // Assert.notNull(dto.getLoanUserId(), "请告诉我借取人员信息!");
-                    // 4.1开始新增借出记录表
-                    AddLoanDTO addMaterialsLoan = new AddLoanDTO();
-                    addMaterialsLoan.setMaterialsId(dto.getMaterialsId());
-                    addMaterialsLoan.setLoanUserId(userId);
-                    iIsMaterialsLoanService.insertIsMaterialsLoan(addMaterialsLoan);
-                } else if ("1".equals(dto.getLoanState())) {
-                    // Assert.notNull(dto.getRestitutionUserId(), "请告诉我归还人员信息!");
-                    // 1.2 开始查询物资柜子,模拟传的id,物资柜传的code
-                    if (dto.getRestitutionToId() != null) {
+                try {
+                    // 1.1 开始查询物资,模拟传的id,物资柜传的rfid
+                    if (dto.getMaterialsId() != null) {
                         // 模拟,无需处理
                     } else {
-                        IsMaterialsCabinet cabinet = iIsMaterialsCabinetService.getOne(Wrappers.<IsMaterialsCabinet>lambdaQuery()
-                                .eq(IsMaterialsCabinet::getCabinetCode, dto.getRestitutionToCabinetCode()));
-                        Assert.isFalse(cabinet == null, "通过物资柜code:" + dto.getRestitutionToCabinetCode() + "未查询到物资柜信息!");
-                        dto.setRestitutionToId(cabinet.getCabinetId());
+                        IsMaterials materials = getOne(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsRfid, dto.getMaterialsRfid()));
+                        Assert.isFalse(materials == null, "通过RFID:" + dto.getMaterialsRfid() + "未查询到物资!");
+                        dto.setMaterialsId(materials.getMaterialsId());
                     }
-                    // 4.2开始更新归还记录表
-                    ReturnLoanDTO returnLoanDTO = new ReturnLoanDTO();
-                    returnLoanDTO.setMaterialsId(dto.getMaterialsId());
-                    returnLoanDTO.setRestitutionUserId(userId);
-                    returnLoanDTO.setRestitutionToId(dto.getRestitutionToId());
-                    iIsMaterialsLoanService.returnIsMaterialsLoan(returnLoanDTO);
+                    // 2.开始更新物资状态
+                    update(Wrappers.<IsMaterials>lambdaUpdate().eq(IsMaterials::getMaterialsId, dto.getMaterialsId()).set(IsMaterials::getLoanState, dto.getLoanState()).set(IsMaterials::getUpdateTime, new Date()));
+                    // 3.物资信息
+                    IsMaterials materials = getById(dto.getMaterialsId());
+                    Assert.notNull(materials, "该物资不存在!");
+
+                    // 4.开始更新借出表信息
+                    if ("0".equals(dto.getLoanState())) {
+                        // Assert.notNull(dto.getLoanUserId(), "请告诉我借取人员信息!");
+                        // 4.1开始新增借出记录表
+                        AddLoanDTO addMaterialsLoan = new AddLoanDTO();
+                        addMaterialsLoan.setMaterialsId(dto.getMaterialsId());
+                        addMaterialsLoan.setLoanUserId(userId);
+                        iIsMaterialsLoanService.insertIsMaterialsLoan(addMaterialsLoan);
+                    } else if ("1".equals(dto.getLoanState())) {
+                        // Assert.notNull(dto.getRestitutionUserId(), "请告诉我归还人员信息!");
+                        // 1.2 开始查询物资柜子,模拟传的id,物资柜传的code
+                        if (dto.getRestitutionToId() != null) {
+                            // 模拟,无需处理
+                        } else {
+                            IsMaterialsCabinet cabinet = iIsMaterialsCabinetService.getOne(Wrappers.<IsMaterialsCabinet>lambdaQuery()
+                                    .eq(IsMaterialsCabinet::getCabinetCode, dto.getRestitutionToCabinetCode()));
+                            Assert.isFalse(cabinet == null, "通过物资柜code:" + dto.getRestitutionToCabinetCode() + "未查询到物资柜信息!");
+                            dto.setRestitutionToId(cabinet.getCabinetId());
+                        }
+                        // 4.2开始更新归还记录表
+                        ReturnLoanDTO returnLoanDTO = new ReturnLoanDTO();
+                        returnLoanDTO.setMaterialsId(dto.getMaterialsId());
+                        returnLoanDTO.setRestitutionUserId(userId);
+                        returnLoanDTO.setRestitutionToId(dto.getRestitutionToId());
+                        iIsMaterialsLoanService.returnIsMaterialsLoan(returnLoanDTO);
+                    }
+                } catch (Exception e) {
+                    log.error("存在异常的存取数据:{}", e);
+                    failRfidList.add(dto.getMaterialsRfid());
                 }
             }
+            // 5.检查有没有异常的物资,如果有,则返回提示
+            if (!failRfidList.isEmpty()) {
+                return "以下RFID本次存取失败:" + failRfidList;
+            }
         }
-        return true;
+        return "true";
     }
 
     @Transactional