From 651d0339d94c9004c4c19c21fab334a52c18f31b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Tue, 20 May 2025 17:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E4=BB=B6=EF=BC=88=E5=85=A5=E5=BA=93?= =?UTF-8?q?=EF=BC=8C=E6=9A=82=E5=AD=98,=E4=BD=9C=E5=BA=9F,=E5=8F=96?= =?UTF-8?q?=E6=B6=88=EF=BC=89=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeComponentController.java | 16 +- .../dto/request/ReqDevicePartStockInDto.java | 4 +- .../impl/EbikeComponentServiceImpl.java | 193 +++++++++++++----- 3 files changed, 151 insertions(+), 62 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java index ff8dad34..06d59469 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeComponentController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; /** - * 部件的相关接口 + * 车辆部件的相关接口 */ @RestController @RequestMapping("/ebikeComponent") @@ -18,8 +18,8 @@ public class EbikeComponentController { @Autowired EbikeComponentService ebikeComponentService; - /*** - * 中控设备部件入库接口 + /** + * 中控设备部件(入库,暂存) (stockInType 1暂存2入库 * @param params * @return */ @@ -28,9 +28,8 @@ public class EbikeComponentController { return ebikeComponentService.ecuStorageSave(params); } - - /*** - * 设备部件作废接口 (通用 + /** + * 设备部件作废 (通用 * @param componentEnterRecordId * @return */ @@ -38,9 +37,8 @@ public class EbikeComponentController { public JsonResult invalidateDevicePart(@RequestParam(name="componentEnterRecordId")String componentEnterRecordId) { return ebikeComponentService.invalidateDevicePart(componentEnterRecordId); } - - /*** - * 设备部件取消接口(通用) + /** + * 设备部件取消(通用) * @param componentEnterRecordId * @return */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java index 276f7971..002a14eb 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqDevicePartStockInDto.java @@ -41,10 +41,10 @@ public class ReqDevicePartStockInDto { /** * 入库数量,表示该批次部件的数量。 */ - private int enterQuantity; + private Integer enterQuantity; /** - * 入库类型:1 表示暂存,2 表示入库。 + * 入库类型:0或空 表示暂存,1 表示入库。 */ private Integer stockInType; diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java index 15d6a905..804d9eb2 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeComponentServiceImpl.java @@ -55,25 +55,78 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { } /*** - * 中控设备部件入库接口 + * 中控设备部件入库接口,暂存 * @param params * @return */ @Override @Transactional - public JsonResult ecuStorageSave(ReqDevicePartStockInDto params){ - //判断是 - //查询部件价格 - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("id",params.getComponentType()); - EbikeComponentTypeInfo ebikeComponentTypeInfo = ebikeComponentTypeInfoMapper.selectOneById(queryWrapper); - StaffFeign staffFeign = getStaffFeignInfo(); - // 获取当前操作用户 - String userId = staffFeign.getStaffId().toString(); - Long orgId = staffFeign.getOrgId(); + public JsonResult ecuStorageSave(ReqDevicePartStockInDto params) { + Integer stockInType = params.getStockInType(); + String userId = getStaffId(); // 获取当前操作用户ID + Long orgId = getOrgId(); // 获取当前操作用户所在组织ID + EbikeComponentTypeInfo ebikeComponentTypeInfo = getComponentTypeInfo(params.getComponentType()); // 获取部件信息 - //判断 - String componentEnterRecordId = params.getComponentEnterRecordId(); + // 获取或新增部件记录 + EbikeComponentEnterRecords ebikeComponentEnterRecords = buildEnterRecord(params, userId, ebikeComponentTypeInfo,stockInType); + saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId()); + + String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId(); + + if(params.getEbikeEcuEnterRecords().size()>0){ + // 删除原有的ECU入库记录并保存新的记录 + deleteAndInsertEcuEnterRecords(componentEnterRecordId, params.getEbikeEcuEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); + if (stockInType == 1) { + updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuEnterRecords().size()); + } + }else if(params.getEbikeBatteryEnterRecords().size()>0){ + // 删除原有的电池入库记录并保存新的记录 + deleteAndInsertBatteryRecords(componentEnterRecordId, params.getEbikeBatteryEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); + if (stockInType == 1) { + updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryEnterRecords().size()); + } + }else if(params.getEbikeHelmetEnterRecords().size()>0){ + // 删除原有的头盔入库记录并保存新的记录 + deleteAndInsertHelmetEnterRecords(componentEnterRecordId, params.getEbikeHelmetEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); + if (stockInType == 1) { + updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeHelmetEnterRecords().size()); + } + }else { + //部件数量 enterQuantity 更新部件库 + Integer enterQuantity = params.getEnterQuantity(); + if (stockInType == 1) { + updateInventoryCount(ebikeComponentTypeInfo, orgId,enterQuantity); + } + } + return JsonResult.success("成功"); + } + /* + 获取用户Id + */ + private String getStaffId() { + StaffFeign staffFeign = getStaffFeignInfo(); + return staffFeign.getStaffId().toString(); + } + /* + 获取组织Id + */ + private Long getOrgId() { + StaffFeign staffFeign = getStaffFeignInfo(); + return staffFeign.getOrgId(); + } + + /** + * 获取车辆部件类型表信息 + * @param componentType + * @return + */ + private EbikeComponentTypeInfo getComponentTypeInfo(String componentType) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("id", componentType); + return ebikeComponentTypeInfoMapper.selectOneById(queryWrapper); + } + + private EbikeComponentEnterRecords buildEnterRecord(ReqDevicePartStockInDto params, String userId, EbikeComponentTypeInfo ebikeComponentTypeInfo,Integer stockInType) { EbikeComponentEnterRecords ebikeComponentEnterRecords = new EbikeComponentEnterRecords(); ebikeComponentEnterRecords.setOwningRegion(params.getOwningRegion()); ebikeComponentEnterRecords.setComponentEnterRecordId(params.getComponentType()); @@ -81,68 +134,106 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); ebikeComponentEnterRecords.setCreatedUser(userId); ebikeComponentEnterRecords.setCreatedAt(LocalDateTime.now()); - ebikeComponentEnterRecords.setState("1");//已入库 - if(componentEnterRecordId==null){ //新增 + ebikeComponentEnterRecords.setState(stockInType==1 ? "1":"0"); // 暂存为 0 入库为1 + return ebikeComponentEnterRecords; + } + + private void saveOrUpdateEnterRecord(EbikeComponentEnterRecords ebikeComponentEnterRecords, String componentEnterRecordId) { + if (componentEnterRecordId == null) { // 新增 ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords); - }else{ - //查询表中是否存在一条记录 + } else { // 编辑或新增 QueryWrapper query = new QueryWrapper(); query.eq("component_enter_record_id", componentEnterRecordId); - long l = ebikeComponentEnterRecordsMapper.selectCountByQuery(query); - if(l>0){//编辑 + long count = ebikeComponentEnterRecordsMapper.selectCountByQuery(query); + if (count > 0) { ebikeComponentEnterRecords.setComponentEnterRecordId(componentEnterRecordId); ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords); - }else{ + } else { ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords); } } - componentEnterRecordId=ebikeComponentEnterRecords.getComponentEnterRecordId(); + } - //判断数据是否存在 存在则更新 否则插入 删除这次记录的所有 重新插入 + private void deleteAndInsertEcuEnterRecords(String componentEnterRecordId, List enterRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) { + // 删除原有的ECU入库记录 QueryWrapper query = new QueryWrapper(); query.eq("component_enter_record_id", componentEnterRecordId); ebikeEcuEnterRecordsMapper.deleteByQuery(query); - //保存ecu入库记录 - List enterRecords = params.getEbikeEcuEnterRecords(); - for(EbikeEcuEnterRecords record:enterRecords){ + // 插入新的ECU入库记录 + for (EbikeEcuEnterRecords record : enterRecords) { record.setComponentEnterRecordId(componentEnterRecordId); - ebikeEcuEnterRecordsMapper.insert(record); - //部件仓库明细的插入 只有入库的时候才写入 写入后就不可删除了 只能通过状态控制 - EbikeComponentInventory ebikeComponentInventory = new EbikeComponentInventory(); - ebikeComponentInventory.setItemCode(record.getEcuCode()); - ebikeComponentInventory.setSerialNumber(record.getEcuCode()); - ebikeComponentInventory.setComponentType(ebikeComponentTypeInfo.getId()); - ebikeComponentInventory.setComponentName(ebikeComponentTypeInfo.getName()); - ebikeComponentInventory.setComponentPrice(ebikeComponentTypeInfo.getPrice()); - ebikeComponentInventory.setOrgId(orgId); - ebikeComponentInventory.setBrand(ebikeComponentTypeInfo.getBrand()); - ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now()); - ebikeComponentInventory.setLastUpdatedUser(userId); - ebikeComponentInventory.setState(1);//已入库 - ebikeComponentInventoryMapper.insert(ebikeComponentInventory); + ebikeEcuEnterRecordsMapper.insert(record); + if (stockInType == 1) { // 仅在入库时执行 + saveComponentInventory(record.getEcuSn(),record.getEcuCode(), ebikeComponentTypeInfo, userId, orgId); + } } - int size = enterRecords.size(); - // 根据部件类型编号查询部件类型 新增或更新 统计表 + } + private void deleteAndInsertHelmetEnterRecords(String componentEnterRecordId, List ebikeHelmetEnterRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) { + // 删除原有的头盔入库记录 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeHelmetEnterRecordsMapper.deleteByQuery(query); + // 插入新的头盔入库记录 + for (EbikeHelmetEnterRecords record : ebikeHelmetEnterRecords) { + record.setComponentEnterRecordId(componentEnterRecordId); + ebikeHelmetEnterRecordsMapper.insert(record); + if (stockInType == 1) { // 仅在入库时执行 + saveComponentInventory(record.getHelmetCode(),"", ebikeComponentTypeInfo, userId, orgId); + } + } + } + + private void deleteAndInsertBatteryRecords(String componentEnterRecordId, List ebikeBatteryEnterRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) { + // 删除原有的电池入库记录 + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + ebikeBatteryEnterRecordsMapper.deleteByQuery(query); + // 插入新的电池入库记录 + for (EbikeBatteryEnterRecords record : ebikeBatteryEnterRecords) { + record.setComponentEnterRecordId(componentEnterRecordId); + ebikeBatteryEnterRecordsMapper.insert(record); + if (stockInType == 1) { // 仅在入库时执行 + saveComponentInventory(record.getBatteryCode(),"", ebikeComponentTypeInfo, userId, orgId); + } + } + } + private void saveComponentInventory(String ItemCode,String SerialNumber, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) { + EbikeComponentInventory ebikeComponentInventory = new EbikeComponentInventory(); + ebikeComponentInventory.setItemCode(ItemCode); + ebikeComponentInventory.setSerialNumber(SerialNumber); + ebikeComponentInventory.setComponentType(ebikeComponentTypeInfo.getId()); + ebikeComponentInventory.setComponentName(ebikeComponentTypeInfo.getName()); + ebikeComponentInventory.setComponentPrice(ebikeComponentTypeInfo.getPrice()); + ebikeComponentInventory.setOrgId(orgId); + ebikeComponentInventory.setBrand(ebikeComponentTypeInfo.getBrand()); + ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now()); + ebikeComponentInventory.setLastUpdatedUser(userId); + ebikeComponentInventory.setState(1); // 已入库 + ebikeComponentInventoryMapper.insert(ebikeComponentInventory); + } + + private void updateInventoryCount(EbikeComponentTypeInfo ebikeComponentTypeInfo, Long orgId, int size) { QueryWrapper query1 = new QueryWrapper(); query1.eq("code", ebikeComponentTypeInfo.getId()); EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); - ebikeComponentInventorycount.setOrgId(orgId); - ebikeComponentInventorycount.setCode(ebikeComponentTypeInfo.getId()); - ebikeComponentInventorycount.setName(ebikeComponentTypeInfo.getName()); - ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); - ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); - ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); - if(ebikeComponentInventorycount==null){ + if (ebikeComponentInventorycount == null) { + ebikeComponentInventorycount = new EbikeComponentInventorycount(); + ebikeComponentInventorycount.setOrgId(orgId); + ebikeComponentInventorycount.setCode(ebikeComponentTypeInfo.getId()); + ebikeComponentInventorycount.setName(ebikeComponentTypeInfo.getName()); + ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); + ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); + ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); ebikeComponentInventorycount.setCount(size); ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); - }else { - ebikeComponentInventorycount.setCount(size+ebikeComponentInventorycount.getCount()); + } else { + ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() + size); ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); } - return JsonResult.success("入库成功"); } + /*** * 设备部件作废接口 (通用 * @param componentEnterRecordId