调整字段类型

parent 0ec0d884
......@@ -62,10 +62,11 @@
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 使用更新的版本 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.5.0.0</version>
<version>23.3.0.23.09</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
......
......@@ -22,7 +22,7 @@ private String equipName;
private LocalDateTime effectiveStartTime;
private LocalDateTime effectiveEndTime;
private Long referenceId;
private Short referenceType;
private Integer referenceType;
private BigDecimal efficiencyCoeff;
private Integer minUtilization;
private Integer maxUtilization;
......
......@@ -20,4 +20,6 @@ private Long referenceId;
private String referenceName;
private Long creatorUserId;
private LocalDateTime creationTime;
private Integer referenceType;//2 是节假日 1 是产能
private String id;
}
\ No newline at end of file
......@@ -16,4 +16,13 @@ public class ProdEquipment implements Serializable {
private Long resourceId;
private String execId;
private Double speed;
private String id;
/**
* 效率系数
*/
private double efficiencyValue;
/**
* 准备时间
*/
private int setupTime;
}
\ No newline at end of file
......@@ -11,4 +11,5 @@ private String targetOrderId;
private String targetTaskSeq;
private String execId;
private String targetExecId;
private String id;
}
\ No newline at end of file
......@@ -46,29 +46,31 @@ public class ProdProcessExec {
* 注释: 换线时间
*/
private BigDecimal changeLineTime;
private int changeLineTime;
/**
* 常数时间
* 注释: 常数时间
*/
private BigDecimal constTime;
private int constTime;
/**
* 前处理时间(秒)
* 注释: 前处理时间(秒)
*/
private Long preprocessingTime;
private int preprocessingTime;
/**
* 后处理时间(秒)
* 注释: 后处理时间(秒)
*/
private Long postprocessingTime;
private int postprocessingTime;
//速度
private Double speed;
private String id;
}
\ No newline at end of file
......@@ -61,7 +61,7 @@ private Long canStartEarly;
private Short previousStartTimeBegin;
private String code;
private String tool;
private BigDecimal changeLineTime;
private int changeLineTime;
private Long preDetailId;
private Long connectType;
private Long connectProperty;
......@@ -69,15 +69,15 @@ private String connectTypeName;
private String connectPropertyName;
private String strSetupTime;
private Long isync;
private BigDecimal constTime;
private int constTime;
private String usable;
private BigDecimal leadTime;
private BigDecimal batchQty;
private BigDecimal minProductionQty;
private BigDecimal maxProductionQty;
private BigDecimal productionTakt;
private Long preprocessingTime;
private Long postprocessingTime;
private int preprocessingTime;
private int postprocessingTime;
private BigDecimal splitMinQty;
private BigDecimal splitMaxQty;
private Short equipmentConnectivity;
......
......@@ -129,4 +129,13 @@ public class RoutingDetailEquip implements Serializable {
private BigDecimal oneBatchQuantity;
private String strId;
/**
* 效率系数
*/
private double efficiencyValue;
/**
* 准备时间
*/
private int setupTime;
}
\ No newline at end of file
package com.aps.service.impl;
import com.aps.common.util.R;
import com.aps.common.util.SnowFlackIdWorker;
import com.aps.entity.*;
import com.aps.mapper.RoutingDetailMapper;
import com.aps.mapper.RoutingHeaderMapper;
......@@ -374,7 +375,7 @@ public class LanuchServiceImpl implements LanuchService {
equipSpecialCal.setEndDate(endTime);
equipSpecialCal.setShiftWorkSchedCode(shiftWorkSched.getShiftWorkSchedCode());
equipSpecialCal.setPeriodDesc(shiftWorkSched.getShiftName());
equipSpecialCal.setId(String.valueOf(SnowFlackIdWorker.getId()));
return equipSpecialCal;
}
......@@ -554,7 +555,7 @@ public class LanuchServiceImpl implements LanuchService {
prodProcessExec.setConstTime(detail.getConstTime());
prodProcessExec.setPreprocessingTime(detail.getPreprocessingTime());
prodProcessExec.setPostprocessingTime(detail.getPostprocessingTime());
prodProcessExec.setId(String.valueOf(SnowFlackIdWorker.getId()));
prodProcessExec.setSpeed(
Optional.ofNullable(detail.getRuntime())
......@@ -642,9 +643,24 @@ public class LanuchServiceImpl implements LanuchService {
}
}
// 批量保存
// 批量保存(增加严格校验)
if (!CollectionUtils.isEmpty(processRelations)) {
prodOrderProcessService.saveBatch(processRelations);
// 过滤掉null元素,并确保关键属性不为空
List<ProdOrderProcess> validRelations = processRelations.stream()
.filter(Objects::nonNull) // 过滤null元素
.filter(relation -> {
// 根据实际业务规则检查必要属性
return relation.getSceneId() != null
&& relation.getOrderId() != null;
})
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(validRelations)) {
prodOrderProcessService.saveBatch(validRelations,500);
} else {
log.warn("所有工序关系数据无效或为空,跳过批量保存");
}
}
}
......@@ -694,16 +710,23 @@ public class LanuchServiceImpl implements LanuchService {
prodOrderProcess.setTaskSeq(connection.getSourceoperation());
prodOrderProcess.setTargetOrderId(prodOrderMain.getOrderId());
prodOrderProcess.setTargetTaskSeq(connection.getDestoperation());
prodOrderProcess.setId(String.valueOf(SnowFlackIdWorker.getId()));
String execId = routingDetailIdToExecIdMap.get(connection.getSourceoperationid());
String targetExecId = routingDetailIdToExecIdMap.get(connection.getDestoperationid());
if (execId != null) {
prodOrderProcess.setExecId(execId);
}else {
prodOrderProcess.setExecId("ttt");
}
if (targetExecId != null) {
prodOrderProcess.setTargetExecId(targetExecId);
}else {
prodOrderProcess.setTargetExecId("ttt");
}
return prodOrderProcess;
......@@ -761,8 +784,9 @@ public class LanuchServiceImpl implements LanuchService {
// prodEquipment.setEquipCode(routingDetailEquip.getName());
prodEquipment.setEquipName(routingDetailEquip.getName());
prodEquipment.setResourceId(routingDetailEquip.getType1());
prodEquipment.setEfficiencyValue(routingDetailEquip.getEfficiencyValue());
prodEquipment.setSetupTime(routingDetailEquip.getSetupTime());
prodEquipment.setId(String.valueOf(SnowFlackIdWorker.getId()));
prodEquipment.setSpeed(
Optional.ofNullable(routingDetailEquip.getDuration())
......
package com.aps.service.impl;
import com.aps.common.util.SnowFlackIdWorker;
import com.aps.entity.ProdEquipSpecialCal;
import com.aps.entity.EquipCapacityDef;
import com.aps.mapper.ProdEquipSpecialCalMapper;
......@@ -10,10 +11,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* <p>
* 设备特殊日历配置表:记录特定工位/设备在指定时间段的特殊日历规则(如节假日、维护期等) 服务实现类
......@@ -33,47 +33,63 @@ public class ProdEquipSpecialCalServiceImpl extends ServiceImpl<ProdEquipSpecial
*/
@Override
public void copyFromEquipCapacityDef(String sceneId) {
// 查询EquipCapacityDef表中is_deleted为0的所有记录
List<EquipCapacityDef> capacityDefs = equipCapacityDefService.list();
// 过滤出is_deleted为0的记录
List<EquipCapacityDef> activeCapacityDefs = capacityDefs.stream()
.filter(e -> e.getIsDeleted() != null && e.getIsDeleted() == 0 && e.getReferenceId() != null)
.collect(Collectors.toList());
// 转换对象并设置必要字段
// 直接通过条件查询,而不是全表查询后过滤
List<EquipCapacityDef> activeCapacityDefs = equipCapacityDefService.lambdaQuery()
.eq(EquipCapacityDef::getIsDeleted, 0)
.isNotNull(EquipCapacityDef::getReferenceId)
.list();
// 转换对象并设置必要字段
List<ProdEquipSpecialCal> specialCals = activeCapacityDefs.stream()
.map(capacityDef -> convertToProdEquipSpecialCal(capacityDef, sceneId))
.filter(Objects::nonNull) // 过滤掉转换失败的对象
.collect(Collectors.toList());
// 批量保存到ProdEquipSpecialCal表
if (!specialCals.isEmpty()) {
this.saveBatch(specialCals);
// 使用分批插入,避免单次插入过多数据
int batchSize = 100;
for (int i = 0; i < specialCals.size(); i += batchSize) {
int end = Math.min(i + batchSize, specialCals.size());
this.saveBatch(specialCals.subList(i, end), batchSize);
}
}
}
/**
* 将EquipCapacityDef转换为ProdEquipSpecialCal
* @param capacityDef 源对象
* @return 转换后的对象
*/
private ProdEquipSpecialCal convertToProdEquipSpecialCal(EquipCapacityDef capacityDef,String sceneId) {
ProdEquipSpecialCal specialCal = new ProdEquipSpecialCal();
// 设置特定字段
specialCal.setEquipId(capacityDef.getEquipId() != null ? (int)capacityDef.getEquipId() : null);
specialCal.setEquipCode(capacityDef.getEquipCode());
specialCal.setStartDate(capacityDef.getEffectiveStartTime());
specialCal.setEndDate(capacityDef.getEffectiveEndTime());
specialCal.setEfficiencyCoeff(capacityDef.getEfficiencyCoeff() != null ?
capacityDef.getEfficiencyCoeff().longValue() : null);
specialCal.setReferenceId(capacityDef.getReferenceId());
specialCal.setReferenceName(capacityDef.getReferenceName());
specialCal.setCreatorUserId(capacityDef.getCreatorUserId());
specialCal.setCreationTime(LocalDateTime.now());
specialCal.setSceneId(sceneId);
return specialCal;
private ProdEquipSpecialCal convertToProdEquipSpecialCal(EquipCapacityDef capacityDef, String sceneId) {
try {
ProdEquipSpecialCal specialCal = new ProdEquipSpecialCal();
// 设置必填字段,确保不会为空
specialCal.setId(String.valueOf(SnowFlackIdWorker.getId()));
specialCal.setSceneId(sceneId); // sceneId不能为空
// 可选字段的安全转换
specialCal.setEquipId(capacityDef.getEquipId() != null ? capacityDef.getEquipId().intValue() : null);
specialCal.setEquipCode(capacityDef.getEquipCode());
specialCal.setStartDate(capacityDef.getEffectiveStartTime());
specialCal.setEndDate(capacityDef.getEffectiveEndTime());
// 处理数值类型转换的空值
if (capacityDef.getEfficiencyCoeff() != null) {
specialCal.setEfficiencyCoeff(capacityDef.getEfficiencyCoeff().longValue());
}
specialCal.setReferenceId(capacityDef.getReferenceId());
specialCal.setReferenceName(capacityDef.getReferenceName());
specialCal.setCreatorUserId(capacityDef.getCreatorUserId());
specialCal.setCreationTime(LocalDateTime.now());
specialCal.setReferenceType(capacityDef.getReferenceType());
return specialCal;
} catch (Exception e) {
log.error("转换EquipCapacityDef到ProdEquipSpecialCal失败", e);
return null;
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment