生产管理修改

liweidong
李涛 3 days ago
parent 6f96153d07
commit 0689125c5b
  1. 1
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlan.java
  2. 4
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ByCardNoByPlanVO.java
  3. 74
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
  4. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  5. 190
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  6. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  7. 34
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.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;

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

@ -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;
/**
* <p>Description: 获取看板废水废气酸雾塔实时数据新接口 </p>
*
@ -170,4 +178,64 @@ public class HttpRequestService {
}
return null;
}
/**
* <p>Description: 获取产线每日实际用水用电量历史数据 </p>
*
* @param deviceId 设备id
* @param params
* @param startTime 开始时间
* @param endTime 结束时间
* @Author qjh
* @Date: 2023/1/6 10:10
*/
public List<JSONObject> getEneUsed(String deviceId, ArrayList<String> 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<JSONObject> entity = new HttpEntity<>(object, headers);
ResponseEntity<JSONObject> 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<JSONObject> 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<JSONObject> entity = new HttpEntity<>(json, headers);
ResponseEntity<JSONObject> 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;
}
}

@ -75,4 +75,9 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
MacToolUse queryByCode(String mtnCode);
GoodsVO getMaterialMess(String goodsCode);
/**
* 获取设备所需参数
*/
void setSjDataCapture(MesQcProduceRunEntity qcProduceRun, Boolean aTrue);
}

@ -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<MacToolUseMapper, Mac
private final IEquipmentService equipmentService;
private final IMesQcProduceRunService mesQcProduceRunService;
@Resource
private HttpRequestService httpRequestService;
String heat1 = "实际温度1", sjzkd = "实际真空度", ld = "露点", ls = "链速", heat2 = "实际温度2", heat3 = "实际温度3", heat4 = "实际温度4", heat5 = "实际温度5", heat6 = "实际温度6", heat7 = "实际温度7", heat8 = "实际温度8",
heat9 = "实际温度9", heat10 = "实际温度10", heat11 = "实际温度11", sdwd01 = "设定温度1", sdwd02 = "设定温度2", sdwd03 = "设定温度3", sdwd04 = "设定温度4", sdwd05 = "设定温度5", sdwd06 = "设定温度6", sdwd07 = "设定温度7", sdwd08 = "设定温度8", sdwd09 = "设定温度9";
@Override
public String nextCode(int i) {
// 编码模式
@ -214,6 +230,180 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return baseMapper.getMaterialMess(goodsCode);
}
@Override
public void setSjDataCapture(MesQcProduceRunEntity produceRun, Boolean unBind) {
MesQcProduceRunEntity qcProduceRun = mesQcProduceRunService.getById(produceRun.getId());
List<JSONObject> eneUsed;
ArrayList<String> params = Lists.newArrayList(); // 参数
String prodLineLevel = null; // 温度上下浮动值
List<JSONObject> 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<JSONObject> 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<String, JSONObject> 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<String, JSONObject> 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);

@ -515,8 +515,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
// 获取设备所需参数
// 如果没有填写退火温度
if (StringUtils.isBlank(tempSlot)) {
// todo 第三方获取
// macToolUseService.setSjDataCapture(qcProduceRun, Boolean.TRUE);
macToolUseService.setSjDataCapture(qcProduceRun, Boolean.TRUE);
}
}
mesQcProduceRunService.updateBatchById(qcProduceRuns);

@ -193,23 +193,23 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
//删除检验记录
inspectionTaskService.remove(Wrappers.lambdaQuery(InspectionTask.class).eq(InspectionTask::getWpId, wpId));
// todo 删除镀前出入库记录
// List<PrPlateAround> 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<PlateAround> 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);
}

Loading…
Cancel
Save