opt: 备货区未创建AGV任务导致拔轴机构停住

This commit is contained in:
2025-04-30 13:04:29 +08:00
parent 3b744ea698
commit df5324dc7b
6 changed files with 117 additions and 13 deletions

View File

@@ -1,6 +1,9 @@
package org.nl.b_lms.bst.ivt.papervehicle.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto;
import org.nl.b_lms.sch.tasks.slitter.service.impl.SlitterServiceImpl;
import org.nl.common.domain.query.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
@@ -49,4 +52,8 @@ public interface IMdPbPapervehicleService extends IService<MdPbPapervehicle> {
* @return
*/
List<MdPbPapervehicle> getGXs(String pointLocation, List<String> tubes);
List<GxQtyDto> getGxPoints(String pointLocation, List<String> tubes);
Integer checkHaveTaskByPoints(List<String> pointCodes);
}

View File

@@ -2,6 +2,9 @@ package org.nl.b_lms.bst.ivt.papervehicle.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto;
import org.nl.b_lms.sch.tasks.slitter.service.impl.SlitterServiceImpl;
import java.util.List;
@@ -12,4 +15,8 @@ import java.util.List;
public interface MdPbPapervehicleMapper extends BaseMapper<MdPbPapervehicle> {
List<MdPbPapervehicle> getGXs(String pointLocation, List<String> tubes);
List<GxQtyDto> getGxPoints(String pointLocation, List<String> tubes);
Integer checkHaveTaskByPoints(List<String> pointCodes);
}

View File

@@ -18,4 +18,46 @@
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07'
AND (t.point_code1 = bs.point_code OR t.point_code2 = bs.point_code) AND t.is_delete = '0')
</select>
<select id="getGxPoints" resultType="org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto">
SELECT
bs.point_code,
bs.point_type,
SUM( mp.qty ) AS qty
FROM
md_pb_papervehicle mp
LEFT JOIN bst_ivt_stockingivt bs ON bs.vehicle_code = mp.vehicle_code
WHERE
mp.material_code IN
<foreach item="code" collection="tubes" open="(" separator="," close=")">
#{code}
</foreach>
AND mp.qty > 0
AND bs.point_location = '0'
GROUP BY bs.point_code, bs.point_type
</select>
<select id="checkHaveTaskByPoints" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
sch_base_task
WHERE
is_delete = '0'
AND task_status <![CDATA[ < ]]> '07'
AND (
(
task_type = '010807'
AND point_code3 IN
<foreach item="code" collection="pointCodes" open="(" separator="," close=")">
#{code}
</foreach>
)
OR (
task_type = '010808'
AND point_code1 IN
<foreach item="code" collection="pointCodes" open="(" separator="," close=")">
#{code}
</foreach>
)
)
</select>
</mapper>

View File

@@ -10,6 +10,9 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.papervehicle.service.IMdPbPapervehicleService;
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.mapper.MdPbPapervehicleMapper;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto;
import org.nl.b_lms.sch.tasks.slitter.service.impl.SlitterServiceImpl;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -82,4 +85,14 @@ public class MdPbPapervehicleServiceImpl extends ServiceImpl<MdPbPapervehicleMap
return mdPbPapervehicleMapper.getGXs(pointLocation, tubes);
}
@Override
public List<GxQtyDto> getGxPoints(String pointLocation, List<String> tubes) {
return mdPbPapervehicleMapper.getGxPoints(pointLocation, tubes);
}
@Override
public Integer checkHaveTaskByPoints(List<String> pointCodes) {
return mdPbPapervehicleMapper.checkHaveTaskByPoints(pointCodes);
}
}

View File

@@ -0,0 +1,14 @@
package org.nl.b_lms.sch.tasks.slitter.mapper.dto;
import lombok.Data;
/**
* @Author: lyd
* @Date: 2025/4/29
*/
@Data
public class GxQtyDto {
private String point_code;
private String point_type;
private Integer qty;
}

View File

@@ -5,7 +5,6 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -13,6 +12,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
@@ -41,9 +43,9 @@ 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.mapper.dto.CallPlanViewVO;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.GxQtyDto;
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.common.enums.NoticeTypeEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
@@ -60,7 +62,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -153,21 +158,37 @@ public class SlitterServiceImpl implements SlitterService {
.filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toList());
// 判断是否存在纸管(查找三点位是否有所需的管芯)
List<MdPbPapervehicle> list = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
.in(MdPbPapervehicle::getMaterial_code, tubes)
.gt(MdPbPapervehicle::getQty, 0));
// List<MdPbPapervehicle> list = papervehicleService.getGXs(point.getPoint_location(), tubes);
// List<MdPbPapervehicle> list = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
// .in(MdPbPapervehicle::getMaterial_code, tubes)
// .gt(MdPbPapervehicle::getQty, 0));
List<GxQtyDto> gxQtyList = papervehicleService.getGxPoints(point.getPoint_location(), tubes);
// point.getTube_code1() 编码 getTube_name1() 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650
res.put("device_code", deviceCode);
res.put("data", con);
if ("1".equals(autoSendEmpty.getValue()) && list.size() == 0) {
if ("1".equals(autoSendEmpty.getValue()) && gxQtyList.size() == 0) {
con.put("is_bushing", "2");
} else {
int sum = list.stream()
.mapToInt(e -> e.getQty().intValue())
.sum();
// 需要求和判断当前数量和所需数
con.put("is_bushing", sum >= tubes.size() ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
// int sum = list.stream()
// .mapToInt(e -> e.getQty().intValue())
// .sum();
// // 需要求和判断当前数量和所需数
// con.put("is_bushing", sum >= tubes.size() ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
List<GxQtyDto> hasNeedPoint = gxQtyList.stream()
.filter(gx -> "1".equals(gx.getPoint_type()) && gx.getQty() >= tubes.size())
.collect(Collectors.toList());
if (hasNeedPoint.size() > 0) {
// 1、判断点位类型有没有=1且数量大于等于所需数
con.put("is_bushing", SlitterConstant.SLITTER_YES);
} else {
// 2、判断点位有没有任务010807->point3, 010808->point1
List<String> pointCodes = gxQtyList.stream()
.map(GxQtyDto::getPoint_code)
.distinct()
.collect(Collectors.toList());
Integer tasks = papervehicleService.checkHaveTaskByPoints(pointCodes);
con.put("is_bushing", tasks > 0 ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
}
}
con.put("left", point.getTube_code1());
con.put("leftSize", ObjectUtil.isNotEmpty(point.getTube_name1())