设备管理量具保养全功能+设备管理模块导出功能

develop-QA
qinyulong 3 months ago
parent 0237d1cbb9
commit 034ed3af59
  1. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/entity/MeasuringUpkeepEntity.java
  2. 179
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/excel/MeasurementRecordsExcel.java
  3. 82
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/excel/MeasuringUpkeepExcel.java
  4. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/request/MeasuringUpkeepQuery.java
  5. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/vo/EquipmentVO.java
  6. 47
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/device/pojo/vo/MeasuringUpkeepVO.java
  7. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/DeskApplication.java
  8. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java
  9. 74
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasuringUpkeepController.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.java
  11. 103
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml
  12. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/IMeasuringUpkeepService.java
  13. 113
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/MeasuringUpkeepServiceImpl.java

@ -58,8 +58,8 @@ public class MeasuringUpkeepEntity extends BaseEntity {
/** /**
* 库存物料 * 库存物料
*/ */
@Schema(description = "库存物料") // @Schema(description = "库存物料")
private Long rlsId; // private Long rlsId;
/** /**
* 新建 * 新建
*/ */

@ -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 lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@ -29,60 +26,51 @@ public class MeasuringUpkeepExcel implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; 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) @ColumnWidth(20)
@ExcelProperty("保养单号") @ExcelProperty("保养单号")
private String mmCode; private String mmCode;
/**
* 库存物料;外键库存物料
*/
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("库存物料;外键(库存物料)") @ExcelProperty("物料名称")
private Long miId; String goodsName;
/**
* 备注
*/
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("备注") @ExcelProperty("物料规格")
private String memo; String specifications;
/**
*
*/
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("") @ExcelProperty("生产批次号")
private Long createMan; String piNo;
/**
* 审批状态;-1
*/
@ColumnWidth(20) @ColumnWidth(20)
@ExcelProperty("审批状态;-1") @ExcelProperty("仓库")
private Short approvalStatus; 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) @ColumnWidth(20)
@ExcelProperty("库存物料") @ExcelProperty("状态名称")
private Long rlsId; String statusName;
} }

@ -16,26 +16,31 @@ public class MeasuringUpkeepQuery {
* 物料名称 * 物料名称
*/ */
@Schema(description = "物料名称") @Schema(description = "物料名称")
private String toolStatus; private String goodsName;
/** /**
* 生产批次号 * 生产批次号
*/ */
@Schema(description = "生产批次号") @Schema(description = "生产批次号")
private String toolSpec; private String piNo;
/** /**
* 仓库 * 仓库
*/ */
@Schema(description = "仓库") @Schema(description = "仓库")
private String typeName; private String shName;
/** /**
* 库位号 * 库位号
*/ */
@Schema(description = "库位号") @Schema(description = "库位号")
private String equiCode; private String location;
/** /**
* 状态 * 状态
*/ */
@Schema(description = "状态") @Schema(description = "状态")
private Short status; 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.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.EquipmentEntity;
@ -52,9 +53,11 @@ public class EquipmentVO extends EquipmentEntity {
/** /**
* 状态名称 * 状态名称
*/ */
@Schema(description = "状态名称")
String statusName; String statusName;
/** /**
* 工作中心名称 * 工作中心名称
*/ */
@Schema(description = "工作中心名称")
String workCenterName; 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.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 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 org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -24,8 +25,48 @@ public class MeasuringUpkeepVO extends MeasuringUpkeepEntity {
*/ */
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long id; 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; String statusName;
} }

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

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

@ -1,25 +1,26 @@
package org.springblade.desk.device.controller; package org.springblade.desk.device.controller;
import io.swagger.v3.oas.annotations.Parameters; import cn.hutool.core.util.StrUtil;
import io.swagger.v3.oas.annotations.enums.ParameterIn; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springblade.core.secure.BladeUser; 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.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel; import org.springblade.desk.device.pojo.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery; 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 org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity; import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO; import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
@ -28,9 +29,8 @@ import org.springblade.desk.device.service.IMeasuringUpkeepService;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.excel.util.ExcelUtil; 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 java.util.List;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -49,6 +49,9 @@ public class MeasuringUpkeepController extends BladeController {
private final IMeasuringUpkeepService measuringUpkeepService; private final IMeasuringUpkeepService measuringUpkeepService;
@Resource
private StRealtimeStockClient client;
/** /**
* 量具保养 详情 * 量具保养 详情
*/ */
@ -67,8 +70,8 @@ public class MeasuringUpkeepController extends BladeController {
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "") @Operation(summary = "分页", description = "")
public R<IPage<MeasuringUpkeepVO>> page(@Parameter(hidden = true) MeasuringUpkeepQuery measuringUpkeep, Query query) { public R<IPage<MeasuringUpkeepVO>> page(@Parameter(hidden = true) MeasuringUpkeepQuery measuringUpkeep, Query query) {
IPage<MeasuringUpkeepEntity> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep); IPage<MeasuringUpkeepVO> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep);
return R.data(MeasuringUpkeepWrapper.build().pageVO(pages)); return R.data(pages);
} }
/** /**
@ -119,24 +122,65 @@ public class MeasuringUpkeepController extends BladeController {
@ApiOperationSupport(order = 8) @ApiOperationSupport(order = 8)
@Operation(summary = "量具保养申请", description = "传入ids") @Operation(summary = "量具保养申请", description = "传入ids")
public R maintenanceAppFun(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { public R maintenanceAppFun(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return measuringUpkeepService.maintenanceAppFun(Func.toLongList(ids)); return measuringUpkeepService.maintenanceAppFun(ids);
} }
/** /**
* 导出数据 * 导出数据
*/ */
@IsAdmin // @IsAdmin
@GetMapping("/export-measuringUpkeep") @GetMapping("/export-measuringUpkeep")
@ApiOperationSupport(order = 9) @ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入measuringUpkeep") @Operation(summary = "导出数据", description = "传入measuringUpkeep")
public void exportMeasuringUpkeep(@Parameter(hidden = true) @RequestParam Map<String, Object> measuringUpkeep, BladeUser bladeUser, HttpServletResponse response) { public void exportMeasuringUpkeep(MeasuringUpkeepQuery measuringUpkeepQuery, Query query, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<MeasuringUpkeepEntity> queryWrapper = Condition.getQueryWrapper(measuringUpkeep, MeasuringUpkeepEntity.class); // QueryWrapper<MeasuringUpkeepEntity> queryWrapper = Condition.getQueryWrapper(measuringUpkeep, MeasuringUpkeepEntity.class);
//if (!AuthUtil.isAdministrator()) { //if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(MeasuringUpkeep::getTenantId, bladeUser.getTenantId()); // queryWrapper.lambda().eq(MeasuringUpkeep::getTenantId, bladeUser.getTenantId());
//} //}
//queryWrapper.lambda().eq(MeasuringUpkeepEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); //queryWrapper.lambda().eq(MeasuringUpkeepEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<MeasuringUpkeepExcel> list = measuringUpkeepService.exportMeasuringUpkeep(queryWrapper); // List<MeasuringUpkeepExcel> list = measuringUpkeepService.exportMeasuringUpkeep(queryWrapper);
ExcelUtil.export(response, "量具保养数据" + DateUtil.time(), "量具保养数据表", list, MeasuringUpkeepExcel.class); 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));
}
} }

@ -2,6 +2,7 @@ package org.springblade.desk.device.mapper;
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.excel.MeasuringUpkeepExcel;
import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO; import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -22,10 +23,10 @@ public interface MeasuringUpkeepMapper extends BaseMapper<MeasuringUpkeepEntity>
* 自定义分页 * 自定义分页
* *
* @param page 分页参数 * @param page 分页参数
* @param measuringUpkeep 查询参数 * @param query 查询参数
* @return List<MeasuringUpkeepVO> * @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"/> <result column="RLS_ID" property="rlsId"/>
</resultMap> </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"> FROM MES_MEASURING_UPKEEP mmu
select * LEFT JOIN ST_REALTIME_STOCK st ON mmu.mi_id = st.id
from MES_MEASURING_UPKEEP LEFT JOIN st_goods g ON st.goods_id = g.id
where is_deleted = 0 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> </select>

@ -25,7 +25,7 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
* @param measuringUpkeep 查询参数 * @param measuringUpkeep 查询参数
* @return IPage<MeasuringUpkeepVO> * @return IPage<MeasuringUpkeepVO>
*/ */
IPage<MeasuringUpkeepEntity> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepEntity> page, MeasuringUpkeepQuery measuringUpkeep); IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep);
/** /**
@ -41,5 +41,12 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
* *
* @param ids * @param ids
*/ */
R maintenanceAppFun(List<Long> ids); R maintenanceAppFun(String ids);
/**
* 加入保养
*
* @param ids
*/
R addMaintenance(List<Long> ids);
} }

@ -4,8 +4,12 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; 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.MeasurementRecordsEntity;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity; import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity; import org.springblade.desk.device.pojo.entity.MeasuringUpkeepEntity;
@ -14,6 +18,9 @@ import org.springblade.desk.device.pojo.request.MeasuringUpkeepQuery;
import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO; import org.springblade.desk.device.pojo.vo.MeasuringUpkeepVO;
import org.springblade.desk.device.mapper.MeasuringUpkeepMapper; import org.springblade.desk.device.mapper.MeasuringUpkeepMapper;
import org.springblade.desk.device.service.IMeasuringUpkeepService; 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -25,10 +32,13 @@ import java.net.URI;
import java.net.http.HttpClient; import java.net.http.HttpClient;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse; import java.net.http.HttpResponse;
import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* 量具保养 服务实现类 * 量具保养 服务实现类
@ -39,6 +49,8 @@ import java.util.Objects;
@Slf4j @Slf4j
@Service @Service
public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepMapper, MeasuringUpkeepEntity> implements IMeasuringUpkeepService { public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepMapper, MeasuringUpkeepEntity> implements IMeasuringUpkeepService {
private static final AtomicInteger counter = new AtomicInteger(0);
private static String lastDate = "";
// 使用JDK 17内置的HttpClient(线程安全,可复用) // 使用JDK 17内置的HttpClient(线程安全,可复用)
private final HttpClient httpClient = HttpClient.newBuilder() private final HttpClient httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(30)) .connectTimeout(Duration.ofSeconds(30))
@ -49,17 +61,10 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
private String limsUrl; private String limsUrl;
@Override @Override
public IPage<MeasuringUpkeepEntity> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepEntity> page, MeasuringUpkeepQuery measuringUpkeep) { public IPage<MeasuringUpkeepVO> selectMeasuringUpkeepPage(IPage<MeasuringUpkeepVO> page, MeasuringUpkeepQuery measuringUpkeep) {
// return page.setRecords(baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep)); // return page.setRecords(baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep));
// 1. 创建条件构造器 List<MeasuringUpkeepVO> dataList = baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep);
LambdaQueryWrapper<MeasuringUpkeepEntity> wrapper = Wrappers.<MeasuringUpkeepEntity>lambdaQuery(); return page.setRecords(dataList);
// 2. 动态添加条件(核心!)
// 根据实体对象 entity 中字段是否为空,来动态拼接WHERE条件
wrapper.eq(Objects.nonNull(measuringUpkeep.getStatus()), MeasuringUpkeepEntity::getStatus, measuringUpkeep.getStatus());
// 3. 执行分页查询
return baseMapper.selectPage(page, wrapper);
} }
@ -74,17 +79,27 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public R maintenanceAppFun(List<Long> ids) { public R maintenanceAppFun(String ids) {
if (ids == null && ids.size() == 0) { List<Long> longList = Func.toLongList(ids);
if (ids == null && longList.size() == 0) {
return R.fail("请选择数据!"); return R.fail("请选择数据!");
} }
for (Long id : ids) { MeasuringUpkeepQuery query = new MeasuringUpkeepQuery();
MeasuringUpkeepEntity measuringUpkeep = this.getById(id); query.setIds(ids);
if (measuringUpkeep == null) { IPage<MeasuringUpkeepVO> iPage = new Page<>();
continue; 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 // 构建请求体JSON
JSONObject requestBody = buildRequestBody(measuringUpkeep); JSONObject requestBody = buildRequestBody(measuringUpkeepVO);
// 创建HTTP请求 // 创建HTTP请求
HttpRequest request = HttpRequest.newBuilder() HttpRequest request = HttpRequest.newBuilder()
@ -106,27 +121,46 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
String responseBody = response.body(); String responseBody = response.body();
JSONObject result = JSONObject.parseObject(responseBody); JSONObject result = JSONObject.parseObject(responseBody);
if (result != null && result.getBoolean("success")) { if (result != null && result.getBoolean("success")) {
measuringUpkeep.setStatus(MeasuringUpkeepEntity.CURSTATUS_YSQ); measuringUpkeepVO.setStatus(MeasuringUpkeepEntity.CURSTATUS_YSQ);
this.updateById(measuringUpkeep); this.updateById(measuringUpkeepVO);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("获取计量记录记录数据接口调用失败: {}", e.getMessage(), e); log.error("获取计量记录记录数据接口调用失败: {}", e.getMessage(), e);
} }
} }
return null; 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(MeasuringUpkeepEntity measuringUpkeep) { private JSONObject buildRequestBody(MeasuringUpkeepVO measuringUpkeep) {
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
// object.put("deviceName",smm.getStRealtimeStock().getCoGoods().getGoodsName()); object.put("deviceName", measuringUpkeep.getGoodsName());
// object.put("model",smm.getStRealtimeStock().getCoGoods().getSpecifications()); object.put("model", measuringUpkeep.getSpecifications());
// object.put("prtno",smm.getStRealtimeStock().getCoGoods().getGoodsCode()); object.put("prtno", measuringUpkeep.getGoodsCode());
object.put("idstr", measuringUpkeep.getMmCode()); object.put("idstr", measuringUpkeep.getMmCode());
// object.put("num",smm.getStRealtimeStock().getQuantity()); object.put("num", measuringUpkeep.getQuantity());
object.put("source", "5"); object.put("source", "5");
object.put("deptno", "3400"); object.put("deptno", "3400");
// //
@ -134,4 +168,31 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
return object; 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;
}
} }

Loading…
Cancel
Save