diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
index ed0c0ea6..e8aa51cd 100644
--- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
@@ -31,7 +31,6 @@ import java.util.Map;
@EqualsAndHashCode(callSuper = true)
public class WorkPlan extends BaseEntity {
/**
- * TODO 工序状态要调整到常量类中
* 工序状态:未开始
*/
public static Integer STATUS_NO_START = 1;
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java
index b5fe77dd..0a395d65 100644
--- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java
@@ -32,7 +32,7 @@ public class ByCardNoByPlanVO {
private String batchNo;
@Schema(description = "工序ID")
- private Long ppsId;
+ private String ppsId;
@Schema(description = "当前工序")
private String ppsName;
@@ -41,7 +41,7 @@ public class ByCardNoByPlanVO {
private Double workQty;
@Schema(description = "班组id")
- private Long tsId;
+ private String tsId;
@Schema(description = "班组名称")
private String tsName;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
index 4a521853..0b0c624f 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
@@ -1,5 +1,6 @@
package org.springblade.desk.energy.util;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
@@ -7,10 +8,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.secure.BladeUser;
import org.springframework.beans.factory.annotation.Value;
-import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
-import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.service.*;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
@@ -18,6 +16,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -42,6 +41,15 @@ public class HttpRequestService {
@Value("${request.lims.url}")
private String limsUrl;
+ @Value("${request.iot.orgId}")
+ private String orgId;
+
+ @Value("${request.iot.systemId}")
+ private String systemId;
+
+ @Value("${request.equ.url}")
+ private String equUrl;
+
/**
*
Description: 获取看板废水废气酸雾塔实时数据新接口
*
@@ -170,4 +178,64 @@ public class HttpRequestService {
}
return null;
}
+
+ /**
+ * Description: 获取产线每日实际用水用电量(历史数据)
+ *
+ * @param deviceId 设备id
+ * @param params
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @Author qjh
+ * @Date: 2023/1/6 10:10
+ */
+ public List getEneUsed(String deviceId, ArrayList params, String startTime, String endTime) {
+ // 头信息
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ JSONObject object = new JSONObject();
+ object.put("orgId", orgId);
+ object.put("systemId", systemId);
+ object.put("params", params); // 设备对应的参数信息
+ object.put("deviceId", deviceId); // 设备编码
+ object.put("startTime", startTime); // 开始时间(入炉)
+ object.put("endTime", endTime); // 结束时间(出炉)
+ HttpEntity entity = new HttpEntity<>(object, headers);
+ ResponseEntity responseEntity = null;
+ try {
+ responseEntity = httpClientTemplate.postForEntity(iotNewUrl + "/deviceForZhgd/deviceDataHistoryByParams", entity, JSONObject.class);
+ JSONObject result = responseEntity.getBody();
+ if (result != null && result.getInteger("code").equals(0)) {
+ List jsonList = JSONArray.parseArray(result.getJSONArray("result").toJSONString(), JSONObject.class);
+ if (jsonList != null && !jsonList.isEmpty()) {
+ return jsonList;
+ }
+ } else {
+ log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + result.getString("message") + "设备编码" + deviceId + "参数" + object);
+ }
+ } catch (Exception e) {
+ log.error("获取用水用电量、烧结解绑获取数据接口调用失败!" + e.getMessage() + "设备编码" + deviceId + "参数" + object);
+ }
+ return null;
+ }
+
+ public JSONObject getParams(String deviceCode) {
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ headers.add("appId", "1358950685609828353");
+ JSONObject json = new JSONObject();
+ json.put("deviceCode", deviceCode); // 设备编码
+ HttpEntity entity = new HttpEntity<>(json, headers);
+ ResponseEntity responseEntity = httpClientTemplate.postForEntity(equUrl + "/api/device/device/prodLineInfo", entity, JSONObject.class);
+ JSONObject object = responseEntity.getBody();
+ if (object.getInteger("code").equals(0)) {
+ JSONObject data = object.getJSONObject("data");
+ if (data != null) {
+ return data;
+ }
+ } else {
+ log.error("获取设备对应的参数数据接口调用失败!" + "设备编码" + deviceCode);
+ }
+ return null;
+ }
}
\ No newline at end of file
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
index 12c80bbc..74fb8390 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
@@ -75,4 +75,9 @@ public interface IMacToolUseService extends BaseService {
MacToolUse queryByCode(String mtnCode);
GoodsVO getMaterialMess(String goodsCode);
+
+ /**
+ * 获取设备所需参数
+ */
+ void setSjDataCapture(MesQcProduceRunEntity qcProduceRun, Boolean aTrue);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
index 58df74fb..b93f6f2a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
@@ -1,10 +1,14 @@
package org.springblade.desk.produce.service.impl;
import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.collect.Lists;
+import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
@@ -14,6 +18,7 @@ import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IRackSetService;
+import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.produce.mapper.MacToolUseMapper;
import org.springblade.desk.produce.pojo.dto.MesMacToolUseDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
@@ -25,9 +30,11 @@ import org.springblade.desk.produce.pojo.vo.MacToolUseVO;
import org.springblade.desk.produce.pojo.vo.MesMacToolUseVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO;
import org.springblade.desk.produce.service.IMacToolUseService;
+import org.springblade.desk.produce.service.IMesQcProduceRunService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -50,6 +57,15 @@ public class MacToolUseServiceImpl extends BaseServiceImpl eneUsed;
+ ArrayList params = Lists.newArrayList(); // 参数
+ String prodLineLevel = null; // 温度上下浮动值
+ List jsonList = null; // 根据参数获取到的设备参数信息
+ Double heat = 0d; // 最高温度
+ if (qcProduceRun.getTempSlot() != null && Double.parseDouble(qcProduceRun.getTempSlot()) > 0) {
+ heat = Double.valueOf(qcProduceRun.getTempSlot());
+ }
+ Double vacuity = 1000000d; // 真空度
+ if (qcProduceRun.getDataFourteen() != null && Double.parseDouble(qcProduceRun.getDataFourteen()) < vacuity) {
+ vacuity = Double.valueOf(qcProduceRun.getDataFourteen());
+ }
+ Double setHeat = 20000d; // 设定温度
+ List aaaList = new ArrayList<>(); // 温度大于200 得集合
+ // 获取设备所需参数
+ JSONObject deviceParams = this.getDeviceParams(qcProduceRun);
+ if (deviceParams != null) {
+ prodLineLevel = deviceParams.getString("prodLineLevel");
+ if (org.apache.commons.lang3.StringUtils.isBlank(prodLineLevel)) {
+ prodLineLevel = "0";
+ }
+ jsonList = JSONArray.parseArray(deviceParams.getJSONArray("prodLineMeasurePoint").toJSONString(), JSONObject.class);
+ if (jsonList != null && jsonList.size() > 0) {
+ // 处理参数
+ for (JSONObject jsonObject : jsonList) {
+ params.add(jsonObject.getString("attrCode"));
+ }
+ String startTime = qcProduceRun.getInDate();
+ // 获取当前时间字符串格式
+ String endTime = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
+ if (unBind) {
+ endTime = qcProduceRun.getOutDate();
+ }
+ // 获取数据
+ eneUsed = httpRequestService.getEneUsed(qcProduceRun.getDeviceId(), params, startTime, endTime);
+ // 处理数据
+ if (eneUsed != null && !eneUsed.isEmpty()) {
+ // 只有一个温度并且等于实际温度1
+ Map eUMap = jsonList.stream().map(cbsSupplier -> new AbstractMap.SimpleEntry<>(cbsSupplier.getString("attrName"), cbsSupplier))
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+ // 获取设定温度
+ if (eUMap.get(sdwd01) != null && eneUsed.get(0).getString(eUMap.get(sdwd01).getString("attrCode")) != null) {
+ setHeat = Double.valueOf(eneUsed.get(0).getString(eUMap.get(sdwd01).getString("attrCode")));
+ } else if (qcProduceRun.getDataTwo() != null) {
+ setHeat = Double.valueOf(qcProduceRun.getDataTwo());
+ }
+ if (eUMap.get(heat2) != null) { // 如果实际温度2存在代表分区
+ for (JSONObject jsonObject : eneUsed) {
+ if (jsonObject.getString(eUMap.get(heat2).getString("attrCode")) == null) return;
+ // 获取最高温度
+ heat = this.setMaxHeat(eUMap, jsonObject, heat);
+ }
+ qcProduceRun.setTempSlot(String.valueOf(heat));
+ } else { // 如果实际温度2不存在代表不是分区
+ for (JSONObject jsonObject : eneUsed) {
+ if (jsonObject.getString(eUMap.get(heat1).getString("attrCode")) == null) return;
+ if (org.apache.commons.lang3.StringUtils.isBlank(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))))
+ continue;
+ Double value = Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode")));
+ // 获取最高温度
+ if (value > heat) {
+ heat = value;
+ }
+ // 存储温度大于200 的数据 用与获取真空度
+ if (value > 200) {
+ aaaList.add(jsonObject);
+ }
+ // 存储保温开始时间
+ if (org.apache.commons.lang3.StringUtils.isBlank(qcProduceRun.getDataThirteen())) {
+ if (value >= setHeat) {
+ qcProduceRun.setDataThirteen(String.valueOf(jsonObject.getString("timestamp")));
+ }
+ } else if (value < setHeat && org.apache.commons.lang3.StringUtils.isNotBlank(qcProduceRun.getDataThirteen()) && org.apache.commons.lang3.StringUtils.isBlank(qcProduceRun.getDataTwelve())) {
+ // 存储保温结束时间
+ qcProduceRun.setDataTwelve(String.valueOf(jsonObject.getString("timestamp")));
+ }
+ }
+ if (aaaList.size() > 0 && eUMap.get(sjzkd) != null) {
+ for (JSONObject jsonObject : aaaList) {
+ if (Double.valueOf(jsonObject.getString(eUMap.get(sjzkd).getString("attrCode"))) < vacuity) {
+ vacuity = Double.valueOf(jsonObject.getString(eUMap.get(sjzkd).getString("attrCode")));
+ }
+ }
+ // 真空度
+ qcProduceRun.setDataFourteen(new DecimalFormat("#.000000").format(vacuity));
+ }
+ qcProduceRun.setTempSlot(String.valueOf(heat));
+ }
+ // 获取链速
+ if (eUMap.get(ls) != null) {
+ if (eneUsed.get(0).getString(eUMap.get(ls).getString("attrCode")) != null) {
+ String string = eneUsed.get(0).getString(eUMap.get(ls).getString("attrCode"));
+ qcProduceRun.setVSpeed(string);
+ }
+ }
+ // 获取露点
+ if (eUMap.get(ld) != null) {
+ if (eneUsed.get(0).getString(eUMap.get(ld).getString("attrCode")) != null) {
+ String string = eneUsed.get(0).getString(eUMap.get(ld).getString("attrCode"));
+ qcProduceRun.setDataEleven(string);
+ }
+ }
+ }
+ }
+ }
+ mesQcProduceRunService.updateById(qcProduceRun);
+ }
+
+ private Double setMaxHeat(Map eUMap, JSONObject jsonObject, Double heat) {
+ if (eUMap.get(heat1) != null) {
+ if (jsonObject.getString(eUMap.get(heat1).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat2) != null) {
+ if (jsonObject.getString(eUMap.get(heat2).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat2).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat2).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat3) != null) {
+ if (jsonObject.getString(eUMap.get(heat3).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat3).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat3).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat4) != null) {
+ if (jsonObject.getString(eUMap.get(heat4).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat4).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat4).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat5) != null) {
+ if (jsonObject.getString(eUMap.get(heat5).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat5).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat5).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat6) != null) {
+ if (jsonObject.getString(eUMap.get(heat6).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat6).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat6).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat7) != null) {
+ if (jsonObject.getString(eUMap.get(heat7).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat7).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat7).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat8) != null) {
+ if (jsonObject.getString(eUMap.get(heat8).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat8).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat8).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat9) != null) {
+ if (jsonObject.getString(eUMap.get(heat9).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat9).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat9).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat10) != null) {
+ if (jsonObject.getString(eUMap.get(heat10).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat10).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat10).getString("attrCode")));
+ }
+ }
+ if (eUMap.get(heat11) != null) {
+ if (jsonObject.getString(eUMap.get(heat11).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat11).getString("attrCode"))) > heat) {
+ heat = Double.valueOf(jsonObject.getString(eUMap.get(heat11).getString("attrCode")));
+ }
+ }
+ return heat;
+ }
+
+ private JSONObject getDeviceParams(MesQcProduceRunEntity qcProduceRun) {
+ return httpRequestService.getParams(qcProduceRun.getDeviceId());
+ }
+
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
index 2291e130..8aef9aa4 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
@@ -515,8 +515,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl paList = prPlateAroundService.listByWpId(wpId);
-// WorkPlan workPlan = this.getById(wpId);
-// if (!paList.isEmpty()) {
-// for (PrPlateAround prPlateAround : paList) {
-// // 如果有出库记录,删除上序的入库记录
-// if (PrPlateAround.BEFORE_PLAN_OUT.equals(prPlateAround.getPaType())) {
-// if (workPlan.getFrontWpId() != null) {
-// PrPlateAround prPlateAround1 = prPlateAroundService.getPrPlateAround(prWorkPlan.getFrontWorkPlan().getWpId(), PrPlateAround.BEFORE_PLAT_IN);
-// if (prPlateAround1 != null && prPlateAround1.getPaId() != null) {
-// prPlateAroundService.delete(prPlateAround1.getPaId());
-// }
-// }
-// }
-// prPlateAroundService.delete(prPlateAround.getPaId());
-// }
-// }
+ // 删除镀前出入库记录
+ List paList = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, wpId));
+ WorkPlan workPlan = this.getById(wpId);
+ if (!paList.isEmpty()) {
+ for (PlateAround prPlateAround : paList) {
+ // 如果有出库记录,删除上序的入库记录
+ if (PlateAround.BEFORE_PLAN_OUT.equals(prPlateAround.getPaType())) {
+ if (workPlan.getFrontWpId() != null) {
+ PlateAround prPlateAround1 = plateAroundMapper.selectOne(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, workPlan.getFrontWpId()).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAT_IN));
+ if (prPlateAround1 != null) {
+ plateAroundMapper.deleteById(prPlateAround1.getId());
+ }
+ }
+ }
+ plateAroundMapper.deleteById(prPlateAround.getId());
+ }
+ }
this.removeById(wpId);
}