From 2221c9fecefa43eed272e6011ecc335c9bfb5908 Mon Sep 17 00:00:00 2001 From: pangyang <475446853@qq.com> Date: Tue, 10 Mar 2026 15:31:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A7=BD=E6=B6=B2=E7=AE=A1=E7=90=86=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=92=8C=E7=94=9F=E4=BA=A7=E8=B4=A8=E9=87=8F=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/order/pojo/entity/YieldOrder.java | 4 +- .../desk/quality/pojo/entity/LiquidTank.java | 3 +- .../quality/pojo/vo/InspectionTaskListVO.java | 4 + .../MeasurementRecordsController.java | 12 ++ .../controller/InspectionTaskController.java | 78 +++++++++- .../controller/IotHardnessController.java | 133 ++++++++++++++++++ .../desk/quality/excel/LiquidTankExcel.java | 5 +- .../quality/mapper/InspectionTaskMapper.xml | 6 +- .../desk/quality/mapper/ReviewSheetMapper.xml | 13 +- .../IWorkPlanItemThicknessService.java | 2 + .../impl/InspectionTaskServiceImpl.java | 8 ++ .../service/impl/LiquidTankServiceImpl.java | 22 +-- .../impl/LiquidTankTaskServiceImpl.java | 6 + .../service/impl/WorkPlanItemServiceImpl.java | 9 +- .../WorkPlanItemThicknessServiceImpl.java | 12 ++ 15 files changed, 291 insertions(+), 26 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index 75a04759..d8b3aa89 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -160,7 +160,8 @@ public class YieldOrder extends BaseEntity { * todo 只有字段没有动 表 和 mapper * 零件号版本号 */ - @TableField(value = "PART_VERSION", exist = false) +// @TableField(value = "PART_VERSION", exist = false) + @TableField(value = "PART_VERSION") private String partVersion; /** @@ -457,4 +458,5 @@ public class YieldOrder extends BaseEntity { */ @TableField(value = "ACTUAL_WEIGHING") private BigDecimal actualWeighing; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java index 596b3e7b..06ba99ef 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/LiquidTank.java @@ -377,7 +377,8 @@ public class LiquidTank extends BaseEntity { * 上次化验日期 */ @Schema(description = "上次化验日期") - private LocalDateTime lastTest; +// private LocalDateTime lastTest; + private LocalDate lastTest; /** * 实测温度 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java index e000bf89..3242f7d4 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/InspectionTaskListVO.java @@ -107,4 +107,8 @@ public class InspectionTaskListVO extends InspectionTask { // todo: @Schema(description = "材料") private String material = "铜"; +//零件号版本号 + private String partVersion; +//工单id + private Long yoId; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java index 5e3dca19..3c2ccaa5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/controller/MeasurementRecordsController.java @@ -1,5 +1,6 @@ package org.springblade.desk.device.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -65,6 +66,17 @@ public class MeasurementRecordsController extends BladeController { return R.data(pages); } + //查询合格的量具 + @GetMapping("/listResult") + public R> listResult() { + + LambdaQueryWrapper query = Wrappers.lambdaQuery() + .eq(MeasurementRecordsEntity::getCheckResult, 1); + List list = mesMeasurementRecordsService.list(query); + List vos = MeasurementRecordsWrapper.build().listVO(list); + return R.data(vos); + } + /** * 量具计量记录 新增 */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java index e09e52a7..80c049e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java @@ -3,6 +3,7 @@ */ package org.springblade.desk.quality.controller; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -27,6 +28,14 @@ import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.config.RoleConfig; import org.springblade.desk.basic.pojo.vo.UrlVO; import org.springblade.desk.basic.util.RoleUtil; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; +import org.springblade.desk.dashboard.service.IDsPartRelationService; +import org.springblade.desk.dashboard.service.IDsPartService; +import org.springblade.desk.dashboard.service.IDsPartVersionService; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; import org.springblade.desk.produce.service.IMacToolUseService; @@ -87,7 +96,7 @@ public class InspectionTaskController extends BladeController { public R detail(InspectionTask inspectionTask) { InspectionTask detail = service.getOne(Condition.getQueryWrapper(inspectionTask)); InspectionTaskDetailVO detailDetailVO = InspectionTaskDetailWrapper.build().entityVO(detail); - ; + BladeUser user = AuthUtil.getUser(); // InspectionTaskListVO detailDetail = service.detailById(inspectionTask); service.setDetailVOValue(detailDetailVO); return R.data(detailDetailVO); @@ -272,6 +281,23 @@ public class InspectionTaskController extends BladeController { } + //质量记录跳转 + @PostMapping(value = "/reviewQualityRecords") + public R reviewQualityRecords(@RequestBody JSONObject data) { + String deliverKey = data.getString("deliverKey"); + String url = "http://192.168.242.158:80/mms/login/login_vendorJpageZljl.jsp?LOGIN158=admin&deliverNo=" + deliverKey; + return R.data(url); + } + + //合格证跳转 + @PostMapping(value = "/reviewQualification") + public R reviewQualification(@RequestBody JSONObject data) { + String deliverKey = data.getString("deliverKey"); + String url = "http://192.168.242.158:80/mms/login/login_vendorJpage.jsp?LOGIN158=admin&deliverNo=" + deliverKey; + return R.data(url); + } + + /** * [检验任务] 同槽 检验结果应用 */ @@ -290,14 +316,56 @@ public class InspectionTaskController extends BladeController { @GetMapping("/subPartList") @ApiOperationSupport(order = 101) @Operation(summary = "烧结包装防护-子件列表", description = "传入inspectionTask id") - public R subPartList(@Parameter(hidden = true) @RequestParam Long id) { + public R subPartList(Long yoId) { + + List list = new ArrayList<>(); + + YieldOrder yo = yieldOrderService.getById(yoId); + QueryWrapper versionqw = new QueryWrapper<>(); + versionqw.eq("part_code", yo.getPartCode()); + versionqw.eq("part_version", yo.getPartVersion()); + DsPartVersionEntity version = dsPartVersionService.getOne(versionqw); + Long partId = version.getPartId(); + + +// QueryWrapper relqw = new QueryWrapper<>(); +// relqw.eq("CHILD_PART_ID", partId); +// List rels = dsPartRelationService.list(relqw); +// if(null != rels && rels.size()>0){ +// DsPartRelationEntity rel = rels.get(0); +// DsPartEntity part = dsPartService.getById(rel.getChildPartId()); +// list.add(part); +// } + + + QueryWrapper relmasterqw = new QueryWrapper<>(); + relmasterqw.eq("PART_ID", partId); + List relmasters = dsPartRelationService.list(relmasterqw); + if(null != relmasters && relmasters.size()>0){ + for(DsPartRelationEntity rel : relmasters){ + DsPartEntity part = dsPartService.getById(rel.getChildPartId()); + list.add(part); + } + } + + // todo: 车间订单关联查询 - List list = new ArrayList<>(); - list.add(new InspectionTaskSubPartVO()); - list.add(new InspectionTaskSubPartVO()); +// List list = new ArrayList<>(); +// list.add(new InspectionTaskSubPartVO()); +// list.add(new InspectionTaskSubPartVO()); return R.data(list); } + @Resource + IDsPartRelationService dsPartRelationService; + @Resource + IDsPartVersionService dsPartVersionService; + @Resource + IDsPartService dsPartService; + @Resource + private IYieldOrderService yieldOrderService; + + @GetMapping("/toQaRecord") @ApiOperationSupport(order = 101) @Operation(summary = "跳转-质量记录", description = "传入inspectionTask id") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/IotHardnessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/IotHardnessController.java index 9b553385..6d5f261e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/IotHardnessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/IotHardnessController.java @@ -3,6 +3,7 @@ */ package org.springblade.desk.quality.controller; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -26,6 +27,8 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; +import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.quality.constant.QAModuleConst; import org.springblade.desk.quality.excel.IotHardnessExcel; import org.springblade.desk.quality.pojo.entity.IotHardness; @@ -33,10 +36,14 @@ import org.springblade.desk.quality.pojo.vo.IotHardnessVO; import org.springblade.desk.quality.service.IIotHardnessService; import org.springblade.desk.quality.wrapper.IotHardnessWrapper; import org.springblade.system.feign.IUserClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.net.InetAddress; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -62,6 +69,9 @@ public class IotHardnessController extends BladeController { @Resource private IUserClient iUserClient; + @Autowired + private IEquipmentService equipmentService; + /** * [IOT硬度] 详情 */ @@ -94,6 +104,129 @@ public class IotHardnessController extends BladeController { return R.data(pagesVO); } + @GetMapping(value = "/queryHardnessData") + public R queryHardnessData() throws Exception { + InetAddress inetAddress = InetAddress.getLocalHost(); + String ip = inetAddress.getHostAddress(); +// ip = "127.0.0.1"; + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DEVICE_IP",ip); + EquipmentEntity card = equipmentService.getOne(qw); + //根据ip查询设备 + if (card == null) { + return R.fail(-2, "ip未找到对应的测量仪设备!" + ip); + } + String deviceCode = card.getDeviceCode(); + log.info("找到设备,设备编码: {}", deviceCode); + + // 首次查询:无时间标记,设置初始标记为当前时间 +// if (timeMarker == null) { +// timeMarker = new Date(); +// log.info("首次查询,初始时间标记: {}", timeMarker); +// } + + // 调用服务层方法查询未读数据 + // 修改服务层方法,使其根据设备编码和未读状态查询 + + QueryWrapper qwhard = new QueryWrapper<>(); + qwhard.eq("EQUIPMENT_ID",card.getId()); +// qwhard.eq("FLAG_READ",0); + qwhard.orderByDesc("CREATE_TIME"); + List qcHardnessIotList = service.list(qwhard); + + // 记录查询到的数据数量 + if (qcHardnessIotList != null) { + log.info("查询到 {} 条硬度数据", qcHardnessIotList.size()); + } else { + log.info("未查询到硬度数据"); + } + + boolean hasNewData = qcHardnessIotList != null && !qcHardnessIotList.isEmpty(); + List list = new ArrayList<>(); + List resultList = new ArrayList<>(); + + if (hasNewData) { + log.info("设备[{}]查询到 {} 条新数据", deviceCode, qcHardnessIotList.size()); + for (IotHardness iot : qcHardnessIotList) { + if(null != iot.getData()){ + resultList.add(JSONObject.parseObject(iot.getData())); + } + + iot.setFlagRead(1L); + service.updateById(iot); + } + // 查到数据后,重置标记(返回null,前端下次请求不带标记) +// timeMarker = null; + } else { + log.info("设备[{}]未查询到新数据", deviceCode); + } + return R.data(resultList); + } + + + private R getHardnessData(JSONObject data, HttpServletRequest request) throws Exception { +// LoginInfo loginUser = ControllerUtils.getCurLoginInfo(request); +// String ip = loginUser.getLoginIp(); + + InetAddress inetAddress = InetAddress.getLocalHost(); + String ip = inetAddress.getHostAddress(); +// ip = "127.0.0.1"; + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("DEVICE_IP",ip); + EquipmentEntity card = equipmentService.getOne(qw); + //根据ip查询设备 + if (card == null) { + return R.fail(-2, "ip未找到对应的测量仪设备!" + ip); + } + String deviceCode = card.getDeviceCode(); + log.info("找到设备,设备编码: {}", deviceCode); + + // 首次查询:无时间标记,设置初始标记为当前时间 +// if (timeMarker == null) { +// timeMarker = new Date(); +// log.info("首次查询,初始时间标记: {}", timeMarker); +// } + + // 调用服务层方法查询未读数据 + // 修改服务层方法,使其根据设备编码和未读状态查询 + + QueryWrapper qwhard = new QueryWrapper<>(); + qwhard.eq("EQUIPMENT_ID",card.getId()); +// qwhard.eq("FLAG_READ",0); + qwhard.orderByDesc("CREATE_TIME"); + List qcHardnessIotList = service.list(qwhard); + + // 记录查询到的数据数量 + if (qcHardnessIotList != null) { + log.info("查询到 {} 条硬度数据", qcHardnessIotList.size()); + } else { + log.info("未查询到硬度数据"); + } + + boolean hasNewData = qcHardnessIotList != null && !qcHardnessIotList.isEmpty(); + List list = new ArrayList<>(); + List resultList = new ArrayList<>(); + + if (hasNewData) { + log.info("设备[{}]查询到 {} 条新数据", deviceCode, qcHardnessIotList.size()); + for (IotHardness iot : qcHardnessIotList) { + if(null != iot.getData()){ + resultList.add(JSONObject.parseObject(iot.getData())); + } + + iot.setFlagRead(1L); + service.updateById(iot); + } + // 查到数据后,重置标记(返回null,前端下次请求不带标记) +// timeMarker = null; + } else { + log.info("设备[{}]未查询到新数据", deviceCode); + } + return R.data(resultList); + } + @GetMapping("/getDataFirst") @ApiOperationSupport(order = 20) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java index e051b290..1dc84f56 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/excel/LiquidTankExcel.java @@ -13,6 +13,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; @@ -228,7 +229,7 @@ public class LiquidTankExcel implements Serializable { */ @ColumnWidth(20) @ExcelProperty("有效期") - private LocalDateTime validDate; + private LocalDate validDate; /** @@ -344,7 +345,7 @@ public class LiquidTankExcel implements Serializable { @ColumnWidth(20) // @ExcelProperty("生成周期类型:生成周期类型:[1]:每周;[2]:每月;[3]:每年;[4]:自定义CRON") @ExcelProperty("生成周期类型:[1]:每周;[2]:每月;[3]:每年;") - private Long jobType; + private Integer jobType; // private String jobTypeName; /** * 定时WEEK值 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml index cb61bc29..6f207ef8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/InspectionTaskMapper.xml @@ -84,8 +84,10 @@ ps.NAME as currentProcessName,ps01.NAME as nextProcessName,wo.MAKE_QTY as poQty, yo.YP_AREA * wo.MAKE_QTY as areaTotal,yo.YP_AREA as area,yo.PRODUCT_IDENT as prodIdent, t.*,wo.WO_CODE as woCode, - wo.PART_CODE AS partCode, - wo.PART_CODE AS prodCode, + yo.PART_CODE AS partCode, + yo.PART_VERSION AS partVersion, + yo.ID AS yoId, + yo.PART_CODE AS prodCode, wo.TEST_QTY as orderCheckQty, wo.LOSS_QTY as orderLossQty, wo.SCRAP_QTY as orderScrapQty, diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml index 28ec70cc..7cd9642c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/ReviewSheetMapper.xml @@ -67,18 +67,25 @@