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

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 = "库存物料")
private Long rlsId;
// @Schema(description = "库存物料")
// 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 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;
}

@ -16,26 +16,31 @@ public class MeasuringUpkeepQuery {
* 物料名称
*/
@Schema(description = "物料名称")
private String toolStatus;
private String goodsName;
/**
* 生产批次号
*/
@Schema(description = "生产批次号")
private String toolSpec;
private String piNo;
/**
* 仓库
*/
@Schema(description = "仓库")
private String typeName;
private String shName;
/**
* 库位号
*/
@Schema(description = "库位号")
private String equiCode;
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,9 +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;
}

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

@ -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,25 +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;
@ -28,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;
@ -49,6 +49,9 @@ public class MeasuringUpkeepController extends BladeController {
private final IMeasuringUpkeepService measuringUpkeepService;
@Resource
private StRealtimeStockClient client;
/**
* 量具保养 详情
*/
@ -67,8 +70,8 @@ public class MeasuringUpkeepController extends BladeController {
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "")
public R<IPage<MeasuringUpkeepVO>> page(@Parameter(hidden = true) MeasuringUpkeepQuery measuringUpkeep, Query query) {
IPage<MeasuringUpkeepEntity> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep);
return R.data(MeasuringUpkeepWrapper.build().pageVO(pages));
IPage<MeasuringUpkeepVO> pages = measuringUpkeepService.selectMeasuringUpkeepPage(Condition.getPage(query), measuringUpkeep);
return R.data(pages);
}
/**
@ -119,24 +122,65 @@ public class MeasuringUpkeepController extends BladeController {
@ApiOperationSupport(order = 8)
@Operation(summary = "量具保养申请", description = "传入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")
@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));
}
}

@ -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>

@ -25,7 +25,7 @@ public interface IMeasuringUpkeepService extends BaseService<MeasuringUpkeepEnti
* @param measuringUpkeep 查询参数
* @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
*/
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.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;
@ -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.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;
@ -25,10 +32,13 @@ 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;
/**
* 量具保养 服务实现类
@ -39,6 +49,8 @@ import java.util.Objects;
@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))
@ -49,17 +61,10 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
private String limsUrl;
@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));
// 1. 创建条件构造器
LambdaQueryWrapper<MeasuringUpkeepEntity> wrapper = Wrappers.<MeasuringUpkeepEntity>lambdaQuery();
// 2. 动态添加条件(核心!)
// 根据实体对象 entity 中字段是否为空,来动态拼接WHERE条件
wrapper.eq(Objects.nonNull(measuringUpkeep.getStatus()), MeasuringUpkeepEntity::getStatus, measuringUpkeep.getStatus());
// 3. 执行分页查询
return baseMapper.selectPage(page, wrapper);
List<MeasuringUpkeepVO> dataList = baseMapper.selectMeasuringUpkeepPage(page, measuringUpkeep);
return page.setRecords(dataList);
}
@ -74,17 +79,27 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
@Override
@Transactional(rollbackFor = Exception.class)
public R maintenanceAppFun(List<Long> ids) {
if (ids == null && ids.size() == 0) {
public R maintenanceAppFun(String ids) {
List<Long> longList = Func.toLongList(ids);
if (ids == null && longList.size() == 0) {
return R.fail("请选择数据!");
}
for (Long id : ids) {
MeasuringUpkeepEntity measuringUpkeep = this.getById(id);
if (measuringUpkeep == null) {
continue;
}
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(measuringUpkeep);
JSONObject requestBody = buildRequestBody(measuringUpkeepVO);
// 创建HTTP请求
HttpRequest request = HttpRequest.newBuilder()
@ -106,27 +121,46 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
String responseBody = response.body();
JSONObject result = JSONObject.parseObject(responseBody);
if (result != null && result.getBoolean("success")) {
measuringUpkeep.setStatus(MeasuringUpkeepEntity.CURSTATUS_YSQ);
this.updateById(measuringUpkeep);
measuringUpkeepVO.setStatus(MeasuringUpkeepEntity.CURSTATUS_YSQ);
this.updateById(measuringUpkeepVO);
}
} catch (Exception 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();
// object.put("deviceName",smm.getStRealtimeStock().getCoGoods().getGoodsName());
// object.put("model",smm.getStRealtimeStock().getCoGoods().getSpecifications());
// object.put("prtno",smm.getStRealtimeStock().getCoGoods().getGoodsCode());
object.put("deviceName", measuringUpkeep.getGoodsName());
object.put("model", measuringUpkeep.getSpecifications());
object.put("prtno", measuringUpkeep.getGoodsCode());
object.put("idstr", measuringUpkeep.getMmCode());
// object.put("num",smm.getStRealtimeStock().getQuantity());
object.put("num", measuringUpkeep.getQuantity());
object.put("source", "5");
object.put("deptno", "3400");
//
@ -134,4 +168,31 @@ public class MeasuringUpkeepServiceImpl extends BaseServiceImpl<MeasuringUpkeepM
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