Merge branch 'main' of http://47.109.71.130:3000/attiya/ebike-share
This commit is contained in:
commit
b657d014a7
@ -136,8 +136,6 @@ public class CustomCipherTextFilter implements GlobalFilter, Ordered {
|
||||
// log.error("密文过滤器加解密错误", e);
|
||||
// return Mono.empty();
|
||||
return chain.filter(exchange);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -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("查询失败,请稍后再试");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@ -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则传递,若无则可不传。
|
||||
@ -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;
|
||||
}
|
||||
@ -22,7 +22,7 @@ public class ReqEbikeComponentEnterRecordsDto {
|
||||
private String region;
|
||||
/**
|
||||
* 部件类型
|
||||
*/;
|
||||
*/
|
||||
private String componentType;
|
||||
/**
|
||||
* 状态
|
||||
|
||||
@ -22,7 +22,7 @@ public class ReqEbikeComponentOutRecordsDto {
|
||||
private String region;
|
||||
/**
|
||||
* 部件类型
|
||||
*/;
|
||||
*/
|
||||
private String componentType;
|
||||
|
||||
/**
|
||||
|
||||
@ -22,7 +22,7 @@ public class ReqEbikeComponentProductionDto {
|
||||
private String region;
|
||||
/**
|
||||
* 部件类型
|
||||
*/;
|
||||
*/
|
||||
private String componentType;
|
||||
/**
|
||||
* 供应商
|
||||
|
||||
@ -36,6 +36,11 @@ public class EbikeComponentEnterRecords implements Serializable {
|
||||
@Id
|
||||
private String componentEnterRecordId;
|
||||
|
||||
/**
|
||||
* 组织id(运营商id
|
||||
*/
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 所属区域
|
||||
*/
|
||||
|
||||
@ -34,6 +34,10 @@ public class EbikeComponentOutRecords implements Serializable {
|
||||
*/
|
||||
@Id
|
||||
private String componentOutRecordId;
|
||||
/**
|
||||
* 组织id(运营商id
|
||||
*/
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 所属区域
|
||||
|
||||
@ -36,7 +36,7 @@ public class EbikeEcuOutRecords implements Serializable {
|
||||
/**
|
||||
* 组件出库记录ID
|
||||
*/
|
||||
private Integer componentOutRecordId;
|
||||
private String componentOutRecordId;
|
||||
|
||||
/**
|
||||
* 中控编码
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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 客户端获取用户信息
|
||||
|
||||
@ -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) +"))";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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) + "))";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -80,7 +80,6 @@ public class ResApplyRefundDto {
|
||||
* 骑行设备编号
|
||||
*/
|
||||
private String ebikeCode;
|
||||
;
|
||||
|
||||
/**
|
||||
* 骑行开始时间
|
||||
|
||||
@ -89,7 +89,7 @@ public class ResCloseRefundDto {
|
||||
/**
|
||||
* 骑行设备编号
|
||||
*/
|
||||
private String ebikeCode;;
|
||||
private String ebikeCode;
|
||||
|
||||
/**
|
||||
* 骑行开始时间
|
||||
|
||||
@ -84,7 +84,7 @@ public class ResHandleRefundDto {
|
||||
/**
|
||||
* 骑行设备编号
|
||||
*/
|
||||
private String ebikeCode;;
|
||||
private String ebikeCode;
|
||||
|
||||
/**
|
||||
* 骑行开始时间
|
||||
|
||||
@ -110,7 +110,6 @@ public class ResProcessedRefundDto {
|
||||
* 骑行设备编号
|
||||
*/
|
||||
private String ebikeCode;
|
||||
;
|
||||
|
||||
/**
|
||||
* 骑行开始时间
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user