部件入库接口相关接口

This commit is contained in:
小朱 2025-05-27 18:18:52 +08:00
parent 03dd870202
commit f49d221ac0
2 changed files with 276 additions and 205 deletions

View File

@ -58,9 +58,7 @@ public class EbikeComponentInventorycount implements Serializable {
/**
* 部件数量
*/
@Column(onInsertValue = "0")
private long itemCount;
private Long itemCount = 0L; // 使用包装类 Long允许 NULL
/**
* 单位
*/

View File

@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -35,9 +36,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
@Resource
private EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper;
@Resource
private EbikeComponentProductionMapper ebikeComponentProductionMapper;
@Resource
private StaffFeignClient staffFeignClient;
@Resource
@ -62,10 +60,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
@Autowired
private EbikeBatteryOutRecordsMapper ebikeBatteryOutRecordsMapper;
public EbikeComponentServiceImpl(EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper, EbikeComponentProductionMapper ebikeComponentProductionMapper) {
this.ebikeEcuEnterRecordsMapper = ebikeEcuEnterRecordsMapper;
this.ebikeComponentProductionMapper = ebikeComponentProductionMapper;
}
/***
* 中控设备部件入库接口,暂存
@ -84,20 +79,43 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId(), userId);
String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId();
// 用于存储重复部件名称的集合
List<String> duplicatePartNames = new ArrayList<>();
if (params.getEbikeEcuEnterRecords() != null && !params.getEbikeEcuEnterRecords().isEmpty()) {
// 遍历所有的EbikeEcuEnterRecords记录
for (EbikeEcuEnterRecords res : params.getEbikeEcuEnterRecords()) {
boolean isDuplicate = isDuplicateEntry(res.getEcuSn(),res.getEcuCode());
if (isDuplicate) {
// 如果是重复部件则将部件名称添加到重复部件名称记录中
duplicatePartNames.add(res.getEcuSn()); // 假设 EcuSn 是部件名称
}
}
// 删除原有的ECU入库记录并保存新的记录
deleteAndInsertEcuEnterRecords(componentEnterRecordId, params.getEbikeEcuEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuEnterRecords().size(), 1);
}
} else if (params.getEbikeBatteryEnterRecords() != null && !params.getEbikeBatteryEnterRecords().isEmpty()) {
for (EbikeBatteryEnterRecords res : params.getEbikeBatteryEnterRecords()) {
boolean isDuplicate = isDuplicateEntry(res.getBatteryCode(),"");
if (isDuplicate) {
// 如果是重复部件则将部件名称添加到重复部件名称记录中
duplicatePartNames.add(res.getBatteryCode()); // 假设 EcuSn 是部件名称
}
}
// 删除原有的电池入库记录并保存新的记录
deleteAndInsertBatteryRecords(componentEnterRecordId, params.getEbikeBatteryEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryEnterRecords().size(), 1);
}
} else if (params.getEbikeHelmetEnterRecords() != null && !params.getEbikeHelmetEnterRecords().isEmpty()) {
for (EbikeHelmetEnterRecords res : params.getEbikeHelmetEnterRecords()) {
boolean isDuplicate = isDuplicateEntry(res.getHelmetCode(),"");
if (isDuplicate) {
// 如果是重复部件则将部件名称添加到重复部件名称记录中
duplicatePartNames.add(res.getHelmetCode()); // 假设 EcuSn 是部件名称
}
}
// 删除原有的头盔入库记录并保存新的记录
deleteAndInsertHelmetEnterRecords(componentEnterRecordId, params.getEbikeHelmetEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
@ -110,12 +128,16 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
updateInventoryCount(ebikeComponentTypeInfo, orgId, enterQuantity, 1);
}
}
// 如果有重复部件名称记录则返回错误信息
if (!duplicatePartNames.isEmpty()) {
// 可以在错误信息中添加重复的部件名称
String duplicateParts = String.join(", ", duplicatePartNames);
return JsonResult.failed("以下部件已存在,不能重复入库: " + duplicateParts);
}
String componentOutRecordId = params.getComponentOutRecordId();
if(componentOutRecordId != null && !componentOutRecordId.isEmpty()){
if(componentOutRecordId != null && !componentOutRecordId.isEmpty() && stockInType == 1 ){
// 更新出库记录状态为 已归还
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneById(componentOutRecordId);
ebikeComponentOutRecords.setState("2");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
updateOutRecordStatus(componentOutRecordId);
}
return JsonResult.success("", componentEnterRecordId);
}
@ -127,7 +149,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
StaffFeign staffFeign = getStaffFeignInfo();
return staffFeign.getStaffId().toString();
}
/*
获取组织Id
*/
@ -185,7 +206,13 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
// 删除原有的ECU入库记录
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeHelmetEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeEcuEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeBatteryEnterRecordsMapper.deleteByQuery(query);
// 插入新的ECU入库记录
for (EbikeEcuEnterRecords record : enterRecords) {
record.setComponentEnterRecordId(componentEnterRecordId);
@ -201,6 +228,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeHelmetEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeEcuEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeBatteryEnterRecordsMapper.deleteByQuery(query);
// 插入新的头盔入库记录
for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) {
record.setComponentEnterRecordId(componentEnterRecordId);
@ -215,6 +248,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
// 删除原有的电池入库记录
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeHelmetEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeEcuEnterRecordsMapper.deleteByQuery(query);
query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
ebikeBatteryEnterRecordsMapper.deleteByQuery(query);
// 插入新的电池入库记录
for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) {
@ -238,7 +277,23 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now());
ebikeComponentInventory.setLastUpdatedUser(userId);
ebikeComponentInventory.setState(state); // 1 已入库 //2 已出库
ebikeComponentInventoryMapper.insert(ebikeComponentInventory);
// 查询是否已存在该记录
QueryWrapper query =new QueryWrapper();
query.eq("item_code",ItemCode);
query.eq("serial_number",SerialNumber);
EbikeComponentInventory existingInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
if (existingInventory != null) {
// 如果记录存在则进行更新
existingInventory.setLastUpdatedAt(LocalDateTime.now());
existingInventory.setLastUpdatedUser(userId);
existingInventory.setState(state);
// 执行更新操作
ebikeComponentInventoryMapper.update(existingInventory);
} else {
// 如果记录不存在则执行插入操作
ebikeComponentInventoryMapper.insert(ebikeComponentInventory);
}
}
//入库记录更新数量 type 1 入库 2 出库
@ -254,7 +309,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand());
ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit());
ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice());
ebikeComponentInventorycount.setItemCount(size);
ebikeComponentInventorycount.setItemCount(0L+size);
ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount);
} else {
if (type == 1) {//入库
@ -320,67 +375,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
}
// 方法实现
private void updateBatteryDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新电池仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeBatteryEnterRecords> ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query);
for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getBatteryCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeBatteryEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateHelmetDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新头盔仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeHelmetEnterRecords> ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query);
for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getHelmetCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeHelmetEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateCentralControlDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新中控仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeEcuEnterRecords> ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query);
for (EbikeEcuEnterRecords record : ebikeEcuEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getEcuSn());
query.eq("serial_number", record.getEcuCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeEcuEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateOtherComponentStock(String componentType, Integer size) {
// 具体更新其他组件仓库总数量的逻辑
QueryWrapper query1 = new QueryWrapper();
query1.eq("code", componentType);
EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1);
if (ebikeComponentInventorycount != null) {
ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size);
ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount);
}
}
/**
* 出库作废增加部件数量
@ -464,7 +458,186 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
}
return JsonResult.success(componentOutRecordId);
}
/**
* 设备部件出库取消通用
*
* @param componentOutRecordId
* @return
*/
@Override
public JsonResult<?> cancelOutDevicePart(String componentOutRecordId) {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
//先更新记录表状态 为已取消-1
ebikeComponentOutRecords.setState("-1");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
return JsonResult.success("成功");
}
/**
* 设备部件出库作废 通用
*
* @param componentOutRecordId
* @return
*/
@Override
@Transactional
public JsonResult<?> invalidateOutDevicePart(String componentOutRecordId) {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
String componentType = ebikeComponentOutRecords.getComponentType();
Integer enterQuantity = ebikeComponentOutRecords.getEnterQuantity();
// 电池262711452730000 头盔262711452730001 中控262711452730008 需要单独操作明细表
//先更新记录表状态 为已作废-2
ebikeComponentOutRecords.setState("-2");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
ComponentType componentTypeEnum = ComponentType.fromCode(componentType);
switch (componentTypeEnum) {
case BATTERY: // 电池
updateBatteryOutDetails(componentOutRecordId, componentType, -2);
break;
case HELMET: // 头盔
updateHelmetOutDetails(componentOutRecordId, componentType, -2);
break;
case ECU: // 中控
updateCentralControlOutDetails(componentOutRecordId, componentType, -2);
break;
default: // 其他
updateOtherComponentStock(componentType, enterQuantity);
break;
}
return JsonResult.success("成功");
}
/**
* 分页查询Ecu入库记录
*
* @param reqEbikeEcuEnterRecordsDto 分页查询条件
* @return 分页对象
*/
@Override
public Page<EbikeEcuEnterRecords> ecuEnterList(ReqEbikeEcuEnterRecordsDto reqEbikeEcuEnterRecordsDto) {
QueryWrapper query = QueryWrapper.create();
String componentId = reqEbikeEcuEnterRecordsDto.getComponentEnterRecordId();
if(componentId!=null&&!componentId.isEmpty())
query.where(EBIKE_ECU_ENTER_RECORDS.COMPONENT_ENTER_RECORD_ID.eq(componentId));
Page<EbikeEcuEnterRecords> page = reqEbikeEcuEnterRecordsDto.getPageParam().getPage();
return ebikeEcuEnterRecordsMapper.paginate(page, query);
}
/**
* 分页查询Ecu出库库记录
*
* @param reqEbikeEcuOutRecordsDto 分页查询条件
* @return 分页对象
*/
@Override
public Page<EbikeEcuOutRecords> ecuOutList(ReqEbikeEcuOutRecordsDto reqEbikeEcuOutRecordsDto) {
QueryWrapper query = QueryWrapper.create();
String componentId = reqEbikeEcuOutRecordsDto.getComponentOutRecordId();
if(componentId!=null&&!componentId.isEmpty())
query.where(EBIKE_ECU_OUT_RECORDS.COMPONENT_OUT_RECORD_ID.eq(componentId));
Page<EbikeEcuOutRecords> page = reqEbikeEcuOutRecordsDto.getPageParam().getPage();
return ebikeEcuOutRecordsMapper.paginate(page, query);
}
/**
* 根据部件出库记录表主键查询部件出库记录信息以及归还部件信息
*
* @param componentOutRecordId 部件出库记录ID
* @return ResComponentOutRecordInfoDto
*/
@Override
public JsonResult<?> getComponentOutRecordInfo(String componentOutRecordId) {
// 创建查询条件
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
// 获取出库记录
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
if (ebikeComponentOutRecords == null) {
return JsonResult.failed("记录未找到");
}
// 将出库记录的属性复制到返回的DTO中
ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto();
BeanUtils.copyProperties(ebikeComponentOutRecords, resComponentOutRecordInfoDto);
// 根据组件类型填充对应的出库记录
ComponentType componentTypeEnum = ComponentType.fromCode(ebikeComponentOutRecords.getComponentType());
populateOutRecords(resComponentOutRecordInfoDto, componentOutRecordId, componentTypeEnum);
// 查询是否存在归还记录如果存在则填充归还记录
query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query);
if (ebikeComponentEnterRecords != null) {
populateEnterRecords(resComponentOutRecordInfoDto, ebikeComponentEnterRecords);
}
return JsonResult.success(resComponentOutRecordInfoDto);
}
// 方法实现
private void updateBatteryDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新电池仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeBatteryEnterRecords> ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListByQuery(query);
for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getBatteryCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeBatteryEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateHelmetDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新头盔仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeHelmetEnterRecords> ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListByQuery(query);
for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getHelmetCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeHelmetEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateCentralControlDetails(String componentEnterRecordId, String componentType, Integer state) {
// 具体更新中控仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
List<EbikeEcuEnterRecords> ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListByQuery(query);
for (EbikeEcuEnterRecords record : ebikeEcuEnterRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getEcuSn());
query.eq("serial_number", record.getEcuCode());
EbikeComponentInventory ebikeComponentInventory = ebikeComponentInventoryMapper.selectOneByQuery(query);
ebikeComponentInventory.setState(state);
ebikeComponentInventoryMapper.update(ebikeComponentInventory);
}
int size = ebikeEcuEnterRecords.size();
updateOtherComponentStock(componentType, size);
}
private void updateOtherComponentStock(String componentType, Integer size) {
// 具体更新其他组件仓库总数量的逻辑
QueryWrapper query1 = new QueryWrapper();
query1.eq("code", componentType);
EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1);
if (ebikeComponentInventorycount != null) {
ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size);
ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount);
}
}
private EbikeComponentOutRecords buildOutRecord(ReqComponentOutRecordDto params, EbikeComponentTypeInfo ebikeComponentTypeInfo, Integer stockInType, Long orgId) {
EbikeComponentOutRecords ebikeComponentOutRecords = new EbikeComponentOutRecords();
ebikeComponentOutRecords.setOwningRegion(params.getOwningRegion());
@ -544,64 +717,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
}
}
/**
* 设备部件出库取消通用
*
* @param componentOutRecordId
* @return
*/
@Override
public JsonResult<?> cancelOutDevicePart(String componentOutRecordId) {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
//先更新记录表状态 为已取消-1
ebikeComponentOutRecords.setState("-1");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
return JsonResult.success("成功");
}
/**
* 设备部件出库作废 通用
*
* @param componentOutRecordId
* @return
*/
@Override
@Transactional
public JsonResult<?> invalidateOutDevicePart(String componentOutRecordId) {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
String componentType = ebikeComponentOutRecords.getComponentType();
Integer enterQuantity = ebikeComponentOutRecords.getEnterQuantity();
// 电池262711452730000 头盔262711452730001 中控262711452730008 需要单独操作明细表
//先更新记录表状态 为已作废-2
ebikeComponentOutRecords.setState("-2");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
ComponentType componentTypeEnum = ComponentType.fromCode(componentType);
switch (componentTypeEnum) {
case BATTERY: // 电池
updateBatteryOutDetails(componentOutRecordId, componentType, -2);
break;
case HELMET: // 头盔
updateHelmetOutDetails(componentOutRecordId, componentType, -2);
break;
case ECU: // 中控
updateCentralControlOutDetails(componentOutRecordId, componentType, -2);
break;
default: // 其他
updateOtherComponentStock(componentType, enterQuantity);
break;
}
return JsonResult.success("成功");
}
private void updateBatteryOutDetails(String componentOutRecordId, String componentType, Integer state) {
// 具体更新电池仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
List<EbikeBatteryOutRecords> ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeBatteryOutRecords> ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListByQuery(query);
for (EbikeBatteryOutRecords record : ebikeBatteryOutRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getBatteryCode());
@ -618,7 +739,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
List<EbikeHelmetOutRecords> ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeHelmetOutRecords> ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListByQuery(query);
for (EbikeHelmetOutRecords record : ebikeHelmetOutRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getHelmetCode());
@ -634,7 +755,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
// 具体更新中控仓库明细状态和仓库总数量的逻辑
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
List<EbikeEcuOutRecords> ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeEcuOutRecords> ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListByQuery(query);
for (EbikeEcuOutRecords record : ebikeEcuOutRecords) {
query = new QueryWrapper();
query.eq("item_code", record.getEcuSn());
@ -646,84 +767,23 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
int size = ebikeEcuOutRecords.size();
updateOtherOutComponentStock(componentType, size);
}
/**
* 分页查询Ecu入库记录
*
* @param reqEbikeEcuEnterRecordsDto 分页查询条件
* @return 分页对象
*/
@Override
public Page<EbikeEcuEnterRecords> ecuEnterList(ReqEbikeEcuEnterRecordsDto reqEbikeEcuEnterRecordsDto) {
QueryWrapper query = QueryWrapper.create();
String componentId = reqEbikeEcuEnterRecordsDto.getComponentEnterRecordId();
if(componentId!=null&&!componentId.isEmpty())
query.where(EBIKE_ECU_ENTER_RECORDS.COMPONENT_ENTER_RECORD_ID.eq(componentId));
Page<EbikeEcuEnterRecords> page = reqEbikeEcuEnterRecordsDto.getPageParam().getPage();
return ebikeEcuEnterRecordsMapper.paginate(page, query);
}
/**
* 分页查询Ecu出库库记录
*
* @param reqEbikeEcuOutRecordsDto 分页查询条件
* @return 分页对象
*/
@Override
public Page<EbikeEcuOutRecords> ecuOutList(ReqEbikeEcuOutRecordsDto reqEbikeEcuOutRecordsDto) {
QueryWrapper query = QueryWrapper.create();
String componentId = reqEbikeEcuOutRecordsDto.getComponentOutRecordId();
if(componentId!=null&&!componentId.isEmpty())
query.where(EBIKE_ECU_OUT_RECORDS.COMPONENT_OUT_RECORD_ID.eq(componentId));
Page<EbikeEcuOutRecords> page = reqEbikeEcuOutRecordsDto.getPageParam().getPage();
return ebikeEcuOutRecordsMapper.paginate(page, query);
}
/**
* 根据部件出库记录表主键查询部件出库记录信息以及归还部件信息
*
* @param componentOutRecordId 部件出库记录ID
* @return ResComponentOutRecordInfoDto
*/
@Override
public JsonResult<?> getComponentOutRecordInfo(String componentOutRecordId) {
// 创建查询条件
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
// 获取出库记录
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query);
if (ebikeComponentOutRecords == null) {
return JsonResult.failed("记录未找到");
}
// 将出库记录的属性复制到返回的DTO中
ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto();
BeanUtils.copyProperties(ebikeComponentOutRecords, resComponentOutRecordInfoDto);
// 根据组件类型填充对应的出库记录
ComponentType componentTypeEnum = ComponentType.fromCode(ebikeComponentOutRecords.getComponentType());
populateOutRecords(resComponentOutRecordInfoDto, query, componentTypeEnum);
// 查询是否存在归还记录如果存在则填充归还记录
EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query);
if (ebikeComponentEnterRecords != null) {
populateEnterRecords(resComponentOutRecordInfoDto, ebikeComponentEnterRecords);
}
return JsonResult.success(resComponentOutRecordInfoDto);
}
// 根据组件类型填充出库记录
private void populateOutRecords(ResComponentOutRecordInfoDto dto, QueryWrapper query, ComponentType componentTypeEnum) {
private void populateOutRecords(ResComponentOutRecordInfoDto dto, String componentOutRecordId, ComponentType componentTypeEnum) {
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
switch (componentTypeEnum) {
case BATTERY: // 电池
List<EbikeBatteryOutRecords> batteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeBatteryOutRecords> batteryOutRecords = ebikeBatteryOutRecordsMapper.selectListByQuery(query);
dto.setEbikeBatteryOutRecords(batteryOutRecords);
break;
case HELMET: // 头盔
List<EbikeHelmetOutRecords> helmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeHelmetOutRecords> helmetOutRecords = ebikeHelmetOutRecordsMapper.selectListByQuery(query);
dto.setEbikeHelmetOutRecords(helmetOutRecords);
break;
case ECU: // 中控
List<EbikeEcuOutRecords> ecuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeEcuOutRecords> ecuOutRecords = ebikeEcuOutRecordsMapper.selectListByQuery(query);
dto.setEbikeEcuOutRecords(ecuOutRecords);
break;
default:
@ -740,22 +800,35 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ComponentType componentTypeEnumEnter = ComponentType.fromCode(enterRecords.getComponentType());
switch (componentTypeEnumEnter) {
case BATTERY: // 电池
List<EbikeBatteryEnterRecords> batteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeBatteryEnterRecords> batteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListByQuery(query);
dto.setEbikeBatteryEnterRecords(batteryEnterRecords);
break;
case HELMET: // 头盔
List<EbikeHelmetEnterRecords> helmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeHelmetEnterRecords> helmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListByQuery(query);
dto.setEbikeHelmetEnterRecords(helmetEnterRecords);
break;
case ECU: // 中控
List<EbikeEcuEnterRecords> ecuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query);
List<EbikeEcuEnterRecords> ecuEnterRecords = ebikeEcuEnterRecordsMapper.selectListByQuery(query);
dto.setEbikeEcuEnterRecords(ecuEnterRecords);
break;
default:
break;
}
}
// 更新出库记录状态为已归还
private void updateOutRecordStatus(String componentOutRecordId) {
EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneById(componentOutRecordId);
ebikeComponentOutRecords.setState("2");
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
}
public boolean isDuplicateEntry(String itemCode, String serialNumber) {
QueryWrapper query = new QueryWrapper();
query.eq("item_code", itemCode);
query.eq("serial_number", serialNumber);
query.eq("state", 1); // 假设 1 表示已已入库
long count = ebikeComponentInventoryMapper.selectCountByQuery(query); // 查询符合条件的记录数
return count > 0; // 如果记录数大于 0说明已经存在重复入库
}
public StaffFeign getStaffFeignInfo() {
String tokenValue = StpUtil.getTokenValue();
// 调用 Feign 客户端获取用户信息