优化
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;
|
||||
|
||||
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.req.FullWorkOrderInfoReq;
|
||||
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
||||
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> {
|
||||
|
||||
void saveFullWorkOrderDetail(List<FullWorkOrderInfoReq> infos);
|
||||
|
||||
List<FullWorkOrderInfoDO> getFullWorkOrderInfos(Long fullWorkOrderId);
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
package top.wms.admin.fullWorkOrder.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
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.file.excel.util.ExcelUtils;
|
||||
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.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.req.FullWorkOrderInfoReq;
|
||||
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
|
||||
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
|
||||
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
||||
@@ -29,6 +34,8 @@ import java.util.List;
|
||||
@RequiredArgsConstructor
|
||||
public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMapper, FullWorkOrderDO, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> implements FullWorkOrderService {
|
||||
|
||||
private final FullWorkOrderInfoMapper fullWorkOrderInfoMapper;
|
||||
|
||||
@Override
|
||||
public void beforeAdd(FullWorkOrderReq req) {
|
||||
String timestamp = DateUtil.format(new Date(), "yyyyMMddHHmmss");
|
||||
@@ -46,4 +53,15 @@ public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMappe
|
||||
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 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.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.resp.FullWorkOrderResp;
|
||||
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 整箱领取记录管理 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})
|
||||
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 java.nio.charset.Charset;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
@@ -51,6 +53,11 @@ public class AHDZCConnect {
|
||||
|
||||
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();
|
||||
start();
|
||||
|
||||
// todo 模拟数据生成
|
||||
// isMockDataRunning.set(true);
|
||||
// startMockData();
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@@ -325,6 +337,9 @@ public class AHDZCConnect {
|
||||
log.info("停止电子秤线程...");
|
||||
log.info("========================================");
|
||||
|
||||
// todo 模拟数据生成
|
||||
// stopMockData();
|
||||
|
||||
try {
|
||||
if (executorService != null && !executorService.isShutdown()) {
|
||||
executorService.shutdown();
|
||||
@@ -344,4 +359,33 @@ public class AHDZCConnect {
|
||||
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;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
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.web.model.R;
|
||||
import top.wms.admin.controller.ys.req.CaptureReq;
|
||||
|
||||
Reference in New Issue
Block a user