新页面整箱领取

This commit is contained in:
zc
2026-03-24 14:55:12 +08:00
parent 8bacb6ec5e
commit c4f29d3ee5
12 changed files with 407 additions and 6 deletions

View File

@@ -0,0 +1,16 @@
package top.wms.admin.fullWorkOrder.mapper;
import top.continew.starter.data.mp.base.BaseMapper;
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderDO;
import org.springframework.stereotype.Repository;
/**
* 整箱领取记录 Mapper
*
* @author zc
* @since 2026/03/24 09:36
*/
@Repository
public interface FullWorkOrderMapper extends BaseMapper<FullWorkOrderDO> {
}

View File

@@ -0,0 +1,43 @@
package top.wms.admin.fullWorkOrder.model.entity;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
import top.wms.admin.common.model.entity.BaseDO;
import java.io.Serial;
/**
* 整箱领取记录实体
*
* @author zc
* @since 2026/03/24 09:36
*/
@Data
@TableName("sys_full_work_order")
public class FullWorkOrderDO extends BaseDO {
@Serial
private static final long serialVersionUID = 1L;
/**
* 标题
*/
private String title;
/**
* 任务工单号
*/
private String orderNo;
/**
* 物料编码
*/
private String materialCode;
/**
* 图片地址
*/
private String imgUrl;
}

View File

@@ -0,0 +1,58 @@
package top.wms.admin.fullWorkOrder.model.query;
import cn.hutool.core.date.DatePattern;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.format.annotation.DateTimeFormat;
import top.continew.starter.data.core.annotation.Query;
import top.continew.starter.data.core.enums.QueryType;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 整箱领取记录查询条件
*
* @author zc
* @since 2026/03/24 09:36
*/
@Data
@Schema(description = "整箱领取记录查询条件")
public class FullWorkOrderQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 任务工单号
*/
@Schema(description = "任务工单号")
@Query(type = QueryType.EQ)
private String orderNo;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@Query(type = QueryType.LIKE)
private String materialCode;
/**
* 创建人
*/
@Schema(description = "创建人")
@Query(type = QueryType.EQ)
private Long createUser;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
@Query(type = QueryType.BETWEEN)
private List<Date> createTime;
}

View File

@@ -0,0 +1,56 @@
package top.wms.admin.fullWorkOrder.model.req;
import jakarta.validation.constraints.*;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import org.hibernate.validator.constraints.Length;
import java.io.Serial;
import java.io.Serializable;
import java.time.*;
/**
* 创建或修改整箱领取记录参数
*
* @author zc
* @since 2026/03/24 09:36
*/
@Data
@Schema(description = "创建或修改整箱领取记录参数")
public class FullWorkOrderReq implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 标题
*/
@Schema(description = "标题")
private String title;
/**
* 任务工单号
*/
@Schema(description = "任务工单号")
private String orderNo;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@NotBlank(message = "物料编码不能为空")
@Length(max = 255, message = "物料编码长度不能超过 {max} 个字符")
private String materialCode;
/**
* 图片地址
*/
@Schema(description = "图片地址")
@NotBlank(message = "图片未采集到")
@Length(max = 255, message = "图片地址长度不能超过 {max} 个字符")
private String imgUrl;
}

View File

@@ -0,0 +1,56 @@
package top.wms.admin.fullWorkOrder.model.resp;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import top.wms.admin.common.model.resp.BaseDetailResp;
import java.io.Serial;
import java.time.*;
/**
* 整箱领取记录详情信息
*
* @author zc
* @since 2026/03/24 09:36
*/
@Data
@ExcelIgnoreUnannotated
@Schema(description = "整箱领取记录详情信息")
public class FullWorkOrderDetailResp extends BaseDetailResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 标题
*/
@Schema(description = "标题")
@ExcelProperty(value = "标题")
private String title;
/**
* 任务工单号
*/
@Schema(description = "任务工单号")
@ExcelProperty(value = "任务工单号")
private String orderNo;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@ExcelProperty(value = "物料编码")
private String materialCode;
/**
* 图片地址
*/
@Schema(description = "图片地址")
@ExcelProperty(value = "图片地址")
private String imgUrl;
}

View File

@@ -0,0 +1,54 @@
package top.wms.admin.fullWorkOrder.model.resp;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import top.wms.admin.common.model.resp.BaseDetailResp;
import java.io.Serial;
import java.time.*;
/**
* 整箱领取记录信息
*
* @author zc
* @since 2026/03/24 09:36
*/
@Data
@Schema(description = "整箱领取记录信息")
public class FullWorkOrderResp extends BaseDetailResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 标题
*/
@Schema(description = "标题")
@ExcelProperty(value = "标题", order = 1)
private String title;
/**
* 任务工单号
*/
@Schema(description = "任务工单号")
@ExcelProperty(value = "任务工单号", order = 2)
private String orderNo;
/**
* 物料编码
*/
@Schema(description = "物料编码")
@ExcelProperty(value = "物料编码", order = 3)
private String materialCode;
/**
* 图片地址
*/
@Schema(description = "图片地址")
@ExcelProperty(value = "图片地址", order = 4)
private String imgUrl;
}

View File

@@ -0,0 +1,17 @@
package top.wms.admin.fullWorkOrder.service;
import top.continew.starter.extension.crud.service.BaseService;
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderDetailResp;
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
/**
* 整箱领取记录业务接口
*
* @author zc
* @since 2026/03/24 09:36
*/
public interface FullWorkOrderService extends BaseService<FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
}

View File

@@ -0,0 +1,54 @@
package top.wms.admin.fullWorkOrder.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
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.FullWorkOrderMapper;
import top.wms.admin.fullWorkOrder.model.entity.FullWorkOrderDO;
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
import top.wms.admin.materialProcess.model.query.MaterialProcessQuery;
import top.wms.admin.materialProcess.model.resp.MaterialProcessResp;
import java.util.Date;
import java.util.List;
/**
* 整箱领取记录业务实现
*
* @author zc
* @since 2026/03/24 09:36
*/
@Service
@RequiredArgsConstructor
public class FullWorkOrderServiceImpl extends BaseServiceImpl<FullWorkOrderMapper, FullWorkOrderDO, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> implements FullWorkOrderService {
@Override
public void beforeAdd(FullWorkOrderReq req) {
String timestamp = DateUtil.format(new Date(), "yyyyMMddHHmmss");
String randomNum = String.format("%06d", (int)(Math.random() * 1000000));
req.setOrderNo(timestamp + randomNum);
String title = DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN) + "-" + UserContextHolder
.getUsername();
req.setTitle(title);
}
@Override
public void export(FullWorkOrderQuery query, SortQuery sortQuery, HttpServletResponse response) {
List<FullWorkOrderResp> list = super.list(query, sortQuery, this.getDetailClass());
list.forEach(super::fill);
ExcelUtils.export(list, "整箱领取导出记录", FullWorkOrderResp.class, response);
}
}

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="top.wms.admin.fullWorkOrder.mapper.FullWorkOrderMapper">
</mapper>

View File

@@ -45,7 +45,6 @@ import java.util.List;
@RequestMapping("/common")
public class CommonController {
private static final Logger log = LoggerFactory.getLogger(CommonController.class);
private final FileService fileService;
private final DeptService deptService;
private final MenuService menuService;

View File

@@ -0,0 +1,31 @@
package top.wms.admin.controller.fullWorkOrder;
import top.continew.starter.extension.crud.enums.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
import top.wms.admin.common.controller.BaseController;
import top.wms.admin.fullWorkOrder.model.query.FullWorkOrderQuery;
import top.wms.admin.fullWorkOrder.model.req.FullWorkOrderReq;
import top.wms.admin.fullWorkOrder.model.resp.FullWorkOrderResp;
import top.wms.admin.fullWorkOrder.service.FullWorkOrderService;
/**
* 整箱领取记录管理 API
*
* @author zc
* @since 2026/03/24 09:36
*/
@Tag(name = "整箱领取记录管理 API")
@RestController
@RequiredArgsConstructor
@CrudRequestMapping(value = "/fullWorkOrder/fullWorkOrder", api = {Api.PAGE, Api.ADD, Api.DELETE, Api.EXPORT})
public class FullWorkOrderController extends BaseController<FullWorkOrderService, FullWorkOrderResp, FullWorkOrderResp, FullWorkOrderQuery, FullWorkOrderReq> {
}

View File

@@ -51,14 +51,27 @@ public class ysNetController {
@GetMapping("/leave-weigh-page")
public R leaveWeighPage() {
try {
// 登出设备
NetCommon.logoutDevice();
// 检查设备是否已登录
if (NetCommon.isDeviceLoggedIn()) {
// 登出设备
NetCommon.logoutDevice();
log.info("设备已登出");
} else {
log.info("设备未登录,无需登出");
}
// 释放SDK
NetCommon.cleanupSDK();
// 检查SDK是否已初始化
if (NetCommon.isSDKInitialized()) {
// 释放SDK
NetCommon.cleanupSDK();
log.info("SDK已释放");
} else {
log.info("SDK未初始化无需释放");
}
return R.ok("离开称重页面成功,已释放资源");
} catch (Exception e) {
log.error("离开称重页面失败", e);
return R.fail("500", "离开称重页面失败:" + e.getMessage());
}
}
@@ -71,7 +84,7 @@ public class ysNetController {
try {
// 检查设备是否已登录
if (!NetCommon.isDeviceLoggedIn()) {
return R.fail("500", "设备未登录,请先进入称重页面");
return R.fail("500", "摄像头连接异常!");
}
// 执行抓图