Merge remote-tracking branch 'origin/master'

develop-QA
Tom Li 5 months ago
commit 7f3dcb190b
  1. 7
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 25
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java
  3. 179
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/excel/MeasurementRecordsExcel.java
  4. 82
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/excel/MeasuringUpkeepExcel.java
  5. 46
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/request/MeasuringUpkeepQuery.java
  6. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/vo/EquipmentVO.java
  7. 47
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/vo/MeasuringUpkeepVO.java
  8. 32
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java
  9. 23
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java
  10. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StGoodsDTO.java
  11. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/dto/StRealtimeStockDTO.java
  12. 277
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StGoods.java
  13. 194
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java
  14. 171
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java
  15. 66
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStorageLocation.java
  16. 150
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStoreBill.java
  17. 91
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StStorehouse.java
  18. 8
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/PrintParentWoLabel.java
  19. 86
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/PrintStoresList.java
  20. 40
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/PrintWoLabel.java
  21. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StGoodsVO.java
  22. 52
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StRealtimeStockVO.java
  23. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StStorageLocationVO.java
  24. 4
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/vo/StStoreBillVO.java
  25. 6
      blade-service/blade-desk/pom.xml
  26. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/DeskApplication.java
  27. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/EquipmentController.java
  28. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java
  29. 89
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasuringUpkeepController.java
  30. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.java
  31. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/EquipmentMapper.xml
  32. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java
  33. 103
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml
  34. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IEquipmentService.java
  35. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java
  36. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/EquipmentServiceImpl.java
  37. 167
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java
  38. 41
      blade-service/blade-wms/pom.xml
  39. 5
      blade-service/blade-wms/src/main/java/org/springblade/wms/WmsApplication.java
  40. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StRealtimeStockController.java
  41. 54
      blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java
  42. 277
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StGoods.java
  43. 196
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java
  44. 172
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StStockInoutRecord.java
  45. 67
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StStorageLocation.java
  46. 150
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StStoreBill.java
  47. 91
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/entity/StStorehouse.java
  48. 86
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/vo/PrintStoresList.java
  49. 54
      blade-service/blade-wms/src/main/java/org/springblade/wms/pojo/vo/StRealtimeStockVO.java
  50. 5
      doc/sql/mes/increase-20160124.sql

@ -150,6 +150,13 @@ public interface LauncherConstant {
return appName.concat(GROUP_NAME);
}
/**
* wms
*/
String APPLICATION_WMS_NAME = "blade-wms";
/**
* 动态获取nacos地址
*

@ -12,6 +12,8 @@ import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.HashMap;
import java.util.Map;
/**
* 量具保养 实体类
@ -56,7 +58,26 @@ public class MeasuringUpkeepEntity extends BaseEntity {
/**
* 库存物料
*/
@Schema(description = "库存物料")
private Long rlsId;
// @Schema(description = "库存物料")
// private Long rlsId;
/**
* 新建
*/
public static Integer CURSTATUS_NEW = 0;
/**
* 已申请
*/
public static Integer CURSTATUS_YSQ = 1;
public static Map<Integer, String> curStatusMap = new HashMap<>(3);
static {
curStatusMap.put(CURSTATUS_NEW, "新建");
curStatusMap.put(CURSTATUS_YSQ, "已申请");
}
public String getCurStatusTitle() {
return curStatusMap.get(this.getStatus());
}
}

@ -0,0 +1,179 @@
package org.springblade.desk.device.pojo.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 计量记录 Excel实体类
*
* @author qyl
* @since 2026-01-26
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class MeasurementRecordsExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ColumnWidth(20)
@ExcelProperty("名称(设备名称)")
//@Column("mc_name")
private String mcName;
@ColumnWidth(20)
@ExcelProperty("规格")
//@Column("norms")
private String norms;
@ColumnWidth(20)
@ExcelProperty("类别(管理类别)")
//@Column("mc_class")
private String mcClass;
@ColumnWidth(20)
@ExcelProperty("计量类型")
//@Column("label_no")
private String labelNo;
@ColumnWidth(20)
@ExcelProperty("计量子类型")
//@Column("str2")
private String str2;
@ColumnWidth(20)
@ExcelProperty("编号(测量设备编码)")
//@Column("mc_code")
private String mcCode;
@ColumnWidth(20)
@ExcelProperty("使用单位(试用部门)")
//@Column("use_unit")
private String useUnit;
@ColumnWidth(20)
@ExcelProperty("精度(精度等级)")
//@Column("accuracy")
private String accuracy;
@ColumnWidth(20)
@ExcelProperty("出厂编号")
//@Column("oem_code")
private String oemCode;
@ColumnWidth(20)
@ExcelProperty("生产厂家(制造厂商)")
//@Column("mc_oem")
private String mcOem;
@ColumnWidth(20)
@ExcelProperty("启用日期")
//@Column("enable_date")
private Date enableDate;
@ColumnWidth(20)
@ExcelProperty("检定日期")
//@Column("when_dccept")
private String whenDccept;
@ColumnWidth(20)
@ExcelProperty("型号(型号)")
//@Column("mc_type")
private String mcType;
@ColumnWidth(20)
@ExcelProperty("检定周期(检定周期)")
//@Column("test_cycle")
private Integer testCycle;
@ColumnWidth(20)
@ExcelProperty("到期日期(有效日期)")
//@Column("due_date")
private Date dueDate;
@ColumnWidth(20)
@ExcelProperty("报废日期")
//@Column("date2")
private Date date2;
@ColumnWidth(20)
@ExcelProperty("状态")
//@Column("belong")
private String belong;
@ColumnWidth(20)
@ExcelProperty("停用日期")
//@Column("when_buy")
private Date whenBuy;
@ColumnWidth(20)
@ExcelProperty("检定部门")
//@Column("test_dept")
private String testDept;
@ColumnWidth(20)
@ExcelProperty("检定/校验方法(检定校准方法)")
//@Column("test_method")
private String testMethod;
@ColumnWidth(20)
@ExcelProperty("备注")
//@Column("str9")
private String str9;
@ColumnWidth(20)
@ExcelProperty("备注2")
//@Column("str10")
private String str10;
@ColumnWidth(20)
@ExcelProperty("使用人工号")
//@Column("assets_no")
private String assetsNo;
@ColumnWidth(20)
@ExcelProperty("责任人")
//@Column("str6")
private String str6;
@ColumnWidth(20)
@ExcelProperty("用途分类")
//@Column("purpose_class")
private String purposeClass;
@ColumnWidth(20)
@ExcelProperty("超期情况")
//@Column("is_over_str")
private String isOverStr;
@ColumnWidth(20)
@ExcelProperty("类型")
//@Column("cm_type")
private Short cmType;
@ColumnWidth(20)
@ExcelProperty("是否送检")
//@Column("censorship")
private Boolean censorship;
@ColumnWidth(20)
@ExcelProperty("检验状态")
//@Column("check_status")
private Boolean checkStatus;
@ColumnWidth(20)
@ExcelProperty("检验结果")
//@Column("check_result")
private Boolean checkResult;
}

@ -3,9 +3,6 @@ package org.springblade.desk.device.pojo.excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@ -29,60 +26,51 @@ public class MeasuringUpkeepExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 流水号
*/
@ColumnWidth(20)
@ExcelProperty("流水号")
private BigDecimal id;
/**
*
*/
@ColumnWidth(20)
@ExcelProperty("")
private String tenantId;
/**
* 删除标记;1:删除0:正常
*/
@ColumnWidth(20)
@ExcelProperty("删除标记;1:删除,0:正常")
private Long isDeleted;
/**
* 保养单号
*/
@ColumnWidth(20)
@ExcelProperty("保养单号")
private String mmCode;
/**
* 库存物料;外键库存物料
*/
@ColumnWidth(20)
@ExcelProperty("库存物料;外键(库存物料)")
private Long miId;
/**
* 备注
*/
@ExcelProperty("物料名称")
String goodsName;
@ColumnWidth(20)
@ExcelProperty("备注")
private String memo;
/**
*
*/
@ExcelProperty("物料规格")
String specifications;
@ColumnWidth(20)
@ExcelProperty("")
private Long createMan;
/**
* 审批状态;-1
*/
@ExcelProperty("生产批次号")
String piNo;
@ColumnWidth(20)
@ExcelProperty("审批状态;-1")
private Short approvalStatus;
/**
* 库存物料
*/
@ExcelProperty("仓库")
String shName;
@ColumnWidth(20)
@ExcelProperty("库位号")
String location;
@ColumnWidth(20)
@ExcelProperty("库存数量")
String quantity;
@ColumnWidth(20)
@ExcelProperty("等级")
String quantityLevel;
@ColumnWidth(20)
@ExcelProperty("金额")
Double balanceMoney;
@ColumnWidth(20)
@ExcelProperty("累计使用次数")
String sumNum;
@ColumnWidth(20)
@ExcelProperty("库存物料")
private Long rlsId;
@ExcelProperty("状态名称")
String statusName;
}

@ -0,0 +1,46 @@
package org.springblade.desk.device.pojo.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 量具保养查询条件封装类
*
* @author qyl
* @since 2026-01-23
*/
@Data
public class MeasuringUpkeepQuery {
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String goodsName;
/**
* 生产批次号
*/
@Schema(description = "生产批次号")
private String piNo;
/**
* 仓库
*/
@Schema(description = "仓库")
private String shName;
/**
* 库位号
*/
@Schema(description = "库位号")
private String location;
/**
* 状态
*/
@Schema(description = "状态")
private Short status;
/**
* ids
*/
@Schema(description = "多个id(传1,2,3,4的字符串)")
private String ids;
}

@ -27,6 +27,7 @@ package org.springblade.desk.device.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
@ -52,5 +53,11 @@ public class EquipmentVO extends EquipmentEntity {
/**
* 状态名称
*/
@Schema(description = "状态名称")
String statusName;
/**
* 工作中心名称
*/
@Schema(description = "工作中心名称")
String workCenterName;
}

@ -2,6 +2,7 @@ package org.springblade.desk.device.pojo.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -24,8 +25,48 @@ public class MeasuringUpkeepVO extends MeasuringUpkeepEntity {
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 状态名称
*/
@Schema(description = "物料ID")
Long goodsId;
@Schema(description = "仓库ID")
Long shId;
@Schema(description = "库位ID")
Long slId;
@Schema(description = "物料名称")
String goodsName;
@Schema(description = "物料编码")
String goodsCode;
@Schema(description = "物料规格")
String specifications;
@Schema(description = "生产批次号")
String piNo;
@Schema(description = "仓库")
String shName;
@Schema(description = "库位号")
String location;
@Schema(description = "库存数量")
String quantity;
@Schema(description = "等级")
String quantityLevel;
@Schema(description = "金额")
Double balanceMoney;
@Schema(description = "累计使用次数")
String sumNum;
@Schema(description = "状态名称")
String statusName;
}

@ -0,0 +1,32 @@
package org.springblade.wms.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
/**
* 仓库实时结余远程调用
*
* @author qyl
* @since 2026-01-24
*/
@FeignClient(
value = "blade-wms"
)
public interface StRealtimeStockClient {
String API_PREFIX = "/feign/client/stRealtimeStock";
String MEASURING_TOOLS = API_PREFIX + "/pageToolsData";
/**
* 量具库存
*/
@GetMapping(MEASURING_TOOLS)
R<Page<StRealtimeStockVO>> getMeasuringTools(@SpringQueryMap StRealtimeStockVO stRealtimeStock, @SpringQueryMap Query query);
}

@ -0,0 +1,23 @@
package org.springblade.wms.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springframework.stereotype.Component;
/**
* Feign失败配置
*
* @author qyl
*/
@Component
public class StRealtimeStockClientFallback implements StRealtimeStockClient {
@Override
public R<Page<StRealtimeStockVO>> getMeasuringTools(StRealtimeStockVO stRealtimeStock, Query query) {
return R.fail("获取数据失败");
}
}

@ -18,7 +18,7 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class StGoodsDTO extends StGoods {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
}

@ -18,8 +18,8 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class StRealtimeStockDTO extends StRealtimeStock {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,277 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StGoods
* @description:
* @autor: WuSiYu
* @create 2025-12-09 18:11
**/
@Data
@TableName("ST_GOODS")
@Schema(description = "StGoods对象")
@EqualsAndHashCode(callSuper = true)
public class StGoods extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料编码
*/
@Schema(description = "物料编码")
private String goodsCode;
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String goodsName;
/**
* 最高库存
*/
@Schema(description = "最高库存")
private Double maxNum;
/**
* 最低库存
*/
@Schema(description = "最低库存")
private Double minNum;
/**
* 采购数量
*/
@Schema(description = "采购数量")
private Double purchaseQuantity;
/**
* 必检标识
*/
@Schema(description = "必检标识")
private Short mustCheck;
/**
* 是否停用默认值0
*/
@Schema(description = "是否停用(默认值:0)")
private Boolean used;
/**
* 使用件数核算
*/
@Schema(description = "使用件数核算")
private Short numAcc;
/**
* 产地
*/
@Schema(description = "产地")
private String madeIn;
/**
* 单价
*/
@Schema(description = "单价")
private Double price;
/**
* 等级
*/
@Schema(description = "等级")
private String grade;
/**
* 来源 1=自制 2=外购
*/
@Schema(description = "来源 1=自制 2=外购")
private Short source;
/**
* 组件模式
*/
@Schema(description = "组件模式")
private String prtType;
/**
* 版本
*/
@Schema(description = "版本")
private String releaseNo;
/**
* 版本时间
*/
@Schema(description = "版本时间")
private Date releaseNoTime;
/**
* 型号
*/
@Schema(description = "型号")
private String materialModel;
/**
* 重量
*/
@Schema(description = "重量")
private Double weight;
/**
* 计量单位
*/
@Schema(description = "计量单位")
private String unitName;
/**
* 产品类别
*/
@Schema(description = "产品类别")
private String productCategory;
/**
* 规格型号
*/
@Schema(description = "规格型号")
private String specifications;
/**
* 技术条件
*/
@Schema(description = "技术条件")
private String productTechSpec;
/**
* 密度
*/
@Schema(description = "密度")
private Double density;
/**
* 图号
*/
@Schema(description = "图号")
private String drawingNo;
/**
* 变更通告编号
*/
@Schema(description = "变更通告编号")
private String ecnNo;
/**
* 是否成品默认值0
*/
@Schema(description = "是否成品(默认值:0)")
private Short endItem;
/**
* 优选等级
*/
@Schema(description = "优选等级")
private String priority;
/**
* 超级链接
*/
@Schema(description = "超级链接")
private String partLink;
/**
* 腔数
*/
@Schema(description = "腔数")
private String cavityNo;
/**
* 采购部门
*/
@Schema(description = "采购部门")
private Long deptId;
/**
* 物料类别
*/
@Schema(description = "物料类别")
private Long gcId;
/**
* 生命周期状态
*/
@Schema(description = "生命周期状态")
private String partRevisionStatus;
/**
* 牌号
*/
@Schema(description = "牌号")
private String tradeMark;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 锁料数量
*/
@Schema(description = "锁料数量")
private Double lockQuantity;
/**
* 在途数量
*/
@Schema(description = "在途数量")
private Double onthewayQuantity;
/**
* 当前库存
*/
@Schema(description = "当前库存")
private Double currentQuantity;
/**
* 物料类型
*/
@Schema(description = "物料类型")
private Long goodsType;
/**
* 大类
*/
@Schema(description = "大类")
private String matBigClassify;
/**
* 小类
*/
@Schema(description = "小类")
private String matSmallClassify;
/**
* 检验编号
*/
@Schema(description = "检验编号")
private String checkCode;
/**
* 批次号
*/
@Schema(description = "批次号")
private String batch;
/**
* 表面积
*/
@Schema(description = "表面积")
private Double sectionArea;
/**
* 物料属性
*/
@Schema(description = "物料属性")
private Long materialProperty;
/**
* PDM单位
*/
@Schema(description = "PDM单位")
private String pdmUnit;
/**
* 是否工艺审批
*/
@Schema(description = "是否工艺审批")
private String processApproval;
/**
* 是否最低库存预警
*/
@Schema(description = "是否最低库存预警")
private String minWarning;
/**
* 自制
*/
public static Short MAKE_PROPERTIES_SELF = 1;
/**
* 外购
*/
public static Short MAKE_PROPERTIES_OUT = 2;
public void setSourceByStr(String str) {
if ("自制".equals(str)) {
this.source = MAKE_PROPERTIES_SELF;
} else if ("外购".equals(str)) {
this.source = MAKE_PROPERTIES_OUT;
}
}
}

@ -0,0 +1,194 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StRealtimeStock
* @description: 仓库实时结余表 实体类
* @autor: WuSiYu
* @create 2025-12-15 14:45
**/
@Data
@TableName("ST_REALTIME_STOCK")
@Schema(description = "StRealtimeStock对象")
@EqualsAndHashCode(callSuper = true)
public class StRealtimeStock extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房ID
*/
@Schema(description = "库房ID")
private Long shId;
/**
* 物料ID关联st_goods表
*/
@Schema(description = "物料ID(关联st_goods表)")
@TableField("goods_id")
private Long goodsId;
/**
* 库位ID
*/
@Schema(description = "库位ID")
private Long slId;
/**
* 批次号
*/
@Schema(description = "批次号")
private String piNo;
/**
* 库存数量
*/
@Schema(description = "库存数量")
private Double quantity;
/**
* 金额-单价
*/
@Schema(description = "金额-单价")
private Double balanceMoney;
/**
* 质量等级
*/
@Schema(description = "质量等级")
private String quantityLevel;
/**
* 过期/报废日期
*/
@Schema(description = "过期/报废日期")
private Date scrapCycle;
/**
* 质量编号
*/
@Schema(description = "质量编号")
private String checkCode;
/**
* 是否模架物料1=/0=
*/
@Schema(description = "是否模架物料(1=是/0=否)")
private Boolean moldBaseMaterial;
/**
* 模架物料库存对应模架库存ID
*/
@Schema(description = "模架物料库存对应模架库存ID")
private Long moldRlsId;
/**
* 是否停用1=/0=
*/
@Schema(description = "是否停用(1=是/0=否)")
private Boolean stopUse;
/**
* 累计次数
*/
@Schema(description = "累计次数")
private Long sumNum;
/**
* 库存来源1=采购/2=生产/3=调拨等
*/
@Schema(description = "库存来源(1=采购/2=生产/3=调拨等)")
private Long stockSource;
/**
* 待保养次数
*/
@Schema(description = "待保养次数")
private Long stayMaintainNum;
/**
* 物料状态
*/
@Schema(description = "物料状态")
private Long goodsStatus;
/**
* 分厂类型
*/
@Schema(description = "分厂类型")
private Long facilityType;
/**
* 分厂ID
*/
@Schema(description = "分厂ID")
private String deptId;
/**
* 条码号
*/
@Schema(description = "条码号")
private String barCode;
/**
* 占用数量
*/
@Schema(description = "占用数量")
private Double occupyQuantity;
/**
* 炉批号
*/
@Schema(description = "炉批号")
private String stovePiNo;
/**
* 到期送检是否申请
*/
@Schema(description = "到期送检是否申请")
private Boolean applyFor;
/**
* 供方代码
*/
@Schema(description = "供方代码")
private String splyCode;
/**
* 限用标记
*/
@Schema(description = "限用标记")
private Long limitUseFlag;
/**
* ERP入库时间
*/
@Schema(description = "ERP入库时间")
private Date erpStorageTime;
/**
* 是否印字
*/
@Schema(description = "是否印字")
private Boolean printMark;
/**
* 粉重
*/
@Schema(description = "粉重")
private String powderWeight;
/**
* 材料号
*/
@Schema(description = "材料号")
private String materialNo;
/**
* 厚度
*/
@Schema(description = "厚度")
private String thickness;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
/**
* 保管员
*/
// @Transient
// private String keeper;
// @Transient
private Double outQuantity;
}

@ -0,0 +1,171 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStockInoutRecord
* @description: 出入库记录表 实体类
* @autor: WuSiYu
* @create 2026-01-04 11:08
**/
@Data
@TableName("ST_STOCK_INOUT_RECORD")
@Schema(description = "StStockInoutRecord对象")
@EqualsAndHashCode(callSuper = true)
public class StStockInoutRecord extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库位ID关联st_storage_location表主键
*/
@Schema(description = "库位ID(关联st_storage_location表主键)")
private Long slId;
/**
* 库存ID关联st_realtime_stock表主键
*/
@Schema(description = "库存ID(关联st_realtime_stock表主键)")
private Long rlsId;
/**
* 仓库ID关联st_storehouse表主键
*/
@Schema(description = "仓库ID(关联st_storehouse表主键)")
private Long shId;
/**
* 批号
*/
@Schema(description = "批号")
private String piNo;
/**
* 出入库数量
*/
@Schema(description = "出入库数量")
private Double quantity;
/**
* 金额
*/
@Schema(description = "金额")
private Double sirMoney;
/**
* 采购单号
*/
@Schema(description = "采购单号")
private String buyCode;
/**
* 检验单号
*/
@Schema(description = "检验单号")
private String checkNo;
/**
* 生产标识
*/
@Schema(description = "生产标识")
private String quantityLevel;
/**
* 是否模架物料 1=/0=默认值0
*/
@Schema(description = "是否模架物料 1=是/0=否(默认值:0)")
private Boolean moldBaseMaterial;
/**
* 过期/报废日期
*/
@Schema(description = "过期/报废日期")
private Date scrapCycle;
/**
* 炉批号
*/
@Schema(description = "炉批号")
private String stovePiNo;
/**
* 分厂id
*/
@Schema(description = "分厂id")
private String deptId;
/**
* 车间订单号
*/
@Schema(description = "车间订单号")
private String woCode;
/**
* 出入库类型/出库或入库
*/
@Schema(description = "出入库类型/出库或入库")
private String inOutType;
/**
* 出入库原因
*/
@Schema(description = "出入库原因")
private String inOutReason;
/**
* 出入库日期
*/
@Schema(description = "出入库日期")
private Date inOutDate;
/**
* 出入库来源
*/
@Schema(description = "出入库来源")
private Short inOutSource;
/**
* 业务人员/领用人ID
*/
@Schema(description = "业务人员/领用人ID")
private Long userId;
/**
* 出入库单号
*/
@Schema(description = "出入库单号")
private String sirCode;
/**
* 物料ID关联st_goods表主键
*/
@Schema(description = "物料ID(关联st_goods表主键)")
private Long goodsId;
/**
* 总金额
*/
private Double allMoney;
/**
* 保管员
*/
private String keeper;
/**
* 厚度
*/
private String thickness;
/**
* 物料需求ID
*/
@Schema(description = "物料需求ID关联PvBomRequest")
private Long brId;
private Date warehousingDate;
private String barCode;
/*1:采购入库,2.生产入库,3:其他入库,4调拨入库,5erp转移入库,7生产退料
11:配额出库,12:其他出库,13:领料出库 15刀具出库*/
public static final Short INOUT_SOURCE_PURCHASE_RECEIPT = 1;
public static final Short INOUT_SOURCE_PRODUCE_PURCHASE_RECEIPT = 2;
public static final Short INOUT_SOURCE_OTHER_PURCHASE_RECEIPT = 3;
public static final Short INOUT_SOURCE_TRANSFER_RECEIPT = 4;
public static final Short INOUT_SOURCE_WAREHOUSE_TRANSFER = 5;
public static final Short INOUT_SOURCE_PRODUCTION_MATERIAL_RETURN = 7;
public static final Short INOUT_SOURCE_QUOTA_OUT = 11;
public static final Short INOUT_SOURCE_OTHER_OUT = 12;
public static final Short INOUT_SOURCE_ASSIGN_OUT = 13;
public static final Short INOUT_SOURCE_TOOl_OUT = 15;
}

@ -0,0 +1,66 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStorageLocation
* @description: 库位维护表 实体类
* @autor: WuSiYu
* @create 2025-12-18 14:33
**/
@Data
@TableName("ST_STORAGE_LOCATION")
@Schema(description = "StStorageLocation对象")
@EqualsAndHashCode(callSuper = true)
public class StStorageLocation extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房ID关联st_storehouse表
*/
@Schema(description = "库房ID(关联st_storehouse表)")
private Long shId;
/**
* 库位号
*/
@Schema(description = "库位号")
private String location;
/**
* 物料编号关联st_goods表goods_code字段
*/
@Schema(description = "物料编号(关联st_goods表goods_code字段)")
private String goodsCode;
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String goodsName;
/**
* 物料规格
*/
@Schema(description = "物料规格")
private String specifications;
/**
* 型号/牌号
*/
@Schema(description = "型号/牌号")
private String materialModel;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private Long deptId;
}

@ -0,0 +1,150 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStoreBill
* @description: 仓库凭证 实体类
* @autor: WuSiYu
* @create 2026-01-15 13:21
**/
@Data
@TableName("ST_STORE_BILL")
@Schema(description = "StStoreBill对象")
@EqualsAndHashCode(callSuper = true)
public class StStoreBill extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 凭证分类;1物料入库2物料出库3借用4归还5调出6调入7提请
*/
@Schema(description = "凭证分类;1,物料入库;2,物料出库;3,借用;4,归还;5,调出;6,调入;7,提请 ;")
private Short billFlag;
/**
* 收发标志;true:入库false:出库
*/
@Schema(description = "收发标志;true:入库,false:出库")
private String reCeOrSend;
/**
* 物料信息
*/
@Schema(description = "物料信息")
private Long goodsId;
/**
* 数量
*/
@Schema(description = "数量")
private Double quantity;
/**
* 批号
*/
@Schema(description = "批号")
private String piNo;
/**
* 金额
*/
@Schema(description = "金额")
private Double money;
/**
* 使用次数
*/
@Schema(description = "使用次数")
private Long useNum;
/**
* 检验编码
*/
@Schema(description = "检验编码")
private String checkCode;
/**
* 凭证单号
*/
@Schema(description = "凭证单号")
private String billCode;
/**
* 凭证日期
*/
@Schema(description = "凭证日期")
private Date billDate;
/**
* 部门;外键部门
*/
@Schema(description = "部门;外键(部门)")
private String deptId;
/**
* 人员;外键人员
*/
@Schema(description = "人员;外键(人员)")
private Long billMan;
/**
* 原因;外键原因
*/
@Schema(description = "原因;外键(原因)")
private String bcId;
/**
* 来源;0:正常1采购2生产
*/
@Schema(description = "来源;0:正常;1:采购;2:生产;")
private Short billSource;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
/**
* 仓库;外键仓库
*/
@Schema(description = "仓库;外键(仓库)")
private Long stoId;
/**
* 状态1:新建20:完成
*/
@Schema(description = "状态;1:新建,20:完成")
private Short curStatus;
/**
* 到期日期
*/
@Schema(description = "到期日期")
private Date expirationDate;
/**
* 库位ID
*/
@Schema(description = "库位ID")
private Long slId;
/**
* 库房ID
*/
@Schema(description = "库房ID")
private Long shId;
/**
* 借用
*/
public static Short BILLSOURCE_BORROW = 4;
/**
* 归还
*/
public static Short BILLSOURCE_RETURN = 5;
/**
* 新建
*/
public static Short CURSTATUS_NEW = 1;
/**
* 完成
*/
public static Short CURSTATUS_COMPLETE = 20;
}

@ -0,0 +1,91 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStorehouse
* @description: 库房维护表 实体类
* @autor: WuSiYu
* @create 2025-12-18 14:16
**/
@Data
@TableName("ST_STOREHOUSE")
@Schema(description = "StStorehouse对象")
@EqualsAndHashCode(callSuper = true)
public class StStorehouse extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房编号
*/
@Schema(description = "库房编号")
private String shCode;
/**
* 库房名称
*/
@Schema(description = "库房名称")
private String shName;
/**
* 所属分类
*/
@Schema(description = "所属分类")
private Short type;
/**
* 工装分类
*/
@Schema(description = "工装分类")
private Short toolingType;
/**
* 库房层级
*/
@Schema(description = "库房层级")
private String shLevel;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private String deptId;
/**
* 保管员ID
*/
@Schema(description = "保管员ID")
private Long saveUser;
/**
* 类别说明
*/
@Schema(description = "类别说明")
private String memo;
// 模具库
public static final Short TYPE_MOLD = 0;
// 材料库
public static final Short TYPE_PART = 1;
// 刀具库
public static final Short TYPE_TOOL = 2;
// 工装库
public static final Short TYPE_WORK = 3;
// 电极库
public static final Short TYPE_ELECTRODE = 4;
// 量具库
public static final Short TYPE_RULE = 5;
// 夹具库
public static final Short TYPE_JIA_JU = 6;
public static Short TOOLING_TYPE_MOLD = 0;//模具
public static Short TOOLING_TYPE_TOOL = 1;//工装
public static Short TOOLING_TYPE_RULE = 2;//量具
}

@ -14,8 +14,8 @@ import lombok.Data;
@Data
public class PrintParentWoLabel {
private PrintWoLabel plOne;
private PrintWoLabel plTwo;
private PrintWoLabel plThree;
private PrintWoLabel plFour;
private PrintWoLabel plOne;
private PrintWoLabel plTwo;
private PrintWoLabel plThree;
private PrintWoLabel plFour;
}

@ -0,0 +1,86 @@
package org.springblade.wms.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName PrintStoresList
* @description:
* @autor: WuSiYu
* @create 2025-12-17 18:01
**/
@Data
public class PrintStoresList implements Serializable {
/**
* 供货单位
*/
private String supplier;
/**
* 物料信息
*/
private String materialMess;
/**
* 物料编码
*/
private String materialCode;
/**
* 入库日期
*/
private String inStore;
/**
* 库位号
*/
private String locator;
/**
* 单位
*/
private String unit;
/**
* 检验编号
*/
private String testCode;
/**
* 到期日期
*/
private String matureDate;
/**
* 批次号
*/
private String batchNo;
/**
* 生产标识
*/
private String identification;
/**
* 炉批号
*/
private String heatNo;
/**
* 日期
*/
private String date;
/**
* 摘要
*/
private String memo;
/**
* 收入数
*/
private String income;
/**
* 发出数
*/
private String issueNum;
/**
* 结存数
*/
private String balance;
/**
* 经手人
*/
private String handledBy;
}

@ -17,25 +17,25 @@ import java.io.Serializable;
@Data
public class PrintWoLabel implements Serializable {
/**
* 条码号
*/
private String rsId;
/**
* 编码
*/
private String code;
/**
* 名称
*/
private String name;
/**
* 检验编号
*/
private String checkCode;
/**
* 日期
*/
private String date;
/**
* 条码号
*/
private String rsId;
/**
* 编码
*/
private String code;
/**
* 名称
*/
private String name;
/**
* 检验编号
*/
private String checkCode;
/**
* 日期
*/
private String date;
}

@ -18,7 +18,7 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class StGoodsVO extends StGoods {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,52 @@
package org.springblade.wms.pojo.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StRealtimeStockVO
* @description: 仓库实时结余表 视图实体类
* @autor: WuSiYu
* @create 2025-12-15 14:49
**/
@Data
@EqualsAndHashCode(callSuper = true)
public class StRealtimeStockVO extends StRealtimeStock {
@Serial
private static final long serialVersionUID = 1L;
private Long id; // 主键ID
private Long goodsId; // 物料ID
private Double quantity; // 库存数量
private Double lockQuantity;
private Double onthewayQuantity;
private Double currentQuantity;
private String piNo; // 批号
private Long slId; // 库位ID
private String barCode; // 条形码
private Date scrapCycle; // 报废周期
private String checkCode; // 检验码
private String splyCode; // 供应商编码
private String goodsName;
private String shName;
private Long shId;
private String location;
private String specifications;
@TableField(exist = false)
private String filterValue;
private Boolean special; // 特殊标识
private Double syQuantity;
@TableField(exist = false)
private String goodsCodeAndGoodsName;
}

@ -18,8 +18,8 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class StStorageLocationVO extends StStorageLocation {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
}

@ -18,8 +18,8 @@ import java.io.Serial;
@Data
@EqualsAndHashCode(callSuper = true)
public class StStoreBillVO extends StStoreBill {
@Serial
private static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;
}

@ -118,6 +118,12 @@
<artifactId>aviator</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-wms</artifactId>
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

@ -36,7 +36,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
* @author Chill
*/
@BladeCloudApplication
@EnableScheduling
public class DeskApplication {
public static void main(String[] args) {

@ -94,10 +94,12 @@ public class EquipmentController extends BladeController {
@Parameter(name = "typeName", description = "类别名称", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "used", description = "服役状态", in = ParameterIn.QUERY, schema = @Schema(type = "Integer")),
@Parameter(name = "virtualMac", description = "虚拟设备", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "workCenterId", description = "作业中心ID", in = ParameterIn.QUERY, schema = @Schema(type = "Integer")),
@Parameter(name = "equipmentLocation", description = "设备位置", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
})
public R<IPage<EquipmentVO>> page(@Parameter(hidden = true)EquipmentEntity equipment, Query query) {
IPage<EquipmentEntity> pages = equipmentService.selectEquipmentPage(Condition.getPage(query), equipment);
return R.data(EquipmentWrapper.build().pageVO(pages));
IPage<EquipmentVO> pages = equipmentService.selectEquipmentPage(Condition.getPage(query), equipment);
return R.data(pages);
}
/**

@ -1,25 +1,30 @@
package org.springblade.desk.device.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.request.MeasuringUsageQuery;
import org.springblade.desk.device.pojo.excel.MeasurementRecordsExcel;
import org.springblade.desk.device.service.IMeasurementRecordsService;
import org.springblade.desk.device.service.IMeasuringUsageService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* 计量记录 控制器
@ -43,7 +48,7 @@ public class MeasurementRecordsController extends BladeController {
* @return
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@ApiOperationSupport(order = 1)
@Operation(summary = "分页", description = "")
public R<IPage<MeasurementRecordsEntity>> page(@RequestParam("cmType") Integer cmType, Query query) {
IPage<MeasurementRecordsEntity> pages = iMeasurementRecordsService.selectMeasurementRecordsPage(Condition.getPage(query), cmType);
@ -55,17 +60,20 @@ public class MeasurementRecordsController extends BladeController {
* 导出数据
*/
// @IsAdmin
// @GetMapping("/export-equipment")
// @ApiOperationSupport(order = 9)
// @Operation(summary = "导出数据", description = "传入equipment")
// public void exportEquipment(@Parameter(hidden = true) @RequestParam Map<String, Object> equipment, BladeUser bladeUser, HttpServletResponse response) {
// QueryWrapper<EquipmentEntity> queryWrapper = Condition.getQueryWrapper(equipment, EquipmentEntity.class);
// //if (!AuthUtil.isAdministrator()) {
// // queryWrapper.lambda().eq(Equipment::getTenantId, bladeUser.getTenantId());
// //}
// //queryWrapper.lambda().eq(EquipmentEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
// List<EquipmentExcel> list = measuringUsageService.exportEquipment(queryWrapper);
// ExcelUtil.export(response, "设备信息表数据" + DateUtil.time(), "设备信息表数据表", list, EquipmentExcel.class);
// }
@GetMapping("/export-measurementRecords")
@ApiOperationSupport(order = 2)
@Operation(summary = "导出数据", description = "")
public void exportMeasuringUpkeep(@RequestParam("cmType") Integer cmType, Query query, HttpServletResponse response) {
query.setSize(99999);
IPage<MeasurementRecordsEntity> pages = iMeasurementRecordsService.selectMeasurementRecordsPage(Condition.getPage(query), cmType);
List<MeasurementRecordsEntity> list = pages.getRecords();
List<MeasurementRecordsExcel> excels = new ArrayList<>();
for (MeasurementRecordsEntity measurementRecordsEntity : list) {
MeasurementRecordsExcel excel = new MeasurementRecordsExcel();
BeanUtils.copyProperties(measurementRecordsEntity, excel);
excels.add(excel);
}
ExcelUtil.export(response, "量具保养数据" + DateUtil.time(), "计量记录", excels, MeasurementRecordsExcel.class);
}
}

@ -1,24 +1,26 @@
package org.springblade.desk.device.controller;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.wms.feign.StRealtimeStockClient;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
@ -27,9 +29,8 @@ import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tool.constant.BladeConstant;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
@ -48,6 +49,9 @@ public class MeasuringUpkeepController extends BladeController {
private final IMeasuringUpkeepService measuringUpkeepService;
@Resource
private StRealtimeStockClient client;
/**
* 量具保养 详情
*/
@ -65,13 +69,9 @@ public class MeasuringUpkeepController extends BladeController {
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "")
@Parameters({
@Parameter(name = "mmCode", description = "保养单号", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
@Parameter(name = "approvalStatus", description = "审批状态", in = ParameterIn.QUERY, schema = @Schema(type = "int")),
})
public R<IPage<MeasuringUpkeepVO>> page(@Parameter(hidden = true) MeasuringUpkeepEntity measuringUpkeep, Query query) {
IPage<MeasuringUpkeepEntity> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep);
return R.data(MeasuringUpkeepWrapper.build().pageVO(pages));
public R<IPage<MeasuringUpkeepVO>> page(@Parameter(hidden = true) MeasuringUpkeepQuery measuringUpkeep, Query query) {
IPage<MeasuringUpkeepVO> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep);
return R.data(pages);
}
/**
@ -115,21 +115,72 @@ public class MeasuringUpkeepController extends BladeController {
}
/**
* 量具保养申请
*/
@PostMapping("/maintenanceAppFun")
@ApiOperationSupport(order = 8)
@Operation(summary = "量具保养申请", description = "传入ids")
public R maintenanceAppFun(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return measuringUpkeepService.maintenanceAppFun(ids);
}
/**
* 导出数据
*/
@IsAdmin
// @IsAdmin
@GetMapping("/export-measuringUpkeep")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入measuringUpkeep")
public void exportMeasuringUpkeep(@Parameter(hidden = true) @RequestParam Map<String, Object> measuringUpkeep, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<MeasuringUpkeepEntity> queryWrapper = Condition.getQueryWrapper(measuringUpkeep, MeasuringUpkeepEntity.class);
public void exportMeasuringUpkeep(MeasuringUpkeepQuery measuringUpkeepQuery, Query query, BladeUser bladeUser, HttpServletResponse response) {
// QueryWrapper<MeasuringUpkeepEntity> queryWrapper = Condition.getQueryWrapper(measuringUpkeep, MeasuringUpkeepEntity.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(MeasuringUpkeep::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(MeasuringUpkeepEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<MeasuringUpkeepExcel> list = measuringUpkeepService.exportMeasuringUpkeep(queryWrapper);
ExcelUtil.export(response, "量具保养数据" + DateUtil.time(), "量具保养数据表", list, MeasuringUpkeepExcel.class);
// List<MeasuringUpkeepExcel> list = measuringUpkeepService.exportMeasuringUpkeep(queryWrapper);
query.setSize(99999);
IPage<MeasuringUpkeepVO> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeepQuery);
List<MeasuringUpkeepVO> list = pages.getRecords();
List<MeasuringUpkeepExcel> excels = new ArrayList<>();
for (MeasuringUpkeepVO measuringUpkeepVO : list) {
MeasuringUpkeepExcel excel = new MeasuringUpkeepExcel();
BeanUtils.copyProperties(measuringUpkeepVO, excel);
excels.add(excel);
}
ExcelUtil.export(response, "量具保养数据" + DateUtil.time(), "量具保养数据表", excels, MeasuringUpkeepExcel.class);
}
/**
* 量具保养新增页面列表
*/
@GetMapping("/newlyAddedList")
@ApiOperationSupport(order = 3)
@Operation(summary = "量具保养新增页面列表", description = "传入stRealtimeStock,默认过滤量具类型仓库,按sumNum排序")
public R<IPage<StRealtimeStockVO>> pageToolsData(StRealtimeStockVO stRealtimeStock, Query query) {
if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) {
query.setDescs("sumNum"); // 默认按sumNum降序排序
}
R<Page<StRealtimeStockVO>> measuringTools = client.getMeasuringTools(stRealtimeStock, query);
Page<StRealtimeStockVO> data = measuringTools.getData();
Page<StRealtimeStockVO> pages = new Page<>();
// 复制分页属性
pages.setRecords(data.getRecords());
pages.setTotal(data.getTotal());
pages.setCurrent(data.getCurrent());
pages.setSize(data.getSize());
pages.setPages(data.getPages());
return R.data(pages);
}
/**
* 加入保养
*/
@PostMapping("/addMaintenance")
@ApiOperationSupport(order = 8)
@Operation(summary = "加入保养", description = "传入ids")
public R addMaintenance(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return measuringUpkeepService.addMaintenance(Func.toLongList(ids));
}
}

@ -25,7 +25,7 @@ public interface EquipmentMapper extends BaseMapper<EquipmentEntity> {
* @param equipment 查询参数
* @return List<EquipmentVO>
*/
List<EquipmentEntity> selectEquipmentPage(IPage page, EquipmentEntity equipment);
List<EquipmentVO> selectEquipmentPage(IPage page, EquipmentEntity equipment);
/**

@ -38,8 +38,37 @@
<result column="fault_count" property="faultCount" javaType="java.lang.Integer"/>
</resultMap>
<select id="selectEquipmentPage" resultMap="equipmentResultMap">
select * from MES_EQUIPMENT where is_deleted = 0
<select id="selectEquipmentPage" resultType="org.springblade.desk.device.pojo.vo.EquipmentVO">
select
e.*,
wc.WC_NAME as workCenterName
from MES_EQUIPMENT e LEFT JOIN BA_WORK_CENTER wc ON e.WORK_CENTER_ID = wc.ID
WHERE e.IS_DELETED = 0
<if test="equipment.deviceCode != null and equipment.deviceCode != ''">
AND e.DEVICE_CODE LIKE CONCAT('%', CONCAT(#{equipment.deviceCode}, '%'))
</if>
<if test="equipment.deviceName != null and equipment.deviceName != ''">
AND e.DEVICE_NAME LIKE CONCAT('%', CONCAT(#{equipment.deviceName}, '%'))
</if>
<if test="equipment.category != null and equipment.category != ''">
AND e.CATEGORY LIKE CONCAT('%', CONCAT(#{equipment.category}, '%'))
</if>
<if test="equipment.typeName != null and equipment.typeName != ''">
AND e.TYPE_NAME LIKE CONCAT('%', CONCAT(#{equipment.typeName}, '%'))
</if>
<if test="equipment.equipmentLocation != null and equipment.equipmentLocation != ''">
AND e.EQUIPMENT_LOCATION LIKE CONCAT('%', CONCAT(#{equipment.equipmentLocation}, '%'))
</if>
<if test="equipment.used != null">
AND e.USED = #{equipment.used}
</if>
<if test="equipment.virtualMac != null">
AND e.VIRTUAL_MAC = #{equipment.virtualMac}
</if>
<if test="equipment.workCenterId != null">
AND wc.ID = #{equipment.workCenterId}
</if>
ORDER BY e.CREATE_TIME DESC
</select>

@ -2,6 +2,7 @@ package org.springblade.desk.device.mapper;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -22,10 +23,10 @@ public interface MeasuringUpkeepMapper extends BaseMapper<MeasuringUpkeepEntity>
* 自定义分页
*
* @param page 分页参数
* @param measuringUpkeep 查询参数
* @param query 查询参数
* @return List<MeasuringUpkeepVO>
*/
List<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage page, MeasuringUpkeepVO measuringUpkeep);
List<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage page, MeasuringUpkeepQuery query);
/**

@ -21,11 +21,106 @@
<result column="RLS_ID" property="rlsId"/>
</resultMap>
<!-- 定义结果映射 -->
<resultMap id="MeasuringUpkeepVOResultMap" type="org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO">
<!-- 基类字段映射 -->
<id column="id" property="id"/>
<result column="TENANT_ID" property="tenantId"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="MM_CODE" property="mmCode"/>
<result column="MI_ID" property="miId"/>
<result column="MEMO" property="memo"/>
<result column="CREATE_MAN" property="createMan"/>
<result column="APPROVAL_STATUS" property="approvalStatus"/>
<result column="RLS_ID" property="rlsId"/>
<!-- 关联的ST_REALTIME_STOCK表字段映射 -->
<result column="goods_id" property="goodsId"/>
<result column="sh_id" property="shId"/>
<result column="sl_id" property="slId"/>
<!-- 关联的st_goods表字段映射 -->
<result column="goods_name" property="goodsName"/>
<result column="goods_code" property="goodsCode"/>
<result column="specifications" property="specifications"/>
<!-- 关联的ST_STOREHOUSE表字段映射 -->
<result column="sh_name" property="shName"/>
<!-- 关联的ST_STORAGE_LOCATION表字段映射 -->
<result column="location" property="location"/>
<!-- ST_REALTIME_STOCK表本身字段映射 -->
<result column="pi_no" property="piNo"/>
<result column="quantity" property="quantity"/>
<result column="quantity_level" property="quantityLevel"/>
<result column="balance_money" property="balanceMoney"/>
<result column="sum_num" property="sumNum"/>
<!-- 状态名称映射(可通过字典或计算字段获取) -->
<result column="status_name" property="statusName"/>
</resultMap>
<!-- 多表联合查询SQL -->
<select id="selectMeasuringUpkeepPage" resultMap="MeasuringUpkeepVOResultMap">
SELECT
mmu.*,
st.goods_id,
st.sh_id,
st.sl_id,
st.pi_no,
st.quantity,
st.quantity_level,
st.balance_money,
st.sum_num,
g.goods_name,
g.goods_code,
g.specifications,
sh.sh_name,
sl.location,
<!-- 状态名称可以通过CASE语句或字典表获取 -->
CASE
WHEN mmu.status = 0 THEN '新建'
WHEN mmu.status = 1 THEN '已申请'
ELSE '未知状态'
END as status_name
<select id="selectMeasuringUpkeepPage" resultMap="mesMeasuringUpkeepResultMap">
select *
from MES_MEASURING_UPKEEP
where is_deleted = 0
FROM MES_MEASURING_UPKEEP mmu
LEFT JOIN ST_REALTIME_STOCK st ON mmu.mi_id = st.id
LEFT JOIN st_goods g ON st.goods_id = g.id
LEFT JOIN ST_STOREHOUSE sh ON st.sh_id = sh.id
LEFT JOIN ST_STORAGE_LOCATION sl ON st.sl_id = sl.id
<where>
<if test="query.status != null">
AND mmu.status = #{query.statuss}
</if>
<if test="query.location != null and query.location != ''">
AND sl.location LIKE CONCAT('%', CONCAT(#{query.location}, '%'))
</if>
<if test="query.goodsName != null and query.goodsName != ''">
AND g.goods_name LIKE CONCAT('%', CONCAT(#{query.goodsName}, '%'))
</if>
<if test="query.piNo != null and query.piNo != ''">
AND st.pi_no LIKE CONCAT('%', CONCAT(#{query.piNo}, '%'))
</if>
<if test="query.shName != null and query.shName != ''">
AND sh.sh_name LIKE CONCAT('%', CONCAT(#{query.shName}, '%'))
</if>
<if test="query.ids != null and query.ids != ''">
AND mmu.ID IN
<foreach collection="query.ids.split(',')" item="id"
open="(" separator="," close=")" index="index">
#{id}
</foreach>
</if>
</where>
ORDER BY mmu.create_time DESC
</select>

@ -48,7 +48,7 @@ public interface IEquipmentService extends BaseService<EquipmentEntity> {
* @param equipment 查询参数
* @return IPage<EquipmentVO>
*/
IPage<EquipmentEntity> selectEquipmentPage(IPage<EquipmentEntity> page, EquipmentEntity equipment);
IPage<EquipmentVO> selectEquipmentPage(IPage<EquipmentVO> page, EquipmentEntity equipment);
/**

@ -1,8 +1,10 @@
package org.springblade.desk.device.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.core.tool.api.R;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
@ -23,7 +25,7 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
* @param measuringUpkeep 查询参数
* @return IPage<MeasuringUpkeepVO>
*/
IPage<MeasuringUpkeepEntity> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepEntity> page, MeasuringUpkeepEntity measuringUpkeep);
IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep);
/**
@ -34,4 +36,17 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
*/
List<MeasuringUpkeepExcel> exportMeasuringUpkeep(Wrapper<MeasuringUpkeepEntity> queryWrapper);
/**
* 保养申请
*
* @param ids
*/
R maintenanceAppFun(String ids);
/**
* 加入保养
*
* @param ids
*/
R addMaintenance(List<Long> ids);
}

@ -57,23 +57,24 @@ public class EquipmentServiceImpl extends BaseServiceImpl<EquipmentMapper, Equip
.version(HttpClient.Version.HTTP_2)
.build();
@Override
public IPage<EquipmentEntity> selectEquipmentPage(IPage<EquipmentEntity> page, EquipmentEntity equipment) {
public IPage<EquipmentVO> selectEquipmentPage(IPage<EquipmentVO> page, EquipmentEntity equipment) {
// return page.setRecords(baseMapper.selectEquipmentPage(page, equipment));
// 1. 创建条件构造器
LambdaQueryWrapper<EquipmentEntity> wrapper = Wrappers.<EquipmentEntity>lambdaQuery();
// 2. 动态添加条件(核心!)
// 根据实体对象 entity 中字段是否为空,来动态拼接WHERE条件
wrapper.like(Objects.nonNull(equipment.getDeviceCode()), EquipmentEntity::getDeviceCode, equipment.getDeviceCode())
.like(Objects.nonNull(equipment.getDeviceName()), EquipmentEntity::getDeviceName, equipment.getDeviceName())
.like(Objects.nonNull(equipment.getCategory()), EquipmentEntity::getCategory, equipment.getCategory())
.like(Objects.nonNull(equipment.getTypeName()), EquipmentEntity::getTypeName, equipment.getTypeName())
.like(Objects.nonNull(equipment.getEquipmentLocation()), EquipmentEntity::getEquipmentLocation, equipment.getEquipmentLocation())
.eq(Objects.nonNull(equipment.getUsed()), EquipmentEntity::getUsed, equipment.getUsed())
.eq(Objects.nonNull(equipment.getVirtualMac()), EquipmentEntity::getVirtualMac, equipment.getVirtualMac())
.eq(Objects.nonNull(equipment.getWorkCenterId()), EquipmentEntity::getWorkCenterId, equipment.getWorkCenterId());
// LambdaQueryWrapper<EquipmentEntity> wrapper = Wrappers.<EquipmentEntity>lambdaQuery();
//
// // 2. 动态添加条件(核心!)
// // 根据实体对象 entity 中字段是否为空,来动态拼接WHERE条件
// wrapper.like(Objects.nonNull(equipment.getDeviceCode()), EquipmentEntity::getDeviceCode, equipment.getDeviceCode())
// .like(Objects.nonNull(equipment.getDeviceName()), EquipmentEntity::getDeviceName, equipment.getDeviceName())
// .like(Objects.nonNull(equipment.getCategory()), EquipmentEntity::getCategory, equipment.getCategory())
// .like(Objects.nonNull(equipment.getTypeName()), EquipmentEntity::getTypeName, equipment.getTypeName())
// .like(Objects.nonNull(equipment.getEquipmentLocation()), EquipmentEntity::getEquipmentLocation, equipment.getEquipmentLocation())
// .eq(Objects.nonNull(equipment.getUsed()), EquipmentEntity::getUsed, equipment.getUsed())
// .eq(Objects.nonNull(equipment.getVirtualMac()), EquipmentEntity::getVirtualMac, equipment.getVirtualMac())
// .eq(Objects.nonNull(equipment.getWorkCenterId()), EquipmentEntity::getWorkCenterId, equipment.getWorkCenterId());
// 3. 执行分页查询
return baseMapper.selectPage(page, wrapper);
List<EquipmentVO> equipmentVOS = baseMapper.selectEquipmentPage(page, equipment);
return page.setRecords(equipmentVOS);
}

@ -1,20 +1,44 @@
package org.springblade.desk.device.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import org.springblade.desk.device.mapper.MeasuringUpkeepMapper;
import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springblade.desk.jobtransfer.pojo.vo.PostHandleVO;
import org.springblade.system.cache.SysCache;
import org.springblade.system.cache.UserCache;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 量具保养 服务实现类
@ -22,22 +46,25 @@ import java.util.Objects;
* @author qyl
* @since 2025-12-29
*/
@Slf4j
@Service
public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepMapper, MeasuringUpkeepEntity> implements IMeasuringUpkeepService {
private static final AtomicInteger counter = new AtomicInteger(0);
private static String lastDate = "";
// 使用JDK 17内置的HttpClient(线程安全,可复用)
private final HttpClient httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30))
.version(HttpClient.Version.HTTP_2)
.build();
@Value("${request.lims.url}")
private String limsUrl;
@Override
public IPage<MeasuringUpkeepEntity> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepEntity> page, MeasuringUpkeepEntity measuringUpkeep) {
public IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep) {
// return page.setRecords(baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep));
// 1. 创建条件构造器
LambdaQueryWrapper<MeasuringUpkeepEntity> wrapper = Wrappers.<MeasuringUpkeepEntity>lambdaQuery();
// 2. 动态添加条件(核心!)
// 根据实体对象 entity 中字段是否为空,来动态拼接WHERE条件
wrapper.like(Objects.nonNull(measuringUpkeep.getMmCode()), MeasuringUpkeepEntity::getMmCode, measuringUpkeep.getMmCode());
wrapper.eq(Objects.nonNull(measuringUpkeep.getApprovalStatus()), MeasuringUpkeepEntity::getApprovalStatus, measuringUpkeep.getApprovalStatus());
// 3. 执行分页查询
return baseMapper.selectPage(page, wrapper);
List<MeasuringUpkeepVO> dataList = baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep);
return page.setRecords(dataList);
}
@ -50,4 +77,122 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
return measuringUpkeepList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public R maintenanceAppFun(String ids) {
List<Long> longList = Func.toLongList(ids);
if (ids == null && longList.size() == 0) {
return R.fail("请选择数据!");
}
MeasuringUpkeepQuery query = new MeasuringUpkeepQuery();
query.setIds(ids);
IPage<MeasuringUpkeepVO> iPage = new Page<>();
iPage.setSize(99999);
IPage<MeasuringUpkeepVO> measuringUpkeepVOIPage = this.selectMeasuringUpkeepPage(iPage, query);
if (measuringUpkeepVOIPage.getRecords() == null || measuringUpkeepVOIPage.getRecords().size() == 0) {
return R.fail("请选择数据!");
}
List<MeasuringUpkeepVO> list = measuringUpkeepVOIPage.getRecords();
for (MeasuringUpkeepVO measuringUpkeepVO : list) {
// MeasuringUpkeepEntity measuringUpkeep = this.getById(id);
// if (measuringUpkeep == null) {
// continue;
// }
// 构建请求体JSON
JSONObject requestBody = buildRequestBody(measuringUpkeepVO);
// 创建HTTP请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(limsUrl + "/api/cloud-customized/zhgdDeviceParams/getDeviceListZhgd"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody.toJSONString()))
.timeout(Duration.ofSeconds(60))
.build();
try {
// 发送同步请求
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
log.error("HTTP请求失败,状态码: {}", response.statusCode());
continue;
}
//成功返回改变申请单状态
String responseBody = response.body();
JSONObject result = JSONObject.parseObject(responseBody);
if (result != null && result.getBoolean("success")) {
measuringUpkeepVO.setStatus(MeasuringUpkeepEntity.CURSTATUS_YSQ);
this.updateById(measuringUpkeepVO);
}
} catch (Exception e) {
log.error("获取计量记录记录数据接口调用失败: {}", e.getMessage(), e);
}
}
return R.success("操作完成");
}
@Override
@Transactional(rollbackFor = Exception.class)
public R addMaintenance(List<Long> ids) {
if (ids == null && ids.size() == 0) {
return R.fail("请选择数据!");
}
List<MeasuringUpkeepEntity> list = new ArrayList<>();
ids.forEach(id -> {
MeasuringUpkeepEntity entity = new MeasuringUpkeepEntity();
entity.setMiId(id);
entity.setStatus(MeasuringUpkeepEntity.CURSTATUS_NEW);
entity.setMmCode(nextCode(1));
entity.setCreateMan(AuthUtil.getUser() != null ? AuthUtil.getUser().getUserId() : 1);
list.add(entity);
});
return R.status(this.saveBatch(list));
}
/**
* 构建请求体
*/
private JSONObject buildRequestBody(MeasuringUpkeepVO measuringUpkeep) {
JSONObject object = new JSONObject();
object.put("deviceName", measuringUpkeep.getGoodsName());
object.put("model", measuringUpkeep.getSpecifications());
object.put("prtno", measuringUpkeep.getGoodsCode());
object.put("idstr", measuringUpkeep.getMmCode());
object.put("num", measuringUpkeep.getQuantity());
object.put("source", "5");
object.put("deptno", "3400");
//
// log.debug("请求参数: {}", object.toJSONString());
return object;
}
public String nextCode(int next) {
// 自增总长度
int len = 3;
// 获取当前日期(替代Function.getRand)
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String codePattern = sdf.format(new Date());
// 如果日期变化,重置计数器[1,7](@ref)
synchronized (this) {
if (!codePattern.equals(lastDate)) {
counter.set(0);
lastDate = codePattern;
}
}
// 原子自增
int num = counter.addAndGet(next);
// 格式化数字(替代Function.prefix)
String formattedNum = String.format("%0" + len + "d", num);
// 下个编码
String code = codePattern + formattedNum;
return code;
}
}

@ -15,6 +15,10 @@
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
@ -42,6 +46,43 @@
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.3.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.3.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-user-api</artifactId>
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-system-api</artifactId>
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-desk-api</artifactId>
</dependency>
</dependencies>
<build>

@ -1,5 +1,6 @@
package org.springblade.erpdata;
package org.springblade.wms;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
import org.springblade.core.launch.constant.AppConstant;
@ -13,7 +14,7 @@ import org.springblade.core.launch.constant.AppConstant;
public class WmsApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_DESK_NAME, WmsApplication.class, args);
BladeApplication.run(LauncherConstant.APPLICATION_WMS_NAME, WmsApplication.class, args);
System.out.println("===================");
System.out.println("===================");
System.out.println("=======启动成功!====");

@ -112,7 +112,7 @@ public class StRealtimeStockController extends BladeController {
public R<IPage<StRealtimeStockVO>> pageToolsData(StRealtimeStockVO stRealtimeStock, Query query) {
if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) {
query.setDescs("sumNum"); // 默认按sumNum降序排序
query.setDescs("sum_num"); // 默认按sumNum降序排序
}
IPage<StRealtimeStockVO> pages = stRealtimeStockService.selectToolsStockPage(Condition.getPage(query), stRealtimeStock);

@ -0,0 +1,54 @@
package org.springblade.wms.feign;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.vo.StRealtimeStockVO;
import org.springblade.wms.service.IStRealtimeStockService;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* 字典服务Feign实现类
*
* @author Chill
*/
@NonDS
@Hidden
@RestController
@AllArgsConstructor
@Slf4j
public class StRealtimeStockClientImpl implements StRealtimeStockClient {
private final IStRealtimeStockService stRealtimeStockService;
@Override
public R<Page<StRealtimeStockVO>> getMeasuringTools(StRealtimeStockVO stRealtimeStock, Query query) {
if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) {
query.setDescs("sum_num"); // 默认按sumNum降序排序
}
IPage<StRealtimeStockVO> iPages = stRealtimeStockService.selectToolsStockPage(Condition.getPage(query), stRealtimeStock);
Page<StRealtimeStockVO> pages = new Page<>();
// 复制分页属性
pages.setRecords(iPages.getRecords());
pages.setTotal(iPages.getTotal());
pages.setCurrent(iPages.getCurrent());
pages.setSize(iPages.getSize());
pages.setPages(iPages.getPages());
return R.data(pages);
}
}

@ -1,277 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StGoods
* @description:
* @autor: WuSiYu
* @create 2025-12-09 18:11
**/
@Data
@TableName("ST_GOODS")
@Schema(description = "StGoods对象")
@EqualsAndHashCode(callSuper = true)
public class StGoods extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料编码
*/
@Schema(description = "物料编码")
private String goodsCode;
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String goodsName;
/**
* 最高库存
*/
@Schema(description = "最高库存")
private Double maxNum;
/**
* 最低库存
*/
@Schema(description = "最低库存")
private Double minNum;
/**
* 采购数量
*/
@Schema(description = "采购数量")
private Double purchaseQuantity;
/**
* 必检标识
*/
@Schema(description = "必检标识")
private Short mustCheck;
/**
* 是否停用默认值0
*/
@Schema(description = "是否停用(默认值:0)")
private Boolean used;
/**
* 使用件数核算
*/
@Schema(description = "使用件数核算")
private Short numAcc;
/**
* 产地
*/
@Schema(description = "产地")
private String madeIn;
/**
* 单价
*/
@Schema(description = "单价")
private Double price;
/**
* 等级
*/
@Schema(description = "等级")
private String grade;
/**
* 来源 1=自制 2=外购
*/
@Schema(description = "来源 1=自制 2=外购")
private Short source;
/**
* 组件模式
*/
@Schema(description = "组件模式")
private String prtType;
/**
* 版本
*/
@Schema(description = "版本")
private String releaseNo;
/**
* 版本时间
*/
@Schema(description = "版本时间")
private Date releaseNoTime;
/**
* 型号
*/
@Schema(description = "型号")
private String materialModel;
/**
* 重量
*/
@Schema(description = "重量")
private Double weight;
/**
* 计量单位
*/
@Schema(description = "计量单位")
private String unitName;
/**
* 产品类别
*/
@Schema(description = "产品类别")
private String productCategory;
/**
* 规格型号
*/
@Schema(description = "规格型号")
private String specifications;
/**
* 技术条件
*/
@Schema(description = "技术条件")
private String productTechSpec;
/**
* 密度
*/
@Schema(description = "密度")
private Double density;
/**
* 图号
*/
@Schema(description = "图号")
private String drawingNo;
/**
* 变更通告编号
*/
@Schema(description = "变更通告编号")
private String ecnNo;
/**
* 是否成品默认值0
*/
@Schema(description = "是否成品(默认值:0)")
private Short endItem;
/**
* 优选等级
*/
@Schema(description = "优选等级")
private String priority;
/**
* 超级链接
*/
@Schema(description = "超级链接")
private String partLink;
/**
* 腔数
*/
@Schema(description = "腔数")
private String cavityNo;
/**
* 采购部门
*/
@Schema(description = "采购部门")
private Long deptId;
/**
* 物料类别
*/
@Schema(description = "物料类别")
private Long gcId;
/**
* 生命周期状态
*/
@Schema(description = "生命周期状态")
private String partRevisionStatus;
/**
* 牌号
*/
@Schema(description = "牌号")
private String tradeMark;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 锁料数量
*/
@Schema(description = "锁料数量")
private Double lockQuantity;
/**
* 在途数量
*/
@Schema(description = "在途数量")
private Double onthewayQuantity;
/**
* 当前库存
*/
@Schema(description = "当前库存")
private Double currentQuantity;
/**
* 物料类型
*/
@Schema(description = "物料类型")
private Long goodsType;
/**
* 大类
*/
@Schema(description = "大类")
private String matBigClassify;
/**
* 小类
*/
@Schema(description = "小类")
private String matSmallClassify;
/**
* 检验编号
*/
@Schema(description = "检验编号")
private String checkCode;
/**
* 批次号
*/
@Schema(description = "批次号")
private String batch;
/**
* 表面积
*/
@Schema(description = "表面积")
private Double sectionArea;
/**
* 物料属性
*/
@Schema(description = "物料属性")
private Long materialProperty;
/**
* PDM单位
*/
@Schema(description = "PDM单位")
private String pdmUnit;
/**
* 是否工艺审批
*/
@Schema(description = "是否工艺审批")
private String processApproval;
/**
* 是否最低库存预警
*/
@Schema(description = "是否最低库存预警")
private String minWarning;
/**
* 自制
*/
public static Short MAKE_PROPERTIES_SELF = 1;
/**
* 外购
*/
public static Short MAKE_PROPERTIES_OUT = 2;
public void setSourceByStr(String str) {
if ("自制".equals(str)) {
this.source = MAKE_PROPERTIES_SELF;
} else if ("外购".equals(str)) {
this.source = MAKE_PROPERTIES_OUT;
}
}
}

@ -1,196 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.wms.mapper.StGoodsMapper;
import org.springframework.data.annotation.Transient;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StRealtimeStock
* @description: 仓库实时结余表 实体类
* @autor: WuSiYu
* @create 2025-12-15 14:45
**/
@Data
@TableName("ST_REALTIME_STOCK")
@Schema(description = "StRealtimeStock对象")
@EqualsAndHashCode(callSuper = true)
public class StRealtimeStock extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房ID
*/
@Schema(description = "库房ID")
private Long shId;
/**
* 物料ID关联st_goods表
*/
@Schema(description = "物料ID(关联st_goods表)")
@TableField("goods_id")
private Long goodsId;
/**
* 库位ID
*/
@Schema(description = "库位ID")
private Long slId;
/**
* 批次号
*/
@Schema(description = "批次号")
private String piNo;
/**
* 库存数量
*/
@Schema(description = "库存数量")
private Double quantity;
/**
* 金额-单价
*/
@Schema(description = "金额-单价")
private Double balanceMoney;
/**
* 质量等级
*/
@Schema(description = "质量等级")
private String quantityLevel;
/**
* 过期/报废日期
*/
@Schema(description = "过期/报废日期")
private Date scrapCycle;
/**
* 质量编号
*/
@Schema(description = "质量编号")
private String checkCode;
/**
* 是否模架物料1=/0=
*/
@Schema(description = "是否模架物料(1=是/0=否)")
private Boolean moldBaseMaterial;
/**
* 模架物料库存对应模架库存ID
*/
@Schema(description = "模架物料库存对应模架库存ID")
private Long moldRlsId;
/**
* 是否停用1=/0=
*/
@Schema(description = "是否停用(1=是/0=否)")
private Boolean stopUse;
/**
* 累计次数
*/
@Schema(description = "累计次数")
private Long sumNum;
/**
* 库存来源1=采购/2=生产/3=调拨等
*/
@Schema(description = "库存来源(1=采购/2=生产/3=调拨等)")
private Long stockSource;
/**
* 待保养次数
*/
@Schema(description = "待保养次数")
private Long stayMaintainNum;
/**
* 物料状态
*/
@Schema(description = "物料状态")
private Long goodsStatus;
/**
* 分厂类型
*/
@Schema(description = "分厂类型")
private Long facilityType;
/**
* 分厂ID
*/
@Schema(description = "分厂ID")
private String deptId;
/**
* 条码号
*/
@Schema(description = "条码号")
private String barCode;
/**
* 占用数量
*/
@Schema(description = "占用数量")
private Double occupyQuantity;
/**
* 炉批号
*/
@Schema(description = "炉批号")
private String stovePiNo;
/**
* 到期送检是否申请
*/
@Schema(description = "到期送检是否申请")
private Boolean applyFor;
/**
* 供方代码
*/
@Schema(description = "供方代码")
private String splyCode;
/**
* 限用标记
*/
@Schema(description = "限用标记")
private Long limitUseFlag;
/**
* ERP入库时间
*/
@Schema(description = "ERP入库时间")
private Date erpStorageTime;
/**
* 是否印字
*/
@Schema(description = "是否印字")
private Boolean printMark;
/**
* 粉重
*/
@Schema(description = "粉重")
private String powderWeight;
/**
* 材料号
*/
@Schema(description = "材料号")
private String materialNo;
/**
* 厚度
*/
@Schema(description = "厚度")
private String thickness;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
/**
* 保管员
*/
// @Transient
// private String keeper;
// @Transient
private Double outQuantity;
}

@ -1,172 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springframework.data.annotation.Transient;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStockInoutRecord
* @description: 出入库记录表 实体类
* @autor: WuSiYu
* @create 2026-01-04 11:08
**/
@Data
@TableName("ST_STOCK_INOUT_RECORD")
@Schema(description = "StStockInoutRecord对象")
@EqualsAndHashCode(callSuper = true)
public class StStockInoutRecord extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库位ID关联st_storage_location表主键
*/
@Schema(description = "库位ID(关联st_storage_location表主键)")
private Long slId;
/**
* 库存ID关联st_realtime_stock表主键
*/
@Schema(description = "库存ID(关联st_realtime_stock表主键)")
private Long rlsId;
/**
* 仓库ID关联st_storehouse表主键
*/
@Schema(description = "仓库ID(关联st_storehouse表主键)")
private Long shId;
/**
* 批号
*/
@Schema(description = "批号")
private String piNo;
/**
* 出入库数量
*/
@Schema(description = "出入库数量")
private Double quantity;
/**
* 金额
*/
@Schema(description = "金额")
private Double sirMoney;
/**
* 采购单号
*/
@Schema(description = "采购单号")
private String buyCode;
/**
* 检验单号
*/
@Schema(description = "检验单号")
private String checkNo;
/**
* 生产标识
*/
@Schema(description = "生产标识")
private String quantityLevel;
/**
* 是否模架物料 1=/0=默认值0
*/
@Schema(description = "是否模架物料 1=是/0=否(默认值:0)")
private Boolean moldBaseMaterial;
/**
* 过期/报废日期
*/
@Schema(description = "过期/报废日期")
private Date scrapCycle;
/**
* 炉批号
*/
@Schema(description = "炉批号")
private String stovePiNo;
/**
* 分厂id
*/
@Schema(description = "分厂id")
private String deptId;
/**
* 车间订单号
*/
@Schema(description = "车间订单号")
private String woCode;
/**
* 出入库类型/出库或入库
*/
@Schema(description = "出入库类型/出库或入库")
private String inOutType;
/**
* 出入库原因
*/
@Schema(description = "出入库原因")
private String inOutReason;
/**
* 出入库日期
*/
@Schema(description = "出入库日期")
private Date inOutDate;
/**
* 出入库来源
*/
@Schema(description = "出入库来源")
private Short inOutSource;
/**
* 业务人员/领用人ID
*/
@Schema(description = "业务人员/领用人ID")
private Long userId;
/**
* 出入库单号
*/
@Schema(description = "出入库单号")
private String sirCode;
/**
* 物料ID关联st_goods表主键
*/
@Schema(description = "物料ID(关联st_goods表主键)")
private Long goodsId;
/**
* 总金额
*/
private Double allMoney;
/**
* 保管员
*/
private String keeper;
/**
* 厚度
*/
private String thickness;
/**
* 物料需求ID
*/
@Schema(description = "物料需求ID关联PvBomRequest")
private Long brId;
private Date warehousingDate;
private String barCode;
/*1:采购入库,2.生产入库,3:其他入库,4调拨入库,5erp转移入库,7生产退料
11:配额出库,12:其他出库,13:领料出库 15刀具出库*/
public static final Short INOUT_SOURCE_PURCHASE_RECEIPT = 1;
public static final Short INOUT_SOURCE_PRODUCE_PURCHASE_RECEIPT = 2;
public static final Short INOUT_SOURCE_OTHER_PURCHASE_RECEIPT = 3;
public static final Short INOUT_SOURCE_TRANSFER_RECEIPT = 4;
public static final Short INOUT_SOURCE_WAREHOUSE_TRANSFER = 5;
public static final Short INOUT_SOURCE_PRODUCTION_MATERIAL_RETURN = 7;
public static final Short INOUT_SOURCE_QUOTA_OUT = 11;
public static final Short INOUT_SOURCE_OTHER_OUT = 12;
public static final Short INOUT_SOURCE_ASSIGN_OUT = 13;
public static final Short INOUT_SOURCE_TOOl_OUT = 15;
}

@ -1,67 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStorageLocation
* @description: 库位维护表 实体类
* @autor: WuSiYu
* @create 2025-12-18 14:33
**/
@Data
@TableName("ST_STORAGE_LOCATION")
@Schema(description = "StStorageLocation对象")
@EqualsAndHashCode(callSuper = true)
public class StStorageLocation extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房ID关联st_storehouse表
*/
@Schema(description = "库房ID(关联st_storehouse表)")
private Long shId;
/**
* 库位号
*/
@Schema(description = "库位号")
private String location;
/**
* 物料编号关联st_goods表goods_code字段
*/
@Schema(description = "物料编号(关联st_goods表goods_code字段)")
private String goodsCode;
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String goodsName;
/**
* 物料规格
*/
@Schema(description = "物料规格")
private String specifications;
/**
* 型号/牌号
*/
@Schema(description = "型号/牌号")
private String materialModel;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private Long deptId;
}

@ -1,150 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStoreBill
* @description: 仓库凭证 实体类
* @autor: WuSiYu
* @create 2026-01-15 13:21
**/
@Data
@TableName("ST_STORE_BILL")
@Schema(description = "StStoreBill对象")
@EqualsAndHashCode(callSuper = true)
public class StStoreBill extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 凭证分类;1物料入库2物料出库3借用4归还5调出6调入7提请
*/
@Schema(description = "凭证分类;1,物料入库;2,物料出库;3,借用;4,归还;5,调出;6,调入;7,提请 ;")
private Short billFlag;
/**
* 收发标志;true:入库false:出库
*/
@Schema(description = "收发标志;true:入库,false:出库")
private String reCeOrSend;
/**
* 物料信息
*/
@Schema(description = "物料信息")
private Long goodsId;
/**
* 数量
*/
@Schema(description = "数量")
private Double quantity;
/**
* 批号
*/
@Schema(description = "批号")
private String piNo;
/**
* 金额
*/
@Schema(description = "金额")
private Double money;
/**
* 使用次数
*/
@Schema(description = "使用次数")
private Long useNum;
/**
* 检验编码
*/
@Schema(description = "检验编码")
private String checkCode;
/**
* 凭证单号
*/
@Schema(description = "凭证单号")
private String billCode;
/**
* 凭证日期
*/
@Schema(description = "凭证日期")
private Date billDate;
/**
* 部门;外键部门
*/
@Schema(description = "部门;外键(部门)")
private String deptId;
/**
* 人员;外键人员
*/
@Schema(description = "人员;外键(人员)")
private Long billMan;
/**
* 原因;外键原因
*/
@Schema(description = "原因;外键(原因)")
private String bcId;
/**
* 来源;0:正常1采购2生产
*/
@Schema(description = "来源;0:正常;1:采购;2:生产;")
private Short billSource;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
/**
* 仓库;外键仓库
*/
@Schema(description = "仓库;外键(仓库)")
private Long stoId;
/**
* 状态1:新建20:完成
*/
@Schema(description = "状态;1:新建,20:完成")
private Short curStatus;
/**
* 到期日期
*/
@Schema(description = "到期日期")
private Date expirationDate;
/**
* 库位ID
*/
@Schema(description = "库位ID")
private Long slId;
/**
* 库房ID
*/
@Schema(description = "库房ID")
private Long shId;
/**
* 借用
*/
public static Short BILLSOURCE_BORROW = 4;
/**
* 归还
*/
public static Short BILLSOURCE_RETURN = 5;
/**
* 新建
*/
public static Short CURSTATUS_NEW = 1;
/**
* 完成
*/
public static Short CURSTATUS_COMPLETE = 20;
}

@ -1,91 +0,0 @@
package org.springblade.wms.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serial;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStorehouse
* @description: 库房维护表 实体类
* @autor: WuSiYu
* @create 2025-12-18 14:16
**/
@Data
@TableName("ST_STOREHOUSE")
@Schema(description = "StStorehouse对象")
@EqualsAndHashCode(callSuper = true)
public class StStorehouse extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 库房编号
*/
@Schema(description = "库房编号")
private String shCode;
/**
* 库房名称
*/
@Schema(description = "库房名称")
private String shName;
/**
* 所属分类
*/
@Schema(description = "所属分类")
private Short type;
/**
* 工装分类
*/
@Schema(description = "工装分类")
private Short toolingType;
/**
* 库房层级
*/
@Schema(description = "库房层级")
private String shLevel;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private String deptId;
/**
* 保管员ID
*/
@Schema(description = "保管员ID")
private Long saveUser;
/**
* 类别说明
*/
@Schema(description = "类别说明")
private String memo;
// 模具库
public static final Short TYPE_MOLD = 0;
// 材料库
public static final Short TYPE_PART = 1;
// 刀具库
public static final Short TYPE_TOOL = 2;
// 工装库
public static final Short TYPE_WORK = 3;
// 电极库
public static final Short TYPE_ELECTRODE = 4;
// 量具库
public static final Short TYPE_RULE = 5;
// 夹具库
public static final Short TYPE_JIA_JU = 6;
public static Short TOOLING_TYPE_MOLD = 0;//模具
public static Short TOOLING_TYPE_TOOL = 1;//工装
public static Short TOOLING_TYPE_RULE = 2;//量具
}

@ -1,86 +0,0 @@
package org.springblade.wms.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName PrintStoresList
* @description:
* @autor: WuSiYu
* @create 2025-12-17 18:01
**/
@Data
public class PrintStoresList implements java.io.Serializable {
/**
* 供货单位
*/
private String supplier;
/**
* 物料信息
*/
private String materialMess;
/**
* 物料编码
*/
private String materialCode;
/**
* 入库日期
*/
private String inStore;
/**
* 库位号
*/
private String locator;
/**
* 单位
*/
private String unit;
/**
* 检验编号
*/
private String testCode;
/**
* 到期日期
*/
private String matureDate;
/**
* 批次号
*/
private String batchNo;
/**
* 生产标识
*/
private String identification;
/**
* 炉批号
*/
private String heatNo;
/**
* 日期
*/
private String date;
/**
* 摘要
*/
private String memo;
/**
* 收入数
*/
private String income;
/**
* 发出数
*/
private String issueNum;
/**
* 结存数
*/
private String balance;
/**
* 经手人
*/
private String handledBy;
}

@ -1,54 +0,0 @@
package org.springblade.wms.pojo.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.wms.pojo.entity.StRealtimeStock;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StRealtimeStockVO
* @description: 仓库实时结余表 视图实体类
* @autor: WuSiYu
* @create 2025-12-15 14:49
**/
@Data
@EqualsAndHashCode(callSuper = true)
public class StRealtimeStockVO extends StRealtimeStock {
@Serial
private static final long serialVersionUID = 1L;
private Long id; // 主键ID
private Long goodsId; // 物料ID
private Double quantity; // 库存数量
private Double lockQuantity;
private Double onthewayQuantity;
private Double currentQuantity;
private String piNo; // 批号
private Long slId; // 库位ID
private String barCode; // 条形码
private Date scrapCycle; // 报废周期
private String checkCode; // 检验码
private String splyCode; // 供应商编码
private String goodsName;
private String shName;
private Long shId;
private String location;
private String specifications;
@TableField(exist = false)
private String filterValue;
private Boolean special; // 特殊标识
private Double syQuantity;
@TableField(exist = false)
private String goodsCodeAndGoodsName;
}

@ -0,0 +1,5 @@
--
ALTER TABLE MES_MEASURING_UPKEEP
MODIFY (MI_ID NUMBER (20,0))
MODIFY (CREATE_MAN NUMBER (20,0))
MODIFY (RLS_ID NUMBER (20,0));
Loading…
Cancel
Save