From c9129438aec203c18259c43021eee98b3f5877a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 14:40:52 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E5=BD=92=E8=BF=98=E6=97=B6=E5=80=99?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=87=BA=E5=BA=93Id=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=83=A8=E4=BB=B6=E5=87=BA=E5=BA=93=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=A1=A8=E4=B8=BB=E9=94=AE=EF=BC=8C=E6=9F=A5=E8=AF=A2=E9=83=A8?= =?UTF-8?q?=E4=BB=B6=E5=87=BA=E5=BA=93=E8=AE=B0=E5=BD=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=BD=92=E8=BF=98=E9=83=A8=E4=BB=B6=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeComponentController.java | 13 ++++ .../request/ReqComponentEnterRecordDto.java | 5 ++ .../dto/request/ReqComponentOutRecordDto.java | 10 +-- .../ResComponentOutRecordInfoDto.java | 67 +++++++++++++++++++ .../pojo/EbikeComponentEnterRecords.java | 4 ++ .../service/EbikeComponentService.java | 8 +++ .../impl/EbikeComponentServiceImpl.java | 48 ++++++++----- 7 files changed, 133 insertions(+), 22 deletions(-) create mode 100644 ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java 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 a57581ed..12f34d4a 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 @@ -3,6 +3,7 @@ package com.cdzy.ebikeoperate.controller; import com.cdzy.common.model.JsonResult; import com.cdzy.ebikeoperate.mapper.EbikeEcuEnterRecordsMapper; import com.cdzy.ebikeoperate.model.dto.request.*; +import com.cdzy.ebikeoperate.model.dto.response.ResComponentOutRecordInfoDto; import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; import com.cdzy.ebikeoperate.model.pojo.EbikeEcuOutRecords; import com.cdzy.ebikeoperate.model.pojo.EbikeHelmetEnterRecords; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; +import java.util.Objects; /** * 车辆部件的相关接口 @@ -107,4 +109,15 @@ public class EbikeComponentController { Page pageRecords = ebikeComponentService.ecuOutList(reqEbikeEcuOutRecordsDto); return JsonResult.success(pageRecords); } + /** + * 根据部件出库记录表主键,查询部件出库记录信息以及归还部件信息 + * + * @param componentOutRecordId 部件出库记录ID + * @return ResComponentOutRecordInfoDto + */ + @GetMapping("/getComponentOutRecordInfo") + public JsonResult getComponentOutRecordInfo(@RequestParam(name="componentOutRecordId") String componentOutRecordId) { + return ebikeComponentService.getComponentOutRecordInfo(componentOutRecordId); + + } } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java index 316aaf12..bb0ffd7c 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java @@ -30,6 +30,11 @@ public class ReqComponentEnterRecordDto { */ private String owningRegion; + /** + * 关联出库记录Id 表示归还记录 + */ + private String componentOutRecordId; + /** * 部件类型ID,表示部件的类别(如电池、ECU等,部件的编号)。 */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentOutRecordDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentOutRecordDto.java index 2d261aa3..db911e27 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentOutRecordDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentOutRecordDto.java @@ -24,7 +24,7 @@ public class ReqComponentOutRecordDto { private String componentOutRecordId; /** - * 所属区域,表示设备部件入库的区域。 + * 所属区域,表示设备部件出库的区域。 */ private String owningRegion; @@ -47,22 +47,22 @@ public class ReqComponentOutRecordDto { */ private Integer enterQuantity; /** - * 入库类型:0或空 表示暂存,1 表示入库。 + * 入库类型:0或空 表示暂存,1 表示出库。 */ private Integer stockInType; /** - * 中控信息列表,包含所有ECU部件的入库记录。 + * 中控信息列表,包含所有ECU部件的出库记录。 */ private List ebikeEcuOutRecords; /** - * 头盔信息列表,包含所有头盔部件的入库记录。 + * 头盔信息列表,包含所有头盔部件的出库记录。 */ private List ebikeHelmetOutRecords; /** - * 电池信息列表,包含所有电池部件的入库记录。 + * 电池信息列表,包含所有电池部件的出库记录。 */ private List ebikeBatteryOutRecords; } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java new file mode 100644 index 00000000..ed8382c0 --- /dev/null +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java @@ -0,0 +1,67 @@ +package com.cdzy.ebikeoperate.model.dto.response; + +import com.cdzy.ebikeoperate.model.pojo.*; +import com.mybatisflex.annotation.Id; + +import java.util.List; + +public class ResComponentOutRecordInfoDto { + + /** + * ID + */ + @Id + private String componentOutRecordId; + /** + * 组织id(运营商id + */ + private Long orgId; + + /** + * 所属区域 + */ + private String owningRegion; + /** + * 部件类型 + */ + private String componentType; + + /** + * 出库数量 + */ + private Integer outQuantity; + + /** + * 原部件处理方案 + */ + private String oldComponentHandleOption; + /** + * 中控信息列表,包含所有ECU部件的出库记录。 + */ + private List ebikeEcuOutRecords; + + /** + * 头盔信息列表,包含所有头盔部件的出库记录。 + */ + private List ebikeHelmetOutRecords; + + /** + * 电池信息列表,包含所有电池部件的出库记录。 + */ + private List ebikeBatteryOutRecords; + /** + * 中控信息列表,包含所有ECU部件的归还记录。 + */ + private List ebikeEcuEnterRecords; + + /** + * 头盔信息列表,包含所有头盔部件的归还记录。 + */ + private List ebikeHelmetEnterRecords; + + /** + * 电池信息列表,包含所有电池部件的归还记录。 + */ + private List ebikeBatteryEnterRecords; + +} diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentEnterRecords.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentEnterRecords.java index e80ad990..21381c2b 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentEnterRecords.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentEnterRecords.java @@ -41,6 +41,10 @@ public class EbikeComponentEnterRecords implements Serializable { */ private Long orgId; + /** + * 关联出库记录Id 表示归还记录 + */ + private String componentOutRecordId; /** * 所属区域 */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java index b9475cbc..647b015c 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeComponentService.java @@ -2,6 +2,7 @@ package com.cdzy.ebikeoperate.service; import com.cdzy.common.model.JsonResult; import com.cdzy.ebikeoperate.model.dto.request.*; +import com.cdzy.ebikeoperate.model.dto.response.ResComponentOutRecordInfoDto; import com.cdzy.ebikeoperate.model.pojo.EbikeEcuEnterRecords; import com.cdzy.ebikeoperate.model.pojo.EbikeEcuOutRecords; import com.cdzy.ebikeoperate.model.pojo.EbikeHelmetEnterRecords; @@ -74,4 +75,11 @@ public interface EbikeComponentService { */ Page ecuOutList(ReqEbikeEcuOutRecordsDto reqEbikeEcuOutRecordsDto); + /** + * 根据部件出库记录表主键,查询部件出库记录信息以及归还部件信息 + * + * @param componentOutRecordId 部件出库记录ID + * @return ResComponentOutRecordInfoDto + */ + JsonResult getComponentOutRecordInfo(String componentOutRecordId); } \ No newline at end of file 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 08278a1b..b7b71401 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 @@ -6,6 +6,7 @@ import com.cdzy.common.model.JsonResult; import com.cdzy.ebikeoperate.enums.ComponentType; import com.cdzy.ebikeoperate.mapper.*; import com.cdzy.ebikeoperate.model.dto.request.*; +import com.cdzy.ebikeoperate.model.dto.response.ResComponentOutRecordInfoDto; import com.cdzy.ebikeoperate.model.pojo.*; import com.cdzy.ebikeoperate.service.EbikeComponentService; import com.ebike.feign.clients.StaffFeignClient; @@ -19,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeEcuEnterRecordsTableDef.EBIKE_ECU_ENTER_RECORDS; import static com.cdzy.ebikeoperate.model.pojo.table.EbikeEcuOutRecordsTableDef.EBIKE_ECU_OUT_RECORDS; @@ -143,6 +145,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentEnterRecords.setOrgId(orgId); ebikeComponentEnterRecords.setComponentType(params.getComponentType()); ebikeComponentEnterRecords.setEnterQuantity(params.getEnterQuantity()); + ebikeComponentEnterRecords.setComponentOutRecordId(params.getComponentOutRecordId()); ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); ebikeComponentEnterRecords.setState(stockInType == 1 ? "1" : "0"); // 暂存为 0 入库为1 return ebikeComponentEnterRecords; @@ -232,9 +235,9 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { //入库记录更新数量 type 1 入库 2 出库 private void updateInventoryCount(EbikeComponentTypeInfo ebikeComponentTypeInfo, Long orgId, int size, Integer type) { - QueryWrapper query1 = new QueryWrapper(); - query1.eq("code", ebikeComponentTypeInfo.getId()); - EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); + QueryWrapper query = new QueryWrapper(); + query.eq("code", ebikeComponentTypeInfo.getId()); + EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query); if (ebikeComponentInventorycount == null) { ebikeComponentInventorycount = new EbikeComponentInventorycount(); ebikeComponentInventorycount.setOrgId(orgId); @@ -243,7 +246,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); - ebikeComponentInventorycount.setCount(size); ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); } else { if (type == 1) {//入库 @@ -413,7 +415,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { Integer count = ebikeComponentInventorycount.getCount(); String name = ebikeComponentInventorycount.getName(); // String brand = ebikeComponentInventorycount.getBrand(); - if (count < outQuantity) { + if (stockInType ==1 && count < outQuantity) { return JsonResult.failed(String.format("%s 的库存数量不足!剩余数量:%s", name, count)); } // 获取或新增部件记录 @@ -631,18 +633,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { int size = ebikeEcuOutRecords.size(); updateOtherOutComponentStock(componentType, size); } - - public StaffFeign getStaffFeignInfo() { - String tokenValue = StpUtil.getTokenValue(); - // 调用 Feign 客户端获取用户信息 - JsonResult result = staffFeignClient.getInfoByToken(tokenValue); - // 判断返回码,若失败则抛出异常 - if (result.getCode() != Code.SUCCESS) { - throw new RuntimeException("获取用户信息失败"); - } - // 返回获取到的 StaffFeign 数据 - return result.getData(); - } /** * 分页查询Ecu入库记录。 * @@ -673,6 +663,30 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { Page page = reqEbikeEcuOutRecordsDto.getPageParam().getPage(); return ebikeEcuOutRecordsMapper.paginate(page, query); } + /** + * 根据部件出库记录表主键,查询部件出库记录信息以及归还部件信息 + * + * @param componentOutRecordId 部件出库记录ID + * @return ResComponentOutRecordInfoDto + */ + @Override + @Transactional + public JsonResult getComponentOutRecordInfo(String componentOutRecordId) { + QueryWrapper query = new QueryWrapper(); + ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto(); + return JsonResult.success(resComponentOutRecordInfoDto); + } + public StaffFeign getStaffFeignInfo() { + String tokenValue = StpUtil.getTokenValue(); + // 调用 Feign 客户端获取用户信息 + JsonResult result = staffFeignClient.getInfoByToken(tokenValue); + // 判断返回码,若失败则抛出异常 + if (result.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取用户信息失败"); + } + // 返回获取到的 StaffFeign 数据 + return result.getData(); + } } From 18ab5ec446dba843f7d7232bd606621f56355f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 15:38:33 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=BF=85=E4=BC=A0=20=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeComponentController.java | 14 +++--- .../ResComponentOutRecordInfoDto.java | 2 + .../impl/EbikeComponentServiceImpl.java | 45 +++++++++++++++++++ 3 files changed, 55 insertions(+), 6 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 12f34d4a..8d469ed9 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,10 @@ import com.cdzy.ebikeoperate.model.pojo.EbikeHelmetEnterRecords; import com.cdzy.ebikeoperate.service.EbikeBikeQrcodeService; import com.cdzy.ebikeoperate.service.EbikeComponentService; import com.mybatisflex.core.paginate.Page; +import jakarta.validation.constraints.Null; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Map; @@ -44,7 +47,7 @@ public class EbikeComponentController { * @return */ @GetMapping("/invalidateDevicePart") - public JsonResult invalidateDevicePart(@RequestParam(name="componentEnterRecordId")String componentEnterRecordId) { + public JsonResult invalidateDevicePart(@RequestParam(name="componentEnterRecordId")@NotNull String componentEnterRecordId) { return ebikeComponentService.invalidateDevicePart(componentEnterRecordId); } /** @@ -53,7 +56,7 @@ public class EbikeComponentController { * @return */ @GetMapping("/cancelDevicePart") - public JsonResult cancelDevicePart(@RequestParam(name = "componentEnterRecordId") String componentEnterRecordId) { + public JsonResult cancelDevicePart(@RequestParam(name = "componentEnterRecordId")@NotNull String componentEnterRecordId) { return ebikeComponentService.cancelDevicePart(componentEnterRecordId); } @@ -73,7 +76,7 @@ public class EbikeComponentController { * @return */ @GetMapping("/cancelOutDevicePart") - public JsonResult cancelOutDevicePart(@RequestParam(name = "componentOutRecordId") String componentOutRecordId) { + public JsonResult cancelOutDevicePart(@RequestParam(name = "componentOutRecordId")@NotNull String componentOutRecordId) { return ebikeComponentService.cancelOutDevicePart(componentOutRecordId); } /** @@ -82,7 +85,7 @@ public class EbikeComponentController { * @return */ @GetMapping("/invalidateOutDevicePart") - public JsonResult invalidateOutDevicePart(@RequestParam(name="componentOutRecordId")String componentOutRecordId) { + public JsonResult invalidateOutDevicePart(@RequestParam(name="componentOutRecordId")@NotNull String componentOutRecordId) { return ebikeComponentService.invalidateOutDevicePart(componentOutRecordId); } @@ -116,8 +119,7 @@ public class EbikeComponentController { * @return ResComponentOutRecordInfoDto */ @GetMapping("/getComponentOutRecordInfo") - public JsonResult getComponentOutRecordInfo(@RequestParam(name="componentOutRecordId") String componentOutRecordId) { + public JsonResult getComponentOutRecordInfo(@RequestParam(name="componentOutRecordId") @NotNull String componentOutRecordId) { return ebikeComponentService.getComponentOutRecordInfo(componentOutRecordId); - } } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java index ed8382c0..41f35651 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java @@ -2,9 +2,11 @@ package com.cdzy.ebikeoperate.model.dto.response; import com.cdzy.ebikeoperate.model.pojo.*; import com.mybatisflex.annotation.Id; +import lombok.Data; import java.util.List; +@Data public class ResComponentOutRecordInfoDto { /** 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 b7b71401..dc7de1de 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 @@ -14,6 +14,7 @@ import com.ebike.feign.model.rsp.StaffFeign; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -674,6 +675,50 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { public JsonResult getComponentOutRecordInfo(String componentOutRecordId) { QueryWrapper query = new QueryWrapper(); ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto(); + query.eq("component_out_record_id", componentOutRecordId); + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneByQuery(query); + BeanUtils.copyProperties(ebikeComponentOutRecords, resComponentOutRecordInfoDto); + String componentType = ebikeComponentOutRecords.getComponentType(); + ComponentType componentTypeEnum = ComponentType.fromCode(componentType); + switch (componentTypeEnum) { + case BATTERY: // 电池 + List ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeBatteryOutRecords(ebikeBatteryOutRecords); + break; + case HELMET: // 头盔 + List ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeHelmetOutRecords(ebikeHelmetOutRecords); + break; + case ECU: // 中控 + List ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeEcuOutRecords(ebikeEcuOutRecords); + break; + } + //查询是否存在规划记录 + EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); + if(ebikeComponentEnterRecords!=null){ + String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId(); + query = new QueryWrapper(); + query.eq("component_enter_record_id", componentEnterRecordId); + String componentEnterType = ebikeComponentEnterRecords.getComponentType(); + ComponentType componentTypeEnumEnter = ComponentType.fromCode(componentEnterType); + switch (componentTypeEnumEnter) { + case BATTERY: // 电池 + List ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeBatteryEnterRecords(ebikeBatteryEnterRecords); + break; + case HELMET: // 头盔 + List ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeHelmetEnterRecords(ebikeHelmetEnterRecords); + break; + case ECU: // 中控 + List ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); + resComponentOutRecordInfoDto.setEbikeEcuEnterRecords(ebikeEcuEnterRecords); + break; + } + } + + return JsonResult.success(resComponentOutRecordInfoDto); } public StaffFeign getStaffFeignInfo() { From 031bbdd41a0a6adab6d8ecfed740f1b30535cf6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 16:07:59 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=AD=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/EbikeComponentServiceImpl.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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 dc7de1de..5892a243 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 @@ -425,19 +425,19 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { String componentOutRecordId = ebikeComponentOutRecords.getComponentOutRecordId(); - if (params.getEbikeEcuOutRecords().size() > 0) { + if (params.getEbikeEcuOutRecords()!=null && !params.getEbikeEcuOutRecords().isEmpty()) { // 删除原有的ECU入库记录并保存新的记录 deleteAndInsertEcuOutRecords(componentOutRecordId, params.getEbikeEcuOutRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuOutRecords().size(), 2); } - } else if (params.getEbikeBatteryOutRecords().size() > 0) { + } else if (params.getEbikeBatteryOutRecords()!=null && !params.getEbikeBatteryOutRecords().isEmpty()) { // 删除原有的电池入库记录并保存新的记录 deleteAndInsertBatteryOutRecords(componentOutRecordId, params.getEbikeBatteryOutRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryOutRecords().size(), 2); } - } else if (params.getEbikeHelmetOutRecords().size() > 0) { + } else if (params.getEbikeHelmetOutRecords()!=null && !params.getEbikeHelmetOutRecords().isEmpty()) { // 删除原有的头盔入库记录并保存新的记录 deleteAndInsertHelmetOutRecords(componentOutRecordId, params.getEbikeHelmetOutRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId); if (stockInType == 1) { @@ -717,8 +717,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { break; } } - - return JsonResult.success(resComponentOutRecordInfoDto); } public StaffFeign getStaffFeignInfo() { From c45319b5255706ae5775a0116019964847fb9e9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 16:23:21 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0=20?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=AD=97=E6=AE=B5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/dto/response/ResComponentOutRecordInfoDto.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java index 41f35651..90f9dffd 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/response/ResComponentOutRecordInfoDto.java @@ -33,6 +33,11 @@ public class ResComponentOutRecordInfoDto { */ private Integer outQuantity; + /** + * 状态 + */ + private String state; + /** * 原部件处理方案 */ From 6d84c3100f8679ab6afc15a000ba5d6406ef6255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 16:43:44 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EbikeComponentServiceImpl.java | 128 +++++++++++------- 1 file changed, 82 insertions(+), 46 deletions(-) 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 5892a243..df8cffb8 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 @@ -111,6 +111,13 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { updateInventoryCount(ebikeComponentTypeInfo, orgId, enterQuantity, 1); } } + String componentOutRecordId = params.getComponentOutRecordId(); + if(componentOutRecordId != null && !componentOutRecordId.isEmpty()){ + // 更新出库记录状态为 已归还 + EbikeComponentOutRecords ebikeComponentOutRecords = ebikeComponentOutRecordsMapper.selectOneById(componentOutRecordId); + ebikeComponentOutRecords.setState("2"); + ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords); + } return JsonResult.success("", componentEnterRecordId); } @@ -408,16 +415,20 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { /** * 验证仓库数量是否足够 */ - Integer outQuantity = params.getOutQuantity();//选择的出库数量 - //查看仓库剩余部件数量 + Integer outQuantity = params.getOutQuantity(); // 选择的出库数量 + // 查看仓库剩余部件数量 QueryWrapper query = new QueryWrapper(); query.eq("code", params.getComponentType()); EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query); - Integer count = ebikeComponentInventorycount.getCount(); - String name = ebikeComponentInventorycount.getName(); -// String brand = ebikeComponentInventorycount.getBrand(); - if (stockInType ==1 && count < outQuantity) { - return JsonResult.failed(String.format("%s 的库存数量不足!剩余数量:%s", name, count)); + // 如果查询结果为空,返回错误信息 + if (ebikeComponentInventorycount == null) { + return JsonResult.failed("未找到相应的部件库存信息"); + } + Integer count = ebikeComponentInventorycount.getCount(); // 获取剩余数量 + String name = ebikeComponentInventorycount.getName(); // 获取部件名称 + // 判断库存是否足够 + if (stockInType == 1 && count < outQuantity) { + return JsonResult.failed(String.format("%s 的库存数量不足!剩余数量:%d", name, count)); } // 获取或新增部件记录 EbikeComponentOutRecords ebikeComponentOutRecords = buildOutRecord(params, ebikeComponentTypeInfo, stockInType, orgId); @@ -671,54 +682,79 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { * @return ResComponentOutRecordInfoDto */ @Override - @Transactional public JsonResult getComponentOutRecordInfo(String componentOutRecordId) { + // 创建查询条件 QueryWrapper query = new QueryWrapper(); - ResComponentOutRecordInfoDto resComponentOutRecordInfoDto = new ResComponentOutRecordInfoDto(); 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); - String componentType = ebikeComponentOutRecords.getComponentType(); - ComponentType componentTypeEnum = ComponentType.fromCode(componentType); - switch (componentTypeEnum) { - case BATTERY: // 电池 - List ebikeBatteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeBatteryOutRecords(ebikeBatteryOutRecords); - break; - case HELMET: // 头盔 - List ebikeHelmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeHelmetOutRecords(ebikeHelmetOutRecords); - break; - case ECU: // 中控 - List ebikeEcuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeEcuOutRecords(ebikeEcuOutRecords); - break; - } - //查询是否存在规划记录 + + // 根据组件类型填充对应的出库记录 + ComponentType componentTypeEnum = ComponentType.fromCode(ebikeComponentOutRecords.getComponentType()); + populateOutRecords(resComponentOutRecordInfoDto, query, componentTypeEnum); + + // 查询是否存在归还记录,如果存在,则填充归还记录 EbikeComponentEnterRecords ebikeComponentEnterRecords = ebikeComponentEnterRecordsMapper.selectOneByQuery(query); - if(ebikeComponentEnterRecords!=null){ - String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId(); - query = new QueryWrapper(); - query.eq("component_enter_record_id", componentEnterRecordId); - String componentEnterType = ebikeComponentEnterRecords.getComponentType(); - ComponentType componentTypeEnumEnter = ComponentType.fromCode(componentEnterType); - switch (componentTypeEnumEnter) { - case BATTERY: // 电池 - List ebikeBatteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeBatteryEnterRecords(ebikeBatteryEnterRecords); - break; - case HELMET: // 头盔 - List ebikeHelmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeHelmetEnterRecords(ebikeHelmetEnterRecords); - break; - case ECU: // 中控 - List ebikeEcuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); - resComponentOutRecordInfoDto.setEbikeEcuEnterRecords(ebikeEcuEnterRecords); - break; - } + if (ebikeComponentEnterRecords != null) { + populateEnterRecords(resComponentOutRecordInfoDto, ebikeComponentEnterRecords); } + return JsonResult.success(resComponentOutRecordInfoDto); } + + // 根据组件类型填充出库记录 + private void populateOutRecords(ResComponentOutRecordInfoDto dto, QueryWrapper query, ComponentType componentTypeEnum) { + switch (componentTypeEnum) { + case BATTERY: // 电池 + List batteryOutRecords = ebikeBatteryOutRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeBatteryOutRecords(batteryOutRecords); + break; + case HELMET: // 头盔 + List helmetOutRecords = ebikeHelmetOutRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeHelmetOutRecords(helmetOutRecords); + break; + case ECU: // 中控 + List ecuOutRecords = ebikeEcuOutRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeEcuOutRecords(ecuOutRecords); + break; + default: + break; + } + } + + // 根据归还记录填充相应的归还记录 + private void populateEnterRecords(ResComponentOutRecordInfoDto dto, EbikeComponentEnterRecords enterRecords) { + QueryWrapper query = new QueryWrapper(); + query.eq("component_enter_record_id", enterRecords.getComponentEnterRecordId()); + + // 获取归还记录对应的组件类型 + ComponentType componentTypeEnumEnter = ComponentType.fromCode(enterRecords.getComponentType()); + switch (componentTypeEnumEnter) { + case BATTERY: // 电池 + List batteryEnterRecords = ebikeBatteryEnterRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeBatteryEnterRecords(batteryEnterRecords); + break; + case HELMET: // 头盔 + List helmetEnterRecords = ebikeHelmetEnterRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeHelmetEnterRecords(helmetEnterRecords); + break; + case ECU: // 中控 + List ecuEnterRecords = ebikeEcuEnterRecordsMapper.selectListWithRelationsByQuery(query); + dto.setEbikeEcuEnterRecords(ecuEnterRecords); + break; + default: + break; + } + } + public StaffFeign getStaffFeignInfo() { String tokenValue = StpUtil.getTokenValue(); // 调用 Feign 客户端获取用户信息 From ac6e269e3f8e39438413251edf93b811fa6b5542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 17:21:06 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/ReqComponentEnterRecordDto.java | 4 ++++ .../model/pojo/EbikeComponentInventorycount.java | 4 +++- .../service/impl/EbikeComponentServiceImpl.java | 14 +++++++------- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java index bb0ffd7c..5c5ce99a 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java @@ -50,6 +50,10 @@ public class ReqComponentEnterRecordDto { */ private Integer stockInType; + /** + * 单价 + */ + private Double price; /** * 中控信息列表,包含所有ECU部件的入库记录。 */ diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java index c785cf71..865e09f6 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/pojo/EbikeComponentInventorycount.java @@ -1,5 +1,6 @@ package com.cdzy.ebikeoperate.model.pojo; +import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.Table; import java.io.Serializable; @@ -57,7 +58,8 @@ public class EbikeComponentInventorycount implements Serializable { /** * 部件数量 */ - private Integer count; + @Column(onInsertValue = "0") + private long itemCount; /** * 单位 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 df8cffb8..c5b37c8a 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 @@ -79,7 +79,6 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { String userId = getStaffId(); // 获取当前操作用户ID Long orgId = getOrgId(); // 获取当前操作用户所在组织ID EbikeComponentTypeInfo ebikeComponentTypeInfo = getComponentTypeInfo(params.getComponentType()); // 获取部件信息 - // 获取或新增部件记录 EbikeComponentEnterRecords ebikeComponentEnterRecords = buildEnterRecord(params, ebikeComponentTypeInfo, stockInType, orgId); saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId(), userId); @@ -154,7 +153,8 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentEnterRecords.setComponentType(params.getComponentType()); ebikeComponentEnterRecords.setEnterQuantity(params.getEnterQuantity()); ebikeComponentEnterRecords.setComponentOutRecordId(params.getComponentOutRecordId()); - ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); +// ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); + ebikeComponentEnterRecords.setComponentPrice(params.getPrice()); ebikeComponentEnterRecords.setState(stockInType == 1 ? "1" : "0"); // 暂存为 0 入库为1 return ebikeComponentEnterRecords; } @@ -257,9 +257,9 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); } else { if (type == 1) {//入库 - ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() + size); + ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() + size); } else {//出库 - ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() - size); + ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size); } ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); } @@ -376,7 +376,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { query1.eq("code", componentType); EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); if (ebikeComponentInventorycount != null) { - ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() - size); + ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() - size); ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); } } @@ -393,7 +393,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { query1.eq("code", componentType); EbikeComponentInventorycount ebikeComponentInventorycount = ebikeComponentInventorycountMapper.selectOneByQuery(query1); if (ebikeComponentInventorycount != null) { - ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() + size); + ebikeComponentInventorycount.setItemCount(ebikeComponentInventorycount.getItemCount() + size); ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount); } } @@ -424,7 +424,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { if (ebikeComponentInventorycount == null) { return JsonResult.failed("未找到相应的部件库存信息"); } - Integer count = ebikeComponentInventorycount.getCount(); // 获取剩余数量 + long count = ebikeComponentInventorycount.getItemCount(); // 获取剩余数量 String name = ebikeComponentInventorycount.getName(); // 获取部件名称 // 判断库存是否足够 if (stockInType == 1 && count < outQuantity) { From 28341954173785b5255a0f124a960cb1aac6f62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 17:29:39 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E4=BB=B6?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8F=82=E6=95=B0=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/dto/request/ReqComponentEnterRecordDto.java | 2 +- .../ebikeoperate/service/impl/EbikeComponentServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java index 5c5ce99a..9952d322 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqComponentEnterRecordDto.java @@ -53,7 +53,7 @@ public class ReqComponentEnterRecordDto { /** * 单价 */ - private Double price; + private Double componentPrice; /** * 中控信息列表,包含所有ECU部件的入库记录。 */ 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 c5b37c8a..5bdab904 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 @@ -154,7 +154,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentEnterRecords.setEnterQuantity(params.getEnterQuantity()); ebikeComponentEnterRecords.setComponentOutRecordId(params.getComponentOutRecordId()); // ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice()); - ebikeComponentEnterRecords.setComponentPrice(params.getPrice()); + ebikeComponentEnterRecords.setComponentPrice(params.getComponentPrice()); ebikeComponentEnterRecords.setState(stockInType == 1 ? "1" : "0"); // 暂存为 0 入库为1 return ebikeComponentEnterRecords; } From 54188dd39fdc3f0fd57dc639d94cf5f0ccdbb559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9C=B1?= <2671189764@qq.com> Date: Mon, 26 May 2025 18:05:20 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=83=A8=E4=BB=B6=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ebikeoperate/service/impl/EbikeComponentServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 5bdab904..20d66470 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 @@ -254,6 +254,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentInventorycount.setBrand(ebikeComponentTypeInfo.getBrand()); ebikeComponentInventorycount.setUnit(ebikeComponentTypeInfo.getUnit()); ebikeComponentInventorycount.setPrice(ebikeComponentTypeInfo.getPrice()); + ebikeComponentInventorycount.setItemCount(size); ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount); } else { if (type == 1) {//入库 From 37050662ec4b519b85054e668d4e0ba3c90092a2 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 27 May 2025 09:04:40 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=94=9F=E6=88=90=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=86=85=E5=AE=B9=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdzy/ebikeoperate/utils/QRGenUtil.java | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java index fb95223a..59fb07d5 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java @@ -4,6 +4,10 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import net.glxn.qrgen.core.image.ImageType; import net.glxn.qrgen.javase.QRCode; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Base64; @@ -18,17 +22,48 @@ public class QRGenUtil { /** * 生成二维码并返回Base64编码 + *

增加内容文字 * * @param content 二维码内容 * @return Base64编码的二维码 */ public static String generateQRCodeBase64(String content) { - try (ByteArrayOutputStream stream = QRCode.from(content) - .withSize(300, 300) // 尺寸 + // 1. 生成基础二维码 + try (ByteArrayOutputStream qrStream = QRCode.from(content) + .withSize(300, 300) + .withCharset("UTF-8") .withErrorCorrection(ErrorCorrectionLevel.H) // 纠错等级(H为最高) .to(ImageType.PNG) // 输出格式 .stream()) { + + // 2. 将二维码转换为 BufferedImage + ByteArrayInputStream inputStream = new ByteArrayInputStream(qrStream.toByteArray()); + BufferedImage qrImage = ImageIO.read(inputStream); + + // 3. 创建新 BufferedImage 并绘制文字 + BufferedImage finalImage = new BufferedImage( + qrImage.getWidth(), qrImage.getHeight()+ 20, // 增加文字区域高度, + BufferedImage.TYPE_INT_ARGB + ); + Graphics2D g2d = finalImage.createGraphics(); + g2d.drawImage(qrImage, 0, 0, null); + + // 设置文字样式 + g2d.setFont(new Font("Arial", Font.BOLD, 20)); + g2d.setColor(Color.BLACK); + + // 计算文字位置(底部居中) + int textWidth = g2d.getFontMetrics().stringWidth(content); + int x = (qrImage.getWidth() - textWidth) / 2; + int y = qrImage.getHeight() - 2; // 底部留白 + + // 添加文字说明 + g2d.drawString(content, x, y); + g2d.dispose(); + // 使用 Java 8+ 的 Base64 编码(避免自动换行问题) + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ImageIO.write(finalImage, "PNG", stream); return Base64.getEncoder().encodeToString(stream.toByteArray()); } catch (Exception e) { throw new RuntimeException("生成二维码失败", e); @@ -36,7 +71,7 @@ public class QRGenUtil { } //public static void main(String[] args) { - // String content = "B726500590095"; // 二维码内容 + // String content = "B72650"; // 二维码内容 // String base64 = generateQRCodeBase64(content); // System.out.println("Base64 二维码: " + base64); //} From db94865659c0546e80c1b1d6bca14500faca2753 Mon Sep 17 00:00:00 2001 From: dzl <863620989@qq.com> Date: Tue, 27 May 2025 09:57:26 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ebikeoperate/service/impl/EbikeComponentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 20d66470..dd92819d 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 @@ -484,7 +484,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService { ebikeComponentOutRecordsMapper.insert(ebikeComponentOutRecords); } else { // 编辑或新增 QueryWrapper query = new QueryWrapper(); - query.eq("component_enter_record_id", componentEnterRecordId); + query.eq("component_out_record_id", componentEnterRecordId); long count = ebikeComponentOutRecordsMapper.selectCountByQuery(query); if (count > 0) { ebikeComponentOutRecords.setComponentOutRecordId(componentEnterRecordId); From 5c4c7e74ff87ed72a2631c352afd512c9384a8be Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 27 May 2025 10:53:44 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=94=9F=E6=88=90=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=86=85=E5=AE=B9=E6=96=87=E5=AD=97=EF=BC=9B=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E4=BA=8C=E7=BB=B4=E7=A0=81=E5=86=85=E5=AE=B9=E4=B8=8E?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=9A=84=E6=96=87=E5=AD=97=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E6=A0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeOperateSystemInfoController.java | 4 ++-- .../java/com/cdzy/ebikeoperate/utils/QRGenUtil.java | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java index dee73cc0..0fea2ecf 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java @@ -167,11 +167,11 @@ public class EbikeOperateSystemInfoController { * @return */ @PostMapping("ebikeQrCodeGenerate") - public JsonResult ebikeQrGenerate(@RequestParam(name = "content") String content) { + public JsonResult ebikeQrGenerate(@RequestParam(name = "content") String content, @RequestParam(name = "text") String text) { if (content == null || content.isEmpty()) { return JsonResult.failed("二维码内容不能为空"); } - return JsonResult.success(QRGenUtil.generateQRCodeBase64(content)); + return JsonResult.success(QRGenUtil.generateQRCodeBase64(content, text)); } /** diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java index 59fb07d5..de8a40b0 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/utils/QRGenUtil.java @@ -25,9 +25,10 @@ public class QRGenUtil { *

增加内容文字 * * @param content 二维码内容 + * @param text 文字内容 * @return Base64编码的二维码 */ - public static String generateQRCodeBase64(String content) { + public static String generateQRCodeBase64(String content, String text) { // 1. 生成基础二维码 try (ByteArrayOutputStream qrStream = QRCode.from(content) .withSize(300, 300) @@ -35,6 +36,9 @@ public class QRGenUtil { .withErrorCorrection(ErrorCorrectionLevel.H) // 纠错等级(H为最高) .to(ImageType.PNG) // 输出格式 .stream()) { + if(text == null || text.isEmpty()){ + return Base64.getEncoder().encodeToString(qrStream.toByteArray()); + } // 2. 将二维码转换为 BufferedImage ByteArrayInputStream inputStream = new ByteArrayInputStream(qrStream.toByteArray()); @@ -53,12 +57,12 @@ public class QRGenUtil { g2d.setColor(Color.BLACK); // 计算文字位置(底部居中) - int textWidth = g2d.getFontMetrics().stringWidth(content); + int textWidth = g2d.getFontMetrics().stringWidth(text); int x = (qrImage.getWidth() - textWidth) / 2; int y = qrImage.getHeight() - 2; // 底部留白 // 添加文字说明 - g2d.drawString(content, x, y); + g2d.drawString(text, x, y); g2d.dispose(); // 使用 Java 8+ 的 Base64 编码(避免自动换行问题) From 03dd870202b67dca0090deacc09f4ae3fedf2b54 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 27 May 2025 10:54:52 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=94=9F=E6=88=90=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=86=85=E5=AE=B9=E6=96=87=E5=AD=97=EF=BC=9B=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E4=BA=8C=E7=BB=B4=E7=A0=81=E5=86=85=E5=AE=B9=E4=B8=8E?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=9A=84=E6=96=87=E5=AD=97=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E6=A0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeOperateSystemInfoController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java index 0fea2ecf..55c2a9d9 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeOperateSystemInfoController.java @@ -164,6 +164,7 @@ public class EbikeOperateSystemInfoController { /** * 生成二维码 (png图像base64串)。 * @param content 二维码内容 + * @param text 打印文字内容 * @return */ @PostMapping("ebikeQrCodeGenerate") From c6b0b2fdd66146f773439ce27b70dbbaeb59e7f9 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 27 May 2025 14:08:11 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=B0=E7=90=86?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E4=B8=AD=E7=9A=84=E5=90=84=E7=A7=8D=E9=94=AE?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E6=96=B0=E5=AE=9A=E4=B9=89=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=9A=84=E5=B8=B8=E9=87=8FURL=E3=80=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=AF=BB=E5=8F=96=EF=BC=88=E5=8E=BB=E6=8E=89?= =?UTF-8?q?URL=E9=85=8D=E7=BD=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ebikemaintenance/utils/GeoCodingUtil.java | 49 +++++++++++++------ .../com/cdzy/orders/config/WechatConfig.java | 11 +++-- .../com/cdzy/orders/uitls/WechatUtil.java | 42 +++++++--------- .../src/main/resources/application-dev.yml | 1 - 4 files changed, 58 insertions(+), 45 deletions(-) diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/utils/GeoCodingUtil.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/utils/GeoCodingUtil.java index c5e722eb..b23527ff 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/utils/GeoCodingUtil.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/utils/GeoCodingUtil.java @@ -24,12 +24,26 @@ public class GeoCodingUtil { private final static String LOCATION_TO_ADDRESS = "regeo"; private final static String ADDRESS_TO_LOCATION = "geo"; private final static String STATUS_KEY = "status"; + private final static String LONGITUDE_KEY = "lng"; + private final static String LATITUDE_KEY = "lat"; + // 结果键 高德地图webservice 为geocodes、regeocode,腾讯地图webservice为result private final static String ADDRESS_RESULT_KEY = "regeocode"; private final static String LOCATION_RESULT_KEY = "geocodes"; //private final static String RESULT_KEY = "geocodes"; // 成功状态码 高德地图webservice 为1,腾讯地图webservice为0 private final static int CODE_STATUS_SUCCESS = 1; + // 地址键 高德地图webservice 为formatted_address,腾讯地图webservice为formatted_addresses-->standard_address + //private final static String ADDRESS_KEY = "formatted_addresses"; + private final static String ADDRESS_KEY = "formatted_address"; + private final static String STANDARD_ADDRESS_KEY = "standard_address"; + // 位置键 高德地图webservice 为location,腾讯地图webservice为location + private final static String LOCATION_KEY = "location"; + // 地址详情键 高德地图webservice 为addressComponent,腾讯地图webservice为ad_info + private final static String ADDRESS_COMPONENT_KEY = "addressComponent"; + private final static String DISTRICT_KEY = "district"; + private final static String ADCODE_KEY = "adcode"; + private final static String MSG_KEY = "message"; private final String url; private final String accessKey; @@ -55,8 +69,10 @@ public class GeoCodingUtil { * @return 地址 */ public String getLocationToAddress(JSONObject location) { + //String locationStr = String.format("%f,%f", location.getDouble(LATITUDE_KEY), location.getDouble(LONGITUDE_KEY)); + String locationStr = String.format("%f,%f", location.getDouble(LONGITUDE_KEY), location.getDouble(LATITUDE_KEY)); Request request = new Request.Builder() - .url(url + "/"+LOCATION_TO_ADDRESS + "?"+"location=" + String.format("%f,%f", location.getDouble("lng"), location.getDouble("lat")) + "&key=" + accessKey) + .url(url + "/"+LOCATION_TO_ADDRESS + "?"+"location=" + locationStr + "&key=" + accessKey) .build(); try(Response response = client.newCall(request).execute()) { if(response.isSuccessful()) { @@ -64,10 +80,10 @@ public class GeoCodingUtil { String result = response.body().string(); JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject.getInteger(STATUS_KEY) == CODE_STATUS_SUCCESS) { - //return jsonObject.getJSONObject(RESULT_KEY).getJSONObject("formatted_addresses").getString("standard_address"); - return jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getString("formatted_address"); + //return jsonObject.getJSONObject(RESULT_KEY).getJSONObject(ADDRESS_KEY).getString(STANDARD_ADDRESS_KEY); + return jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getString(ADDRESS_KEY); } - logError("地址解析失败==>{}", jsonObject.getString("message")); + logError("地址解析失败==>{}", jsonObject.getString(MSG_KEY)); return null; } logError("地址解析失败==>{}", response.message()); @@ -88,8 +104,10 @@ public class GeoCodingUtil { * @return 地址 */ public JSONObject getLocationToAddressDetails(JSONObject location) { + //String locationStr = String.format("%f,%f", location.getDouble(LATITUDE_KEY), location.getDouble(LONGITUDE_KEY)); + String locationStr = String.format("%f,%f", location.getDouble(LONGITUDE_KEY), location.getDouble(LATITUDE_KEY)); Request request = new Request.Builder() - .url(url + "/"+LOCATION_TO_ADDRESS + "?location=" + String.format("%f,%f", location.getDouble("lng"), location.getDouble("lat")) + "&key=" + accessKey) + .url(url + "/"+LOCATION_TO_ADDRESS + "?location=" + locationStr + "&key=" + accessKey) .build(); try(Response response = client.newCall(request).execute()) { if(response.isSuccessful()) { @@ -98,18 +116,18 @@ public class GeoCodingUtil { JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject.getInteger(STATUS_KEY) == CODE_STATUS_SUCCESS) { JSONObject address = new JSONObject(); - //String detail = jsonObject.getJSONObject("result").getJSONObject("formatted_addresses").getString("standard_address"); - String detail = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getString("formatted_address"); + //String detail = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject(ADDRESS_KEY).getString(STANDARD_ADDRESS_KEY); + String detail = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getString(ADDRESS_KEY); address.put("detail", detail); - //String district = jsonObject.getJSONObject("result").getJSONObject("ad_info").getString("district"); - String district = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject("addressComponent").getString("district"); + //String district = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject(ADDRESS_COMPONENT_KEY).getString(DISTRICT_KEY); + String district = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject(ADDRESS_COMPONENT_KEY).getString(DISTRICT_KEY); address.put("district", district); - //String adcode = jsonObject.getJSONObject("result").getJSONObject("ad_info").getString("adcode"); - String adcode = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject("addressComponent").getString("adcode"); + //String adcode = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject(ADDRESS_COMPONENT_KEY).getString(ADCODE_KEY); + String adcode = jsonObject.getJSONObject(ADDRESS_RESULT_KEY).getJSONObject(ADDRESS_COMPONENT_KEY).getString(ADCODE_KEY); address.put("adcode", adcode); return address; } - logError("地址解析失败==>{}", jsonObject.getString("message")); + logError("地址解析失败==>{}", jsonObject.getString(MSG_KEY)); return null; } logError("地址解析失败==>{}", response.message()); @@ -139,15 +157,16 @@ public class GeoCodingUtil { String result = response.body().string(); JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject.getInteger(STATUS_KEY) == CODE_STATUS_SUCCESS) { - //return jsonObject.getJSONObject(LOCATION_RESULT_KEY).getJSONObject("location"); - String loc = jsonObject.getJSONArray(LOCATION_RESULT_KEY).getJSONObject(0).getString("location"); + // 腾讯地图webservice的位置是 JSONObject {"lat": 39.9042, "lng": 116.4074} + //return jsonObject.getJSONObject(LOCATION_RESULT_KEY).getJSONObject(LOCATION_KEY); + String loc = jsonObject.getJSONArray(LOCATION_RESULT_KEY).getJSONObject(0).getString(LOCATION_KEY); String[] locArr = loc.split(","); JSONObject location = new JSONObject(); location.put("lng", Double.valueOf(locArr[0])); location.put("lat", Double.valueOf(locArr[1])); return location; }else{ - logError("位置解析失败==>{}", jsonObject.getString("message")); + logError("位置解析失败==>{}", jsonObject.getString(MSG_KEY)); return null; } }else{ diff --git a/ebike-orders/src/main/java/com/cdzy/orders/config/WechatConfig.java b/ebike-orders/src/main/java/com/cdzy/orders/config/WechatConfig.java index 4fc04b12..1668bb54 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/config/WechatConfig.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/config/WechatConfig.java @@ -19,12 +19,13 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = "wechat") public class WechatConfig { - private String url; + /** + * 微信小程序 appId + */ private String appId; + /** + * 微信小程序 appSecret + */ private String appSecret; - @Bean - public WechatUtil wechatUtil() { - return new WechatUtil(url, appId, appSecret); - } } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/uitls/WechatUtil.java b/ebike-orders/src/main/java/com/cdzy/orders/uitls/WechatUtil.java index 8020cb15..d413f626 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/uitls/WechatUtil.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/uitls/WechatUtil.java @@ -1,10 +1,10 @@ package com.cdzy.orders.uitls; import com.alibaba.fastjson2.JSONObject; +import com.cdzy.orders.config.WechatConfig; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; +import okhttp3.*; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.stereotype.Service; @@ -12,9 +12,9 @@ import org.springframework.stereotype.Service; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; -import java.io.IOException; +import java.io.*; import java.nio.charset.StandardCharsets; -import java.security.Security; +import java.security.*; import java.util.Base64; /** @@ -27,24 +27,25 @@ import java.util.Base64; @Slf4j @Service public class WechatUtil { + /** + * 微信登录API地址 + */ + private static final String WECHAT_LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session"; - private static String url; - private static String appId; - private static String appSecret; + /** + * OkHttpClient实例 + */ private static OkHttpClient client = null; + @Resource + private WechatConfig wechatConfig; + /** * 微信工具类构造函数。 * - * @param apiUrl 微信登录API地址 - * @param appId 微信小程序ID - * @param appSecret 微信小程序密钥 */ - public WechatUtil(String apiUrl, String appId, String appSecret) { - this.url = apiUrl; - this.appId = appId; - this.appSecret = appSecret; - this.client = new OkHttpClient(); + public WechatUtil() throws IOException { + client = new OkHttpClient(); } /** @@ -55,7 +56,7 @@ public class WechatUtil { */ public JSONObject wechatAuthority(String code){ Request request = new Request.Builder() - .url(url + "?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code") + .url(WECHAT_LOGIN_URL + "?appid=" + wechatConfig.getAppId() + "&secret=" + wechatConfig.getAppSecret() + "&js_code=" + code + "&grant_type=authorization_code") .build(); try(Response response = client.newCall(request).execute()) { if(response.isSuccessful()) { @@ -108,11 +109,4 @@ public class WechatUtil { } } - //public static void main(String[] args) { - // String encryptedData = "eXzeeTDZZVYGXr1YfFxI3Z7ntaEzuFQ5DHNSSB1OEGaN4s1gxBv8/o2YIRKnyghvaCXhs+BuRZlM1mqbw/4Q+hAA9Zb0E+hzipuTHuVNEFrq7SwUZbb7WUgmrtD+9vAf/8XdHkXzs+Krybh/a7Pa7QnKx82Z1HQvP+I4cWVIhBJrhqFQX0TP2XuJ8OTliBEE+MnxGylvpqDzXxVPRA4CAQ=="; - // String sessionkey = "6bWACSG9u15Lv2YI9B5IKw=="; - // String iv = "PeEtJMMfPStNH0Pd61DB0A=="; - // String result = decryptData(encryptedData, sessionkey, iv); - // System.out.println(result); - //} } diff --git a/ebike-orders/src/main/resources/application-dev.yml b/ebike-orders/src/main/resources/application-dev.yml index 08e6a417..d88a905c 100644 --- a/ebike-orders/src/main/resources/application-dev.yml +++ b/ebike-orders/src/main/resources/application-dev.yml @@ -85,7 +85,6 @@ sa-token: # 是否输出操作日志 is-log: true wechat: - url: https://api.weixin.qq.com/sns/jscode2session appid: wx327d788d7bd6eddf app-secret: adf2539a6c26499c67b5a3829f2e05e3 minio: