优化
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
package top.wms.admin.fullWorkOrder.mapper;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
import top.continew.starter.data.mp.base.BaseMapper;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderInfoDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 整箱领取记录 Mapper
|
||||||
|
*
|
||||||
|
* @author zc
|
||||||
|
* @since 2026/03/24 09:36
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public interface FullWorkOrderInfoMapper extends BaseMapper<FullWorkOrderInfoDO> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package top.wms.admin.fullWorkOrder.model.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import top.wms.admin.common.model.entity.BaseDO;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 整箱领取记录实体
|
||||||
|
*
|
||||||
|
* @author zc
|
||||||
|
* @since 2026/03/24 09:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("sys_full_work_order_info")
|
||||||
|
public class FullWorkOrderInfoDO {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private Long fullWorkOrderId;
|
||||||
|
|
||||||
|
private BigDecimal weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片地址
|
||||||
|
*/
|
||||||
|
private String imgUrl;
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package top.wms.admin.fullWorkOrder.model.req;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建或修改整箱领取记录参数
|
||||||
|
*
|
||||||
|
* @author zc
|
||||||
|
* @since 2026/03/24 09:36
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "创建或修改整箱领取记录参数")
|
||||||
|
public class FullWorkOrderInfoReq implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重量
|
||||||
|
*/
|
||||||
|
@Schema(description = "重量")
|
||||||
|
@NotNull(message = "重量不能为空")
|
||||||
|
private BigDecimal weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 整箱领取记录ID
|
||||||
|
*/
|
||||||
|
@Schema(description = "整箱领取记录ID")
|
||||||
|
@NotNull(message = "整箱领取记录ID不能为空")
|
||||||
|
private Long fullWorkOrderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片地址
|
||||||
|
*/
|
||||||
|
@Schema(description = "图片地址")
|
||||||
|
@NotBlank(message = "图片未采集到")
|
||||||
|
@Length(max = 255, message = "图片地址长度不能超过 {max} 个字符")
|
||||||
|
private String imgUrl;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
package top.wms.admin.fullWorkOrder.service;
|
package top.wms.admin.fullWorkOrder.service;
|
||||||
|
|
||||||
import top.continew.starter.extension.crud.service.BaseService;
|
import top.continew.starter.extension.crud.service.BaseService;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderInfoDO;
|
||||||
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderInfoReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 整箱领取记录业务接口
|
* 整箱领取记录业务接口
|
||||||
*
|
*
|
||||||
@@ -13,4 +17,7 @@ import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
|||||||
*/
|
*/
|
||||||
public interface FullWorkOrderService extends BaseService<FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
|
public interface FullWorkOrderService extends BaseService<FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
|
||||||
|
|
||||||
|
void saveFullWorkOrderDetail(List<FullWorkOrderInfoReq> infos);
|
||||||
|
|
||||||
|
List<FullWorkOrderInfoDO> getFullWorkOrderInfos(Long fullWorkOrderId);
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
package top.wms.admin.fullWorkOrder.service.impl;
|
package top.wms.admin.fullWorkOrder.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -9,9 +11,12 @@ import top.continew.starter.extension.crud.model.query.SortQuery;
|
|||||||
import top.continew.starter.extension.crud.service.BaseServiceImpl;
|
import top.continew.starter.extension.crud.service.BaseServiceImpl;
|
||||||
import top.continew.starter.file.excel.util.ExcelUtils;
|
import top.continew.starter.file.excel.util.ExcelUtils;
|
||||||
import top.wms.admin.common.context.UserContextHolder;
|
import top.wms.admin.common.context.UserContextHolder;
|
||||||
|
import top.wms.admin.fullWorkOrder.mapper.FullWorkOrderInfoMapper;
|
||||||
import top.wms.admin.fullWorkOrder.mapper.FullWorkOrderMapper;
|
import top.wms.admin.fullWorkOrder.mapper.FullWorkOrderMapper;
|
||||||
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderDO;
|
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderDO;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderInfoDO;
|
||||||
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderInfoReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
||||||
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
||||||
@@ -29,6 +34,8 @@ import java.util.List;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMapper, FullWorkOrderDO, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> implements FullWorkOrderService {
|
public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMapper, FullWorkOrderDO, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> implements FullWorkOrderService {
|
||||||
|
|
||||||
|
private final FullWorkOrderInfoMapper fullWorkOrderInfoMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beforeAdd(FullWorkOrderReq req) {
|
public void beforeAdd(FullWorkOrderReq req) {
|
||||||
String timestamp = DateUtil.format(new Date(), "yyyyMMddHHmmss");
|
String timestamp = DateUtil.format(new Date(), "yyyyMMddHHmmss");
|
||||||
@@ -46,4 +53,15 @@ public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMappe
|
|||||||
ExcelUtils.export(list, "整箱领取导出记录", FullWorkOrderResp.class, response);
|
ExcelUtils.export(list, "整箱领取导出记录", FullWorkOrderResp.class, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveFullWorkOrderDetail(List<FullWorkOrderInfoReq> infos) {
|
||||||
|
List<FullWorkOrderInfoDO> fullWorkOrderInfoDOS = BeanUtil.copyToList(infos, FullWorkOrderInfoDO.class);
|
||||||
|
fullWorkOrderInfoMapper.insertBatch(fullWorkOrderInfoDOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<FullWorkOrderInfoDO> getFullWorkOrderInfos(Long fullWorkOrderId) {
|
||||||
|
List<FullWorkOrderInfoDO> fullWorkOrderInfoDOS = fullWorkOrderInfoMapper.selectList(new QueryWrapper<FullWorkOrderInfoDO>().eq("full_work_order_id", fullWorkOrderId));
|
||||||
|
return fullWorkOrderInfoDOS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -8,12 +8,17 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
||||||
|
import top.continew.starter.log.annotation.Log;
|
||||||
|
import top.continew.starter.web.model.R;
|
||||||
import top.wms.admin.common.controller.BaseController;
|
import top.wms.admin.common.controller.BaseController;
|
||||||
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
|
||||||
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderInfoReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
||||||
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
||||||
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 整箱领取记录管理 API
|
* 整箱领取记录管理 API
|
||||||
*
|
*
|
||||||
@@ -26,4 +31,16 @@ import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
|||||||
@CrudRequestMapping(value = "/fullWorkOrder/fullWorkOrder", api = {Api.PAGE, Api.ADD, Api.DELETE, Api.EXPORT})
|
@CrudRequestMapping(value = "/fullWorkOrder/fullWorkOrder", api = {Api.PAGE, Api.ADD, Api.DELETE, Api.EXPORT})
|
||||||
public class FullWorkOrderController extends BaseController<FullWorkOrderService, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
|
public class FullWorkOrderController extends BaseController<FullWorkOrderService, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/saveInfo")
|
||||||
|
public R saveFullWorkOrderDetail(@RequestBody List<FullWorkOrderInfoReq> infos) {
|
||||||
|
baseService.saveFullWorkOrderDetail(infos);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log(ignore = true)
|
||||||
|
@GetMapping("/infos/{fullWorkOrderId}")
|
||||||
|
public R getFullWorkOrderInfos(@PathVariable Long fullWorkOrderId) {
|
||||||
|
return R.ok(baseService.getFullWorkOrderInfos(fullWorkOrderId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -10,8 +10,10 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import top.continew.starter.web.model.R;
|
import top.continew.starter.web.model.R;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@@ -51,6 +53,11 @@ public class AHDZCConnect {
|
|||||||
|
|
||||||
private ScheduledExecutorService executorService;
|
private ScheduledExecutorService executorService;
|
||||||
|
|
||||||
|
// todo 模拟数据生成
|
||||||
|
// private ScheduledFuture<?> mockDataTask;
|
||||||
|
// private final AtomicBoolean isMockDataRunning = new AtomicBoolean(false);
|
||||||
|
// private final Random random = new Random();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化并启动电子秤服务
|
* 初始化并启动电子秤服务
|
||||||
*/
|
*/
|
||||||
@@ -66,6 +73,11 @@ public class AHDZCConnect {
|
|||||||
// 重新初始化并启动服务
|
// 重新初始化并启动服务
|
||||||
ScaleService();
|
ScaleService();
|
||||||
start();
|
start();
|
||||||
|
|
||||||
|
// todo 模拟数据生成
|
||||||
|
// isMockDataRunning.set(true);
|
||||||
|
// startMockData();
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,6 +337,9 @@ public class AHDZCConnect {
|
|||||||
log.info("停止电子秤线程...");
|
log.info("停止电子秤线程...");
|
||||||
log.info("========================================");
|
log.info("========================================");
|
||||||
|
|
||||||
|
// todo 模拟数据生成
|
||||||
|
// stopMockData();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (executorService != null && !executorService.isShutdown()) {
|
if (executorService != null && !executorService.isShutdown()) {
|
||||||
executorService.shutdown();
|
executorService.shutdown();
|
||||||
@@ -344,4 +359,33 @@ public class AHDZCConnect {
|
|||||||
log.info("线程已完全停止");
|
log.info("线程已完全停止");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo 模拟数据生成
|
||||||
|
// private void startMockData() {
|
||||||
|
// if (executorService == null || executorService.isShutdown()) {
|
||||||
|
// log.warn("[模拟数据] 线程池未初始化或已关闭");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// mockDataTask = executorService.scheduleAtFixedRate(() -> {
|
||||||
|
// if (!isMockDataRunning.get()) {
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// ScaleWebSocketHandler.sendMessage(String.valueOf(random.nextInt(100) + 1));
|
||||||
|
// log.debug("[模拟数据] 发送重量数据: 37.8");
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("[模拟数据] 发送异常: {}", e.getMessage());
|
||||||
|
// }
|
||||||
|
// }, 0, 1, TimeUnit.SECONDS);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private void stopMockData() {
|
||||||
|
// if (mockDataTask != null && !mockDataTask.isCancelled()) {
|
||||||
|
// mockDataTask.cancel(false);
|
||||||
|
// mockDataTask = null;
|
||||||
|
// }
|
||||||
|
// isMockDataRunning.set(false);
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
package top.wms.admin.controller.ys;
|
package top.wms.admin.controller.ys;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import top.continew.starter.log.annotation.Log;
|
import top.continew.starter.log.annotation.Log;
|
||||||
import top.continew.starter.web.model.R;
|
import top.continew.starter.web.model.R;
|
||||||
import top.wms.admin.controller.ys.req.CaptureReq;
|
import top.wms.admin.controller.ys.req.CaptureReq;
|
||||||
|
|||||||
Reference in New Issue
Block a user