|
|
@@ -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,新物资的数据都要存储到物资清单之中
|