This commit is contained in:
dzl 2025-05-22 09:35:06 +08:00
commit b657d014a7
24 changed files with 353 additions and 69 deletions

View File

@ -136,8 +136,6 @@ public class CustomCipherTextFilter implements GlobalFilter, Ordered {
// log.error("密文过滤器加解密错误", e);
// return Mono.empty();
return chain.filter(exchange);
} finally {
}
}
}

View File

@ -33,13 +33,13 @@ public class MqttConfig {
// 连接池参数
@Getter
private static int poolMaxTotal = 20;
private static final int poolMaxTotal = 20;
@Getter
private static int poolMaxIdle = 10;
private static final int poolMaxIdle = 10;
@Getter
private static int poolMinIdle = 5;
private static final int poolMinIdle = 5;
@Value("${mqtt.host}")
public void setHost(String host) {

View File

@ -21,11 +21,7 @@ public class EbikeUsersSever {
queryWrapper.eq("phone", username);
// queryWrapper.eq("password", password);
long l = ebikeUsersMapper.selectCountByQuery(queryWrapper);
if (l > 0) {
return true;
} else{
return false;
}
return l > 0;
}
public EbikeUsers getUserInfo (String username, String password){

View File

@ -4,6 +4,7 @@ import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeBatteryQrcodeBatchDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeBatteryQrcodeDto;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import com.cdzy.ebikeoperate.model.pojo.EbikeBatteryQrcode;
@ -103,5 +104,22 @@ public class EbikeBatteryQrcodeController {
Page<EbikeBatteryQrcode> pageRecords = ebikeBatteryQrcodeService.getPageRecords(reqEbikeBatteryQrcodeDto);
return JsonResult.success(pageRecords);
}
/**
* 根据电池编号判断电池二维码是否存在
*
* @param batteryCode 电池二维码
* @return JsonResult 包含查询结果的响应
*/
@GetMapping("/checkbatteryCodeExistence")
public JsonResult<?> checkbatteryCodeExistence(@RequestParam(name = "batteryCode") String batteryCode) {
try {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("battery_code", batteryCode);
long count = ebikeBatteryQrcodeService.count(queryWrapper);
return JsonResult.success(count);
} catch (Exception e) {
// 记录异常信息
return JsonResult.failed("查询失败,请稍后再试");
}
}
}

View File

@ -1,7 +1,8 @@
package com.cdzy.ebikeoperate.controller;
import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentEnterRecordDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentOutRecordDto;
import com.cdzy.ebikeoperate.service.EbikeBikeQrcodeService;
import com.cdzy.ebikeoperate.service.EbikeComponentService;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,12 +20,12 @@ public class EbikeComponentController {
@Autowired
EbikeComponentService ebikeComponentService;
/**
* 中控设备部件入库暂存 stockInType 1暂存2入库
* 中控设备部件入库暂存 stockInType 0或空 表示暂存1 表示入库
* @param params
* @return
*/
@PostMapping("/ecuStorageSave")
public JsonResult<?> ecuStorageSave(@RequestBody ReqDevicePartStockInDto params) {
public JsonResult<?> ecuStorageSave(@RequestBody ReqComponentEnterRecordDto params) {
return ebikeComponentService.ecuStorageSave(params);
}
@ -46,4 +47,15 @@ public class EbikeComponentController {
public JsonResult<?> cancelDevicePart(@RequestParam(name = "componentEnterRecordId") String componentEnterRecordId) {
return ebikeComponentService.cancelDevicePart(componentEnterRecordId);
}
/**
* 部件出库出库暂存 stockInType 0或空 表示暂存1 表示入库
* @param params
* @return
*/
@PostMapping("/ComponentInventoryOutbound")
public JsonResult<?> ComponentInventoryOutbound(@RequestBody ReqComponentOutRecordDto params) {
return ebikeComponentService.ComponentInventoryOutbound(params);
}
}

View File

@ -0,0 +1,28 @@
package com.cdzy.ebikeoperate.enums;
public enum ComponentType {
BATTERY("262711452730000"), // 电池
HELMET("262711452730001"), // 头盔
ECU("262711452730008"), // 中控
OTHER(""); // 其他
private final String code;
ComponentType(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static ComponentType fromCode(String code) {
for (ComponentType type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return OTHER; // 如果没有找到返回默认值 OTHER
}
}

View File

@ -10,10 +10,7 @@ import lombok.NoArgsConstructor;
import java.util.List;
/**
* 中控设备部件入库Dto
*
* 用于接收中控设备部件入库请求数据包含设备部件的基本信息及入库记录
* 支持多种类型的部件增强了类型的扩展性与可读性
* 设备部件入库Dto
*
* @author zjd
* @date 2025/5/20
@ -21,7 +18,7 @@ import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReqDevicePartStockInDto {
public class ReqComponentEnterRecordDto {
/**
* 部件记录主键若存在记录ID则传递若无则可不传

View File

@ -0,0 +1,68 @@
package com.cdzy.ebikeoperate.model.dto.request;
import com.cdzy.ebikeoperate.model.pojo.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 设备部件出库Dto
*
* @author zjd
* @date 2025/5/20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReqComponentOutRecordDto {
/**
* 部件记录主键若存在记录ID则传递若无则可不传
*/
private String componentOutRecordId;
/**
* 所属区域表示设备部件入库的区域
*/
private String owningRegion;
/**
*原部件处理方案
*/
private String oldComponentHandleOption;
/**
* 部件类型ID表示部件的类别如电池ECU等部件的编号
*/
private String componentType;
/**
* 出库数量表示该批次部件的数量
*/
private Integer outQuantity;
/**
*入库数量
*/
private Integer enterQuantity;
/**
* 入库类型0或空 表示暂存1 表示入库
*/
private Integer stockInType;
/**
* 中控信息列表包含所有ECU部件的入库记录
*/
private List<EbikeEcuOutRecords> ebikeEcuOutRecords;
/**
* 头盔信息列表包含所有头盔部件的入库记录
*/
private List<EbikeHelmetOutRecords> ebikeHelmetOutRecords;
/**
* 电池信息列表包含所有电池部件的入库记录
*/
private List<EbikeBatteryOutRecords> ebikeBatteryOutRecords;
}

View File

@ -22,7 +22,7 @@ public class ReqEbikeComponentEnterRecordsDto {
private String region;
/**
* 部件类型
*/;
*/
private String componentType;
/**
* 状态

View File

@ -22,7 +22,7 @@ public class ReqEbikeComponentOutRecordsDto {
private String region;
/**
* 部件类型
*/;
*/
private String componentType;
/**

View File

@ -22,7 +22,7 @@ public class ReqEbikeComponentProductionDto {
private String region;
/**
* 部件类型
*/;
*/
private String componentType;
/**
* 供应商

View File

@ -36,6 +36,11 @@ public class EbikeComponentEnterRecords implements Serializable {
@Id
private String componentEnterRecordId;
/**
* 组织id运营商id
*/
private Long orgId;
/**
* 所属区域
*/

View File

@ -34,6 +34,10 @@ public class EbikeComponentOutRecords implements Serializable {
*/
@Id
private String componentOutRecordId;
/**
* 组织id运营商id
*/
private Long orgId;
/**
* 所属区域

View File

@ -36,7 +36,7 @@ public class EbikeEcuOutRecords implements Serializable {
/**
* 组件出库记录ID
*/
private Integer componentOutRecordId;
private String componentOutRecordId;
/**
* 中控编码

View File

@ -1,7 +1,8 @@
package com.cdzy.ebikeoperate.service;
import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentEnterRecordDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentOutRecordDto;
import com.mybatisflex.core.service.IService;
import java.util.Map;
@ -13,12 +14,12 @@ import java.util.Map;
public interface EbikeComponentService {
/***
* 中控设备部件入库接口
/**
* 中控设备部件入库暂存 stockInType 0或空 表示暂存1 表示入库
* @param params
* @return
*/
JsonResult<?> ecuStorageSave(ReqDevicePartStockInDto params);
JsonResult<?> ecuStorageSave(ReqComponentEnterRecordDto params);
/***
* 设备部件作废接口 通用
@ -33,4 +34,11 @@ public interface EbikeComponentService {
*/
JsonResult<?> cancelDevicePart(String componentEnterRecordId);
/**
* 部件出库出库暂存 stockInType 0或空 表示暂存1 表示出库
* @param params
* @return
*/
JsonResult<?> ComponentInventoryOutbound(ReqComponentOutRecordDto params);
}

View File

@ -3,23 +3,22 @@ package com.cdzy.ebikeoperate.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.cdzy.common.enums.Code;
import com.cdzy.common.model.JsonResult;
import com.cdzy.ebikeoperate.enums.ComponentType;
import com.cdzy.ebikeoperate.mapper.*;
import com.cdzy.ebikeoperate.model.dto.request.ReqDevicePartStockInDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentEnterRecordDto;
import com.cdzy.ebikeoperate.model.dto.request.ReqComponentOutRecordDto;
import com.cdzy.ebikeoperate.model.pojo.*;
import com.cdzy.ebikeoperate.service.EbikeComponentService;
import com.cdzy.ebikeoperate.service.EbikeComponentTypeInfoService;
import com.ebike.feign.clients.StaffFeignClient;
import com.ebike.feign.model.rsp.StaffFeign;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* 部件的相关接口实现
@ -47,6 +46,14 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
private EbikeBatteryEnterRecordsMapper ebikeBatteryEnterRecordsMapper;
@Resource
private EbikeHelmetEnterRecordsMapper ebikeHelmetEnterRecordsMapper;
@Resource
private EbikeComponentOutRecordsMapper ebikeComponentOutRecordsMapper;
@Resource
private EbikeEcuOutRecordsMapper ebikeEcuOutRecordsMapper;
@Autowired
private EbikeHelmetOutRecordsMapper ebikeHelmetOutRecordsMapper;
@Autowired
private EbikeBatteryOutRecordsMapper ebikeBatteryOutRecordsMapper;
public EbikeComponentServiceImpl(EbikeEcuEnterRecordsMapper ebikeEcuEnterRecordsMapper, EbikeComponentProductionMapper ebikeComponentProductionMapper) {
@ -61,15 +68,15 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
*/
@Override
@Transactional
public JsonResult<?> ecuStorageSave(ReqDevicePartStockInDto params) {
public JsonResult<?> ecuStorageSave(ReqComponentEnterRecordDto params) {
Integer stockInType = params.getStockInType();
String userId = getStaffId(); // 获取当前操作用户ID
Long orgId = getOrgId(); // 获取当前操作用户所在组织ID
EbikeComponentTypeInfo ebikeComponentTypeInfo = getComponentTypeInfo(params.getComponentType()); // 获取部件信息
// 获取或新增部件记录
EbikeComponentEnterRecords ebikeComponentEnterRecords = buildEnterRecord(params, userId, ebikeComponentTypeInfo,stockInType);
saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId());
EbikeComponentEnterRecords ebikeComponentEnterRecords = buildEnterRecord(params, ebikeComponentTypeInfo,stockInType,orgId);
saveOrUpdateEnterRecord(ebikeComponentEnterRecords, params.getComponentEnterRecordId(), userId);
String componentEnterRecordId = ebikeComponentEnterRecords.getComponentEnterRecordId();
@ -77,25 +84,25 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
// 删除原有的ECU入库记录并保存新的记录
deleteAndInsertEcuEnterRecords(componentEnterRecordId, params.getEbikeEcuEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuEnterRecords().size());
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeEcuEnterRecords().size(),1);
}
}else if(params.getEbikeBatteryEnterRecords().size()>0){
// 删除原有的电池入库记录并保存新的记录
deleteAndInsertBatteryRecords(componentEnterRecordId, params.getEbikeBatteryEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryEnterRecords().size());
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryEnterRecords().size(),1);
}
}else if(params.getEbikeHelmetEnterRecords().size()>0){
// 删除原有的头盔入库记录并保存新的记录
deleteAndInsertHelmetEnterRecords(componentEnterRecordId, params.getEbikeHelmetEnterRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeHelmetEnterRecords().size());
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeHelmetEnterRecords().size(),1);
}
}else {
//部件数量 enterQuantity 更新部件库
Integer enterQuantity = params.getEnterQuantity();
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId,enterQuantity);
updateInventoryCount(ebikeComponentTypeInfo, orgId,enterQuantity,1);
}
}
return JsonResult.success("成功");
@ -126,20 +133,21 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
return ebikeComponentTypeInfoMapper.selectOneById(queryWrapper);
}
private EbikeComponentEnterRecords buildEnterRecord(ReqDevicePartStockInDto params, String userId, EbikeComponentTypeInfo ebikeComponentTypeInfo,Integer stockInType) {
private EbikeComponentEnterRecords buildEnterRecord(ReqComponentEnterRecordDto params, EbikeComponentTypeInfo ebikeComponentTypeInfo,Integer stockInType,Long orgId) {
EbikeComponentEnterRecords ebikeComponentEnterRecords = new EbikeComponentEnterRecords();
ebikeComponentEnterRecords.setOwningRegion(params.getOwningRegion());
ebikeComponentEnterRecords.setOrgId(orgId);
ebikeComponentEnterRecords.setComponentEnterRecordId(params.getComponentType());
ebikeComponentEnterRecords.setEnterQuantity(params.getEnterQuantity());
ebikeComponentEnterRecords.setComponentPrice(ebikeComponentTypeInfo.getPrice());
ebikeComponentEnterRecords.setCreatedUser(userId);
ebikeComponentEnterRecords.setCreatedAt(LocalDateTime.now());
ebikeComponentEnterRecords.setState(stockInType==1 ? "1":"0"); // 暂存为 0 入库为1
return ebikeComponentEnterRecords;
}
private void saveOrUpdateEnterRecord(EbikeComponentEnterRecords ebikeComponentEnterRecords, String componentEnterRecordId) {
private void saveOrUpdateEnterRecord(EbikeComponentEnterRecords ebikeComponentEnterRecords, String componentEnterRecordId,String userId) {
if (componentEnterRecordId == null) { // 新增
ebikeComponentEnterRecords.setCreatedUser(userId);
ebikeComponentEnterRecords.setCreatedAt(LocalDateTime.now());
ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords);
} else { // 编辑或新增
QueryWrapper query = new QueryWrapper();
@ -147,8 +155,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
long count = ebikeComponentEnterRecordsMapper.selectCountByQuery(query);
if (count > 0) {
ebikeComponentEnterRecords.setComponentEnterRecordId(componentEnterRecordId);
ebikeComponentEnterRecords.setCreatedUser(userId);
ebikeComponentEnterRecords.setCreatedAt(LocalDateTime.now());
ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords);
} else {
ebikeComponentEnterRecords.setUpdateUser(userId);
ebikeComponentEnterRecords.setUpdateAt(LocalDateTime.now());
ebikeComponentEnterRecordsMapper.insert(ebikeComponentEnterRecords);
}
}
@ -164,7 +176,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
record.setComponentEnterRecordId(componentEnterRecordId);
ebikeEcuEnterRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在入库时执行
saveComponentInventory(record.getEcuSn(),record.getEcuCode(), ebikeComponentTypeInfo, userId, orgId);
saveComponentInventory(record.getEcuSn(),record.getEcuCode(), ebikeComponentTypeInfo, userId, orgId,1);
}
}
}
@ -178,7 +190,7 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
record.setComponentEnterRecordId(componentEnterRecordId);
ebikeHelmetEnterRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在入库时执行
saveComponentInventory(record.getHelmetCode(),"", ebikeComponentTypeInfo, userId, orgId);
saveComponentInventory(record.getHelmetCode(),"", ebikeComponentTypeInfo, userId, orgId,1);
}
}
}
@ -193,11 +205,11 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
record.setComponentEnterRecordId(componentEnterRecordId);
ebikeBatteryEnterRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在入库时执行
saveComponentInventory(record.getBatteryCode(),"", ebikeComponentTypeInfo, userId, orgId);
saveComponentInventory(record.getBatteryCode(),"", ebikeComponentTypeInfo, userId, orgId,1);
}
}
}
private void saveComponentInventory(String ItemCode,String SerialNumber, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) {
private void saveComponentInventory(String ItemCode,String SerialNumber, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId,Integer state) {
EbikeComponentInventory ebikeComponentInventory = new EbikeComponentInventory();
ebikeComponentInventory.setItemCode(ItemCode);
ebikeComponentInventory.setSerialNumber(SerialNumber);
@ -208,11 +220,12 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ebikeComponentInventory.setBrand(ebikeComponentTypeInfo.getBrand());
ebikeComponentInventory.setLastUpdatedAt(LocalDateTime.now());
ebikeComponentInventory.setLastUpdatedUser(userId);
ebikeComponentInventory.setState(1); // 已入库
ebikeComponentInventory.setState(state); // 1 已入库 //2 已出库
ebikeComponentInventoryMapper.insert(ebikeComponentInventory);
}
private void updateInventoryCount(EbikeComponentTypeInfo ebikeComponentTypeInfo, Long orgId, int size) {
//入库记录更新数量 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);
@ -227,13 +240,15 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ebikeComponentInventorycount.setCount(size);
ebikeComponentInventorycountMapper.insert(ebikeComponentInventorycount);
} else {
ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() + size);
if(type==1){//入库
ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() + size);
}else {//出库
ebikeComponentInventorycount.setCount(ebikeComponentInventorycount.getCount() - size);
}
ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount);
}
}
/***
* 设备部件作废接口 通用
* @param componentEnterRecordId
@ -251,18 +266,19 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
//先更新记录表状态 为已作废-2
ebikeComponentEnterRecords.setState("-2");
ebikeComponentEnterRecordsMapper.update(ebikeComponentEnterRecords);
switch (componentType) {
case "262711452730000": // 电池
updateBatteryDetails(componentEnterRecordId,componentType,-2); // 找到电池编号 更新仓库明细状态 和仓库总数量
ComponentType componentTypeEnum = ComponentType.fromCode(componentType);
switch (componentTypeEnum) {
case BATTERY: // 电池
updateBatteryDetails(componentEnterRecordId, componentType, -2);
break;
case "262711452730001": // 头盔
updateHelmetDetails(componentEnterRecordId,componentType,-2); // 找到头盔编号 更新仓库明细状态 和仓库总数量
case HELMET: // 头盔
updateHelmetDetails(componentEnterRecordId, componentType, -2);
break;
case "262711452730008": // 中控
updateCentralControlDetails(componentEnterRecordId,componentType,-2); // 找到中控编号 更新仓库明细状态 和仓库总数量
case ECU: // 中控
updateCentralControlDetails(componentEnterRecordId, componentType, -2);
break;
default: // 其他
updateOtherComponentStock(componentType,enterQuantity); // 其他直接根据数量 更新仓库总数量
updateOtherComponentStock(componentType, enterQuantity);
break;
}
return JsonResult.success("成功");
@ -346,6 +362,142 @@ public class EbikeComponentServiceImpl implements EbikeComponentService {
ebikeComponentInventorycountMapper.update(ebikeComponentInventorycount);
}
}
/**
* 部件出库出库暂存 stockInType 0或空 表示暂存1 表示入库
* @param params
* @return
*/
@Override
@Transactional
public JsonResult<?> ComponentInventoryOutbound(ReqComponentOutRecordDto params) {
Integer stockInType = params.getStockInType();
String userId = getStaffId(); // 获取当前操作用户ID
Long orgId = getOrgId(); // 获取当前操作用户所在组织ID
EbikeComponentTypeInfo ebikeComponentTypeInfo = getComponentTypeInfo(params.getComponentType()); // 获取部件信息
/**
* 验证仓库数量是否足够
*/
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(count<outQuantity){
return JsonResult.failed(String.format("%s 的库存数量不足!剩余数量:%s",name, count));
}
// 获取或新增部件记录
EbikeComponentOutRecords ebikeComponentOutRecords = buildOutRecord(params,ebikeComponentTypeInfo,stockInType,orgId);
saveOrUpdateOutRecord(ebikeComponentOutRecords, params.getComponentOutRecordId(),userId);
String componentOutRecordId = ebikeComponentOutRecords.getComponentOutRecordId();
if(params.getEbikeEcuOutRecords().size()>0){
// 删除原有的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){
// 删除原有的电池入库记录并保存新的记录
deleteAndInsertBatteryOutRecords(componentOutRecordId, params.getEbikeBatteryOutRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeBatteryOutRecords().size(),2);
}
}else if(params.getEbikeHelmetOutRecords().size()>0){
// 删除原有的头盔入库记录并保存新的记录
deleteAndInsertHelmetOutRecords(componentOutRecordId, params.getEbikeHelmetOutRecords(), stockInType, ebikeComponentTypeInfo, userId, orgId);
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId, params.getEbikeHelmetOutRecords().size(),2);
}
}else {
//部件数量 enterQuantity 更新部件库
Integer enterQuantity = params.getEnterQuantity();
if (stockInType == 1) {
updateInventoryCount(ebikeComponentTypeInfo, orgId,enterQuantity,2);
}
}
return JsonResult.success("成功");
}
private EbikeComponentOutRecords buildOutRecord(ReqComponentOutRecordDto params, EbikeComponentTypeInfo ebikeComponentTypeInfo,Integer stockInType,Long orgId) {
EbikeComponentOutRecords ebikeComponentOutRecords = new EbikeComponentOutRecords();
ebikeComponentOutRecords.setOwningRegion(params.getOwningRegion());
ebikeComponentOutRecords.setOrgId(orgId);
ebikeComponentOutRecords.setComponentType(params.getComponentType());
ebikeComponentOutRecords.setOutQuantity(params.getOutQuantity());
ebikeComponentOutRecords.setOldComponentHandleOption(params.getOldComponentHandleOption());
ebikeComponentOutRecords.setEnterQuantity(params.getEnterQuantity());
ebikeComponentOutRecords.setState(stockInType==1 ? "1":"0"); // 暂存为 0 出库库为1
return ebikeComponentOutRecords;
}
private void saveOrUpdateOutRecord(EbikeComponentOutRecords ebikeComponentOutRecords, String componentEnterRecordId,String userId) {
if (componentEnterRecordId == null) { // 新增
ebikeComponentOutRecords.setCreatedUser(userId);
ebikeComponentOutRecords.setCreatedAt(LocalDateTime.now());
ebikeComponentOutRecordsMapper.insert(ebikeComponentOutRecords);
} else { // 编辑或新增
QueryWrapper query = new QueryWrapper();
query.eq("component_enter_record_id", componentEnterRecordId);
long count = ebikeComponentOutRecordsMapper.selectCountByQuery(query);
if (count > 0) {
ebikeComponentOutRecords.setComponentOutRecordId(componentEnterRecordId);
ebikeComponentOutRecords.setCreatedUser(userId);
ebikeComponentOutRecords.setCreatedAt(LocalDateTime.now());
ebikeComponentOutRecordsMapper.update(ebikeComponentOutRecords);
} else {
ebikeComponentOutRecords.setUpdateUser(userId);
ebikeComponentOutRecords.setUpdateAt(LocalDateTime.now());
ebikeComponentOutRecordsMapper.insert(ebikeComponentOutRecords);
}
}
}
private void deleteAndInsertEcuOutRecords(String componentOutRecordId, List<EbikeEcuOutRecords> outRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) {
// 删除原有的ECU入库记录
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
ebikeEcuOutRecordsMapper.deleteByQuery(query);
// 插入新的ECU入库记录
for (EbikeEcuOutRecords record : outRecords) {
record.setComponentOutRecordId(componentOutRecordId);
ebikeEcuOutRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在出库时执行
saveComponentInventory(record.getEcuSn(),record.getEcuCode(), ebikeComponentTypeInfo, userId, orgId,2);
}
}
}
private void deleteAndInsertHelmetOutRecords(String componentOutRecordId, List<EbikeHelmetOutRecords> ebikeHelmetOutRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) {
// 删除原有的头盔出库记录
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
ebikeHelmetOutRecordsMapper.deleteByQuery(query);
// 插入新的头盔出库记录
for (EbikeHelmetOutRecords record : ebikeHelmetOutRecords) {
record.setComponentOutRecordId(componentOutRecordId);
ebikeHelmetOutRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在出库时执行
saveComponentInventory(record.getHelmetCode(),"", ebikeComponentTypeInfo, userId, orgId,2);
}
}
}
private void deleteAndInsertBatteryOutRecords(String componentOutRecordId, List<EbikeBatteryOutRecords> ebikeBatteryOutRecords, Integer stockInType, EbikeComponentTypeInfo ebikeComponentTypeInfo, String userId, Long orgId) {
// 删除原有的电池出库记录
QueryWrapper query = new QueryWrapper();
query.eq("component_out_record_id", componentOutRecordId);
ebikeBatteryEnterRecordsMapper.deleteByQuery(query);
// 插入新的电池出库记录
for (EbikeBatteryOutRecords record : ebikeBatteryOutRecords) {
record.setComponentOutRecordId(componentOutRecordId);
ebikeBatteryOutRecordsMapper.insert(record);
if (stockInType == 1) { // 仅在出库时执行
saveComponentInventory(record.getBatteryCode(),"", ebikeComponentTypeInfo, userId, orgId,2);
}
}
}
public StaffFeign getStaffFeignInfo() {
String tokenValue = StpUtil.getTokenValue();
// 调用 Feign 客户端获取用户信息

View File

@ -400,7 +400,7 @@ public class RedisUtil {
* @param areaId areaId
*/
public String getPolygonFromWKT(Long suffixId,String areaId,String key) {
return "POLYGON ((" + (String)redisTemplate.opsForHash().get(key + suffixId, "vertices"+areaId)+"))";
return "POLYGON ((" + redisTemplate.opsForHash().get(key + suffixId, "vertices"+areaId) +"))";
}
/**

View File

@ -407,7 +407,7 @@ public class RedisUtil {
* @param areaId areaId
*/
public String getPolygonFromWKT(Long orgId, String areaId, String key) {
return "POLYGON ((" + (String) redisTemplate.opsForHash().get(key + orgId, "vertices" + areaId) + "))";
return "POLYGON ((" + redisTemplate.opsForHash().get(key + orgId, "vertices" + areaId) + "))";
}
/**
@ -417,7 +417,7 @@ public class RedisUtil {
* @param areaId areaId
*/
public String getPolygonFromWKT(String areaId, String key) {
return "POLYGON ((" + (String) redisTemplate.opsForHash().get(key, "vertices" + areaId) + "))";
return "POLYGON ((" + redisTemplate.opsForHash().get(key, "vertices" + areaId) + "))";
}
/**

View File

@ -80,7 +80,6 @@ public class ResApplyRefundDto {
* 骑行设备编号
*/
private String ebikeCode;
;
/**
* 骑行开始时间

View File

@ -89,7 +89,7 @@ public class ResCloseRefundDto {
/**
* 骑行设备编号
*/
private String ebikeCode;;
private String ebikeCode;
/**
* 骑行开始时间

View File

@ -84,7 +84,7 @@ public class ResHandleRefundDto {
/**
* 骑行设备编号
*/
private String ebikeCode;;
private String ebikeCode;
/**
* 骑行开始时间

View File

@ -110,7 +110,6 @@ public class ResProcessedRefundDto {
* 骑行设备编号
*/
private String ebikeCode;
;
/**
* 骑行开始时间

View File

@ -36,7 +36,7 @@ public class EbikePaymentServiceImpl extends ServiceImpl<EbikePaymentMapper, Ebi
public List<EbikePayment> getNoPayOrderByDuration(int duration) {
// trade_state 等于 NOTPAY未支付的 并且创建时间未超过duration分钟的订单
String timeFilter = String.format("%s(%s, %s(%s))<%s()", ADDTIME, EBIKE_PAYMENT.CREATE_TIME.getName(), SEC_TO_TIME
, String.valueOf(duration * 60), NOW);
, duration * 60, NOW);
QueryWrapper query = QueryWrapper.create()
.where(EBIKE_PAYMENT.TRADE_STATE.eq(Transaction.TradeStateEnum.NOTPAY.ordinal()))
.and(timeFilter);
@ -47,7 +47,7 @@ public class EbikePaymentServiceImpl extends ServiceImpl<EbikePaymentMapper, Ebi
public List<EbikePayment> getExpireOrderByDuration(int duration) {
// trade_state 等于 NOTPAY未支付的 并且创建时间超过duration分钟的订单
String timeFilter = String.format("%s(%s, %s(%s))>=%s()", ADDTIME, EBIKE_PAYMENT.CREATE_TIME.getName(), SEC_TO_TIME
, String.valueOf(duration * 60), NOW);
, duration * 60, NOW);
QueryWrapper query = QueryWrapper.create()
.where(EBIKE_PAYMENT.TRADE_STATE.eq(Transaction.TradeStateEnum.NOTPAY.ordinal()))
.and(timeFilter);

View File

@ -50,7 +50,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
public List<EbikeRefund> getNoSuccessRefundOrderByDuration(int duration) {
// trade_state 等于 PROCESSING正在退款中的 并且创建时间超过duration分钟的订单
String timeFilter = String.format("%s(%s, %s(%s))>=%s()", ADDTIME, EBIKE_REFUND.CREATE_TIME.getName(), SEC_TO_TIME
, String.valueOf(duration * 60), NOW);
, duration * 60, NOW);
QueryWrapper query = QueryWrapper.create()
.where(EBIKE_REFUND.STATUS.eq(Status.PROCESSING.ordinal()))
.and(timeFilter);