Quellcode durchsuchen

修改手动归还逻辑

车车 vor 3 Monaten
Ursprung
Commit
c416e08992

+ 79 - 24
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareMaterialApiServiceImpl.java

@@ -174,7 +174,8 @@ public class HardwareMaterialApiServiceImpl implements HardwareMaterialApiServic
         // 因为比较复杂,循环处理
         for (ReplaceMaterialDTO replaceMaterialDTO : dto.getList()) {
             Boolean b = checkReplaceData(replaceMaterialDTO);
-            if (b) {
+            if (!b) {
+                System.out.println("进来了-------------------");
                 continue;
             }
             Assert.notNull(replaceMaterialDTO.getOldMaterialsId(), "旧物资ID不能为空!");
@@ -189,25 +190,71 @@ public class HardwareMaterialApiServiceImpl implements HardwareMaterialApiServic
             }
             // 1.2无论是否更换rfid,新物资的数据都要存储到物资清单之中
             IsMaterials newMaterial = new IsMaterials();
-            newMaterial.setMaterialsName(replaceMaterialDTO.getMaterialsName());
-            newMaterial.setMaterialsTypeId(replaceMaterialDTO.getMaterialsTypeId());
-            newMaterial.setMaterialsCabinetId(oldMaterial.getMaterialsCabinetId());
-            newMaterial.setLoanState("0");
-            newMaterial.setMaterialsRfid(replaceMaterialDTO.getMaterialsRfid());
-            newMaterial.setSupplier(oldMaterial.getSupplier());
-            newMaterial.setExpirationDate(replaceMaterialDTO.getExpirationDate());
-            newMaterial.setStatus("0");
+            if (oldMaterial.getMaterialsRfid().equals(replaceMaterialDTO.getMaterialsRfid())) {
+                // 如果更换物资的rfid相同
+                newMaterial.setMaterialsName(replaceMaterialDTO.getMaterialsName());
+                newMaterial.setMaterialsTypeId(replaceMaterialDTO.getMaterialsTypeId());
+                newMaterial.setMaterialsCabinetId(oldMaterial.getMaterialsCabinetId());
+                newMaterial.setLoanState(oldMaterial.getLoanState());
+                newMaterial.setMaterialsRfid(replaceMaterialDTO.getMaterialsRfid());
+                newMaterial.setSupplier(oldMaterial.getSupplier());
+                newMaterial.setExpirationDate(replaceMaterialDTO.getExpirationDate());
+                newMaterial.setStatus("0");
 
-            PropertyVO propertyVO = new PropertyVO();
-            propertyVO.setPropertyId(String.valueOf(replaceMaterialDTO.getPropertiesPropertyId()));
-            propertyVO.setPropertyName(replaceMaterialDTO.getPropertiesProperty());
-            propertyVO.setRecordId(String.valueOf(replaceMaterialDTO.getPropertiesValueId()));
-            propertyVO.setValueName(replaceMaterialDTO.getPropertiesValue());
-            // 使用 ObjectMapper 将对象转换为 JSON 字符串
-            ObjectMapper objectMapper = new ObjectMapper();
-            String jsonString = objectMapper.writeValueAsString(propertyVO);
-            newMaterial.setProperties("[" + jsonString + "]");
-            iIsMaterialsService.save(newMaterial);
+                PropertyVO propertyVO = new PropertyVO();
+                propertyVO.setPropertyId(String.valueOf(replaceMaterialDTO.getPropertiesPropertyId()));
+                propertyVO.setPropertyName(replaceMaterialDTO.getPropertiesProperty());
+                propertyVO.setRecordId(String.valueOf(replaceMaterialDTO.getPropertiesValueId()));
+                propertyVO.setValueName(replaceMaterialDTO.getPropertiesValue());
+                // 使用 ObjectMapper 将对象转换为 JSON 字符串
+                ObjectMapper objectMapper = new ObjectMapper();
+                String jsonString = objectMapper.writeValueAsString(propertyVO);
+                newMaterial.setProperties("[" + jsonString + "]");
+                iIsMaterialsService.save(newMaterial);
+            }
+
+            IsMaterials newMaterials = iIsMaterialsService.getOne(Wrappers.<IsMaterials>lambdaQuery()
+                    .eq(IsMaterials::getMaterialsRfid, replaceMaterialDTO.getMaterialsRfid()));
+            if (!oldMaterial.getMaterialsRfid().equals(replaceMaterialDTO.getMaterialsRfid()) && newMaterials == null) {
+                // 如果更换rfid,并且不在系统内的数据
+                newMaterial.setMaterialsName(replaceMaterialDTO.getMaterialsName());
+                newMaterial.setMaterialsTypeId(replaceMaterialDTO.getMaterialsTypeId());
+                newMaterial.setMaterialsCabinetId(oldMaterial.getMaterialsCabinetId());
+                newMaterial.setLoanState("1");
+                newMaterial.setMaterialsRfid(replaceMaterialDTO.getMaterialsRfid());
+                newMaterial.setSupplier(oldMaterial.getSupplier());
+                newMaterial.setExpirationDate(replaceMaterialDTO.getExpirationDate());
+                newMaterial.setStatus("0");
+
+                PropertyVO propertyVO = new PropertyVO();
+                propertyVO.setPropertyId(String.valueOf(replaceMaterialDTO.getPropertiesPropertyId()));
+                propertyVO.setPropertyName(replaceMaterialDTO.getPropertiesProperty());
+                propertyVO.setRecordId(String.valueOf(replaceMaterialDTO.getPropertiesValueId()));
+                propertyVO.setValueName(replaceMaterialDTO.getPropertiesValue());
+                // 使用 ObjectMapper 将对象转换为 JSON 字符串
+                ObjectMapper objectMapper = new ObjectMapper();
+                String jsonString = objectMapper.writeValueAsString(propertyVO);
+                newMaterial.setProperties("[" + jsonString + "]");
+                iIsMaterialsService.save(newMaterial);
+
+                // 将旧物资解绑
+                iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
+                        .eq(IsMaterials::getMaterialsRfid, oldMaterial.getMaterialsRfid())
+                        .set(IsMaterials::getMaterialsCabinetId, null));
+            }
+
+            if (!oldMaterial.getMaterialsRfid().equals(replaceMaterialDTO.getMaterialsRfid()) && newMaterials != null) {
+                // 如果发现物资是存在的,判断下有没有绑定柜子
+                Assert.isNull(newMaterials.getMaterialsCabinetId(), "该物资存在所属柜子,不可更换!");
+                // 如果没有绑定柜子,则可以开始绑定
+                iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
+                        .eq(IsMaterials::getMaterialsId, newMaterials.getMaterialsId())
+                        .set(IsMaterials::getMaterialsCabinetId, oldMaterial.getMaterialsCabinetId()));
+                // 解绑老物资
+                iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
+                        .eq(IsMaterials::getMaterialsId, newMaterials.getMaterialsId())
+                        .set(IsMaterials::getMaterialsCabinetId, null));
+            }
 
             // 2.新增物资更换记录
             IsMaterialsChangeRecord isMaterialsChangeRecord = new IsMaterialsChangeRecord();
@@ -231,14 +278,21 @@ public class HardwareMaterialApiServiceImpl implements HardwareMaterialApiServic
             }
             isMaterialsChangeRecordService.save(isMaterialsChangeRecord);
 
-            // 删除旧物资的取出记录和新物资的存入异常
-            iIsMaterialsLoanService.remove(Wrappers.<IsMaterialsLoan>lambdaQuery()
+            // 删除旧物资的取出记录和新物资的存入异常---曹特殊要求,改成完成的数据
+            iIsMaterialsLoanService.update(Wrappers.<IsMaterialsLoan>lambdaUpdate()
                     .eq(IsMaterialsLoan::getMaterialsId, oldMaterial.getMaterialsId())
-                    .ne(IsMaterialsLoan::getStatus, "1"));
+                    .ne(IsMaterialsLoan::getStatus, "1")
+                    .set(IsMaterialsLoan::getRemark, "物资更换")
+                    .set(IsMaterialsLoan::getStatus, "1")
+                    .set(IsMaterialsLoan::getRestitutionUserId, SecurityUtils.getUserId())
+                    .set(IsMaterialsLoan::getActualRestitutionTime, new Date()));
             // 删除新物资的存入异常
-            isMaterialsLoanExceptionService.remove(Wrappers.<IsMaterialsLoanException>lambdaQuery()
+            isMaterialsLoanExceptionService.update(Wrappers.<IsMaterialsLoanException>lambdaUpdate()
                     .eq(IsMaterialsLoanException::getMaterialsRfid, replaceMaterialDTO.getMaterialsRfid())
-                    .eq(IsMaterialsLoanException::getStatus, "0"));
+                    .eq(IsMaterialsLoanException::getStatus, "0")
+                    .set(IsMaterialsLoanException::getRemark, "物资更换")
+                    .set(IsMaterialsLoanException::getStatus, "1")
+                    .set(IsMaterialsLoanException::getHandleTime, new Date()));
         }
         return true;
     }
@@ -256,6 +310,7 @@ public class HardwareMaterialApiServiceImpl implements HardwareMaterialApiServic
                 // 1.1该情况属于新物资需要使用旧物资的rfid
                 iIsMaterialsService.update(Wrappers.<IsMaterials>lambdaUpdate()
                         .eq(IsMaterials::getMaterialsId, replaceMaterialDTO.getOldMaterialsId())
+                        .set(IsMaterials::getMaterialsCabinetId, null)
                         .set(IsMaterials::getMaterialsRfid, null));
             }
             // 1.2无论是否更换rfid,新物资的数据都要存储到物资清单之中