This commit is contained in:
zhouz
2024-06-24 16:25:46 +08:00
5 changed files with 43 additions and 8 deletions

View File

@@ -15,6 +15,7 @@ import org.nl.b_lms.sch.tasks.slitter.SendAirShaftAgvTask;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
@@ -84,7 +85,10 @@ public class AutoSendAirShaftAgvTask {
}
// 如果两个气涨轴编码则表示一组满了
// 查找分切对接没任务的空位
List<BstIvtCutpointivt> emptyPoint = slitterMapper.getEmptyCutPointNotTask(area, deviceCut.getSort_seq());
List<BstIvtCutpointivt> emptyPoint = slitterMapper.getEmptyCutPointNotTask(area,
deviceCut.getSort_seq(),
SlitterTaskUtil.getPointLocationInCutDevice(
SlitterTaskUtil.getNumberByResourceCode(demoPlan.getResource_name())));
if (emptyPoint.size() == 0) {
log.warn("找不到对应的位置!");
return;

View File

@@ -37,9 +37,10 @@ public interface SlitterMapper {
* 获取分切机下料位没任务的点位
* @param area 区域
* @param sortSeq 设备序号
* @return
* @param location 区域 1-50 6-101
* @return /
*/
List<BstIvtCutpointivt> getEmptyCutPointNotTask(String area, BigDecimal sortSeq);
List<BstIvtCutpointivt> getEmptyCutPointNotTask(String area, BigDecimal sortSeq, String location);
/**
* 获取分切机下一组分切计划对应的点位

View File

@@ -50,6 +50,7 @@
`bst_ivt_cutpointivt` bcp
WHERE bcp.point_type = '3' AND bcp.point_status = '1' AND bcp.is_used = '1'
AND bcp.product_area = #{area}
AND bcp.point_location = #{location}
AND 0 = (
SELECT COUNT(*) FROM sch_base_task t
WHERE t.task_status <![CDATA[ < ]]> '07' AND (t.point_code2 = bcp.point_code OR t.point_code2 = bcp.truss_point_code1

View File

@@ -46,16 +46,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.getPointLocationInCutDevice;
import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.getNumberByResourceCode;
/**
* @author lyd
* @description 服务接口
@@ -393,7 +392,9 @@ public class SlitterServiceImpl implements SlitterService {
if (timePlans.size() == 0) {
// 如果没有下一组的分切计划,就只做下卷任务(判断下单/下双)
// 获取分切对接位没任务的空位置
List<BstIvtCutpointivt> emptyPoints = slitterMapper.getEmptyCutPointNotTask(area, device.getSort_seq());
List<BstIvtCutpointivt> emptyPoints = slitterMapper.getEmptyCutPointNotTask(area,
device.getSort_seq(),
getPointLocationInCutDevice(getNumberByResourceCode(demoPlan.getResource_name())));
if (emptyPoints.size() == 0) {
log.error("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
throw new BadRequestException("分切机【" + device.getExt_code() + "】找不到对应的对接位!");

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.modules.common.exception.BadRequestException;
import java.util.List;
import java.util.StringJoiner;
@@ -150,4 +151,31 @@ public class SlitterTaskUtil {
}
}
/**
* 获取设备号
* @param resourceCode /
* @return /
*/
public static int getNumberByResourceCode(String resourceCode) {
if (ObjectUtil.isEmpty(resourceCode)) {
throw new BadRequestException("输入的设备号编码不能为空!");
}
String trimStr = resourceCode.trim();
// 提取最后两位作为字符串
String lastTwoDigitsString = trimStr.substring(trimStr.length() - 2);
// 将整数再转换回字符串以供返回
return Integer.parseInt(lastTwoDigitsString);
}
/**
* 获取上下区域
* @param num /
* @return /
*/
public static String getPointLocationInCutDevice(int num) {
if (num >= 1 && num <= 5) {
return "0";
}
return "1";
}
}