fix: 分切对接位区分区域
This commit is contained in:
@@ -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.SlitterConstant;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
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.mapper.SlitterMapper;
|
||||||
|
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.redisson.api.RLock;
|
import org.redisson.api.RLock;
|
||||||
import org.redisson.api.RedissonClient;
|
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) {
|
if (emptyPoint.size() == 0) {
|
||||||
log.warn("找不到对应的位置!");
|
log.warn("找不到对应的位置!");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -37,9 +37,10 @@ public interface SlitterMapper {
|
|||||||
* 获取分切机下料位没任务的点位
|
* 获取分切机下料位没任务的点位
|
||||||
* @param area 区域
|
* @param area 区域
|
||||||
* @param sortSeq 设备序号
|
* @param sortSeq 设备序号
|
||||||
* @return
|
* @param location 区域 1-5:0 6-10:1
|
||||||
|
* @return /
|
||||||
*/
|
*/
|
||||||
List<BstIvtCutpointivt> getEmptyCutPointNotTask(String area, BigDecimal sortSeq);
|
List<BstIvtCutpointivt> getEmptyCutPointNotTask(String area, BigDecimal sortSeq, String location);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取分切机下一组分切计划对应的点位
|
* 获取分切机下一组分切计划对应的点位
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
`bst_ivt_cutpointivt` bcp
|
`bst_ivt_cutpointivt` bcp
|
||||||
WHERE bcp.point_type = '3' AND bcp.point_status = '1' AND bcp.is_used = '1'
|
WHERE bcp.point_type = '3' AND bcp.point_status = '1' AND bcp.is_used = '1'
|
||||||
AND bcp.product_area = #{area}
|
AND bcp.product_area = #{area}
|
||||||
|
AND bcp.point_location = #{location}
|
||||||
AND 0 = (
|
AND 0 = (
|
||||||
SELECT COUNT(*) FROM sch_base_task t
|
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
|
WHERE t.task_status <![CDATA[ < ]]> '07' AND (t.point_code2 = bcp.point_code OR t.point_code2 = bcp.truss_point_code1
|
||||||
|
|||||||
@@ -46,16 +46,15 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
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
|
* @author lyd
|
||||||
* @description 服务接口
|
* @description 服务接口
|
||||||
@@ -393,7 +392,9 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
if (timePlans.size() == 0) {
|
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) {
|
if (emptyPoints.size() == 0) {
|
||||||
log.error("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
|
log.error("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
|
||||||
throw new BadRequestException("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
|
throw new BadRequestException("分切机【" + device.getExt_code() + "】找不到对应的对接位!");
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.StringJoiner;
|
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";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user