Merge remote-tracking branch 'origin/b_lms' into master_merge
# Conflicts: # lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
This commit is contained in:
@@ -92,4 +92,11 @@ public interface IBstIvtCutpointivtService extends IService<BstIvtCutpointivt> {
|
||||
* @return /
|
||||
*/
|
||||
List<BstIvtCutpointivt> getAllHalfPlacePoints(String type, String pointStatus, String location);
|
||||
|
||||
/**
|
||||
* 获取分切暂存下拉框
|
||||
* @param pointType /
|
||||
* @return /
|
||||
*/
|
||||
List<BstIvtCutpointivt> getPintByAgvCodesByPointType(String pointType);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.mapper.BstIvtCutpointivtMapper;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dto.BstIvtCutpointivtQuery;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
@@ -123,4 +124,10 @@ public class BstIvtCutpointivtServiceImpl extends ServiceImpl<BstIvtCutpointivtM
|
||||
public List<BstIvtCutpointivt> getAllHalfPlacePoints(String type, String pointStatus, String location) {
|
||||
return bstIvtCutpointivtMapper.getAllHalfPlacePoints(type, pointStatus, location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BstIvtCutpointivt> getPintByAgvCodesByPointType(String pointType) {
|
||||
return bstIvtCutpointivtMapper.selectList(new LambdaQueryWrapper<BstIvtCutpointivt>()
|
||||
.eq(BstIvtCutpointivt::getPoint_type, pointType));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,4 +67,23 @@ public class SlitterPdaController {
|
||||
public ResponseEntity<Object> cutIn(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(slitterDevices.cutIn(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/sendSubVolumeToNBJ")
|
||||
@Log("分切缓存到内包间任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> sendSubVolumeToNBJ(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(slitterDevices.pdaSendSubVolumeToNBJ(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/getCutCacheAgvPoints")
|
||||
@Log("获取分切暂存位AGV点位下拉框数据")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getCutCacheAgvPoints() {
|
||||
return new ResponseEntity<>(slitterDevices.getCutCacheAgvPoints(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/toCleanCutCacheInventory")
|
||||
@Log("清理分切缓存到内包间")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> toCleanCutCacheInventory(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(slitterDevices.toCleanCutCacheInventory(param), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* {@code @Description:} 装箱区点位库存表(BstIvtPackageinfoivt)数据持久层
|
||||
@@ -28,4 +29,10 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper<BstIvtPackageinfo
|
||||
Integer getZxqTaskCount(String groupId);
|
||||
|
||||
|
||||
/**
|
||||
* 获取点位任务数量
|
||||
*/
|
||||
List<SchBaseTask> getTaskList(Set<String> point_code1, Set<String> point_code2, Set<String> point_code3, Set<String> point_code4);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,26 +2,84 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper">
|
||||
<select id="getPointTaskCount" resultType="java.util.Map">
|
||||
SELECT
|
||||
t.point_code2,
|
||||
COUNT( t.point_code2 ) AS count
|
||||
FROM
|
||||
sch_base_task t
|
||||
WHERE
|
||||
t.task_type ='010704'
|
||||
AND t.create_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%s')
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
GROUP BY t.point_code2
|
||||
SELECT t.point_code2,
|
||||
COUNT(t.point_code2) AS count
|
||||
FROM sch_base_task t
|
||||
WHERE t.task_type = '010704'
|
||||
AND t.create_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%s')
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
GROUP BY t.point_code2
|
||||
</select>
|
||||
<select id="getZxqTaskCount" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT( 1 )
|
||||
FROM
|
||||
sch_base_task t
|
||||
WHERE
|
||||
t.task_type = '010908'
|
||||
AND t.vehicle_code2 = #{groupId}
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
AND t.create_time >= DATE_FORMAT(DATE_SUB( CURDATE(), INTERVAL 1 DAY ),'%Y-%m-%d %H:%i:%s')
|
||||
SELECT COUNT(1)
|
||||
FROM sch_base_task t
|
||||
WHERE t.task_type = '010908'
|
||||
AND t.vehicle_code2 = #{groupId}
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
AND t.create_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%s')
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getTaskList1" resultType="org.nl.b_lms.sch.task.dao.SchBaseTask">
|
||||
SELECT
|
||||
TASK_CODE
|
||||
FROM
|
||||
SCH_BASE_TASK
|
||||
WHERE
|
||||
(
|
||||
<if test="point_code1 != null">
|
||||
point_code1 IN #{point_code1}
|
||||
</if>
|
||||
<if test="point_code2 != null">
|
||||
OR point_code2 IN #{point_code2}
|
||||
</if>
|
||||
<if test="point_code3 != null">
|
||||
OR point_code3 IN #{point_code3}
|
||||
</if>
|
||||
<if test="point_code4 != null">
|
||||
OR point_code4 IN #{point_code4}
|
||||
</if>
|
||||
)
|
||||
AND (task_status <![CDATA[ < ]]> '07')
|
||||
</select>
|
||||
|
||||
<select id="getTaskList" resultType="org.nl.b_lms.sch.task.dao.SchBaseTask">
|
||||
SELECT
|
||||
point_code1,
|
||||
point_code2,
|
||||
point_code3,
|
||||
point_code4
|
||||
FROM
|
||||
SCH_BASE_TASK
|
||||
WHERE
|
||||
(
|
||||
<if test="point_code1 != null">
|
||||
point_code1 IN
|
||||
<foreach item="code" collection="point_code1" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="point_code2 != null">
|
||||
OR point_code2 IN
|
||||
<foreach item="code" collection="point_code2" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="point_code3 != null">
|
||||
OR point_code3 IN
|
||||
<foreach item="code" collection="point_code3" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="point_code4 != null">
|
||||
OR point_code4 IN
|
||||
<foreach item="code" collection="point_code4" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
)
|
||||
AND (task_status <![CDATA[ < ]]> '07')
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -32,12 +32,12 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
|
||||
|
||||
/**
|
||||
@@ -57,6 +57,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
@Resource
|
||||
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
@@ -77,54 +79,44 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
.map(BstIvtPackageinfoivt::getPoint_code)
|
||||
.collect(Collectors.toSet());
|
||||
if (CollectionUtils.isEmpty(pointIds)) {
|
||||
return null;
|
||||
return Collections.emptyList();
|
||||
}
|
||||
SFunction<SchBaseTask, String> pointCodeType1;
|
||||
SFunction<SchBaseTask, String> pointCodeType2 = null;
|
||||
if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"))) {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code1;
|
||||
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code2;
|
||||
List<SchBaseTask> taskList;
|
||||
Set<String> pointSets;
|
||||
if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务")) || pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) {
|
||||
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, null);
|
||||
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货分配"))) {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code3;
|
||||
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null);
|
||||
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code4;
|
||||
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))) {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code1;
|
||||
pointCodeType2 = SchBaseTask::getPoint_code3;
|
||||
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds);
|
||||
} else {
|
||||
pointCodeType1 = SchBaseTask::getPoint_code2;
|
||||
pointCodeType2 = SchBaseTask::getPoint_code4;
|
||||
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds);
|
||||
}
|
||||
// 查询未完成任务
|
||||
LambdaQueryWrapper<SchBaseTask> taskQueryWrapper = new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.in(pointCodeType1, pointIds);
|
||||
if (pointCodeType2 != null) {
|
||||
taskQueryWrapper = new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.in(pointCodeType1, pointIds).in(pointCodeType2, pointIds);
|
||||
}
|
||||
if (taskType != null && !taskType.isEmpty()) {
|
||||
taskQueryWrapper.eq(SchBaseTask::getTask_type, taskType);
|
||||
}
|
||||
List<SchBaseTask> taskList = taskService.list(taskQueryWrapper);
|
||||
SFunction<SchBaseTask, String> finalPointCodeType2 = pointCodeType2;
|
||||
Set<String> taskPointCodes = taskList.stream()
|
||||
.flatMap(task -> {
|
||||
Set<String> pointCodeTypes = new HashSet<>();
|
||||
pointCodeTypes.add(pointCodeType1.apply(task));
|
||||
if (finalPointCodeType2 != null) {
|
||||
pointCodeTypes.add(finalPointCodeType2.apply(task));
|
||||
}
|
||||
return pointCodeTypes.stream();
|
||||
})
|
||||
.collect(Collectors.toSet());
|
||||
// 过滤未完成任务的任务
|
||||
if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务")) || pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) {
|
||||
pointSets = taskList.stream()
|
||||
// 对每个任务应用映射操作,将point_code字段添加到Stream中
|
||||
.flatMap(task -> Stream.of(
|
||||
task.getPoint_code1(),
|
||||
task.getPoint_code2()
|
||||
))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
} else {
|
||||
pointSets = taskList.stream()
|
||||
// 对每个任务应用映射操作,将point_code字段添加到Stream中
|
||||
.flatMap(task -> Stream.of(
|
||||
task.getPoint_code1(),
|
||||
task.getPoint_code2(),
|
||||
task.getPoint_code3(),
|
||||
task.getPoint_code4()
|
||||
))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
return packageinfoivtList.stream()
|
||||
.filter(packageInfo -> !taskPointCodes.contains(packageInfo.getPoint_code()))
|
||||
.filter(p -> !pointSets.contains(p.getPoint_code()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
private List<BstIvtPackageinfoivt> getBstIvtPackageinfoivts(String ivtType, String ivtStatus, String sortType) {
|
||||
@@ -229,7 +221,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
} else {
|
||||
log.info("一楼装箱区点位二次分配接口异常,正在分配中!");
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "二次分配点位正在分配中!");
|
||||
result.put("message", "二次分配点位正在分配中,已锁住!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
@@ -247,6 +239,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
* @return 新的点位
|
||||
*/
|
||||
private String getNewPoint(String taskCode, String actionType) {
|
||||
String taskPointType = null;
|
||||
//执行中的任务
|
||||
SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_code, taskCode)
|
||||
@@ -254,17 +247,20 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
if (baseTask == null) {
|
||||
throw new BadRequestException("该任务未执行或不存在!");
|
||||
}
|
||||
|
||||
//1取货任务2放货任务
|
||||
LambdaQueryWrapper<BstIvtPackageinfoivt> queryWrapper = new LambdaQueryWrapper<>();
|
||||
if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货分配").equals(actionType)) {
|
||||
queryWrapper.eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code3());
|
||||
taskPointType = PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务");
|
||||
} else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) {
|
||||
queryWrapper.eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code4());
|
||||
taskPointType = PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务");
|
||||
}
|
||||
BstIvtPackageinfoivt bstIvtPackageinfoivt = bstIvtPackageinfoivtMapper.selectOne(queryWrapper);
|
||||
//根据任务类型返回点位分配规则
|
||||
BstIvtPackageinfoivt ivtInfo = getIvtInfoFromRegion(baseTask.getTask_type(), actionType);
|
||||
List<BstIvtPackageinfoivt> newPointList = getBstIvtPackageinfoivts(bstIvtPackageinfoivt.getPoint_status(), ivtInfo.getIvt_status(), ivtInfo.getSort_seq().toString());
|
||||
List<BstIvtPackageinfoivt> newPointList = packageinfoivtService.checkEndPointTask(bstIvtPackageinfoivt.getPoint_status(), ivtInfo.getIvt_status(), taskPointType, ivtInfo.getSort_seq().toString(), "");
|
||||
if (CollectionUtils.isEmpty(newPointList)) {
|
||||
throw new BadRequestException("暂无点位资源!");
|
||||
}
|
||||
@@ -389,7 +385,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
if (actionType.equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) {
|
||||
//清空起点库存状态
|
||||
bstIvtPackageinfoivtMapper.update(null, new UpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.setSql("ivt_status = null, container_name = '0'")
|
||||
.setSql("ivt_status = '0', container_name = null")
|
||||
.eq("point_code", baseTask.getPoint_code1()));
|
||||
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ public class DjqTask extends AbstractAcsTask {
|
||||
//1.更改任务状态为完成
|
||||
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||
//2.改变起点点位状态,二次分配,取货完成就改起点库存
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//3更新库存记录
|
||||
//todo 暂时改为质检合格品
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
|
||||
@@ -28,10 +28,37 @@ public class AutoSendDjqToGzq {
|
||||
|
||||
//待检区->管制区agv自动搬运任务
|
||||
public void run() {
|
||||
//this.sendDjqToGzq();
|
||||
this.sendDjqToGzq();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 普通任务
|
||||
*/
|
||||
void sendDjqToGzq() {
|
||||
//待检区有管制品且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("管制品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
//管制区有空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(gzqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->管制区"));
|
||||
task.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name());
|
||||
task.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
task.put("point_code2", gzqPackageinfoivtList.get(0).getPoint_code());
|
||||
gzqTask.createTask(task);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 二次分配任务
|
||||
*/
|
||||
void sendDjqToGzq1() {
|
||||
JSONObject task = new JSONObject();
|
||||
String pointCode1;
|
||||
//待检区有管制品且过滤未完成任务
|
||||
@@ -45,9 +72,9 @@ public class AutoSendDjqToGzq {
|
||||
pointCode1 = notNeedAllocation.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
||||
} else {
|
||||
pointCode1 = packageinfoivtService.getWaitPoint(djqPackageinfoivtList.get(0).getBlock(), djqPackageinfoivtList.get(0).getWait_point_type());
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配"));
|
||||
task.put("point_code3", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
pointCode1 = packageinfoivtService.getWaitPoint(djqPackageinfoivtList.get(0).getBlock(), djqPackageinfoivtList.get(0).getWait_point_type());
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配"));
|
||||
task.put("point_code3", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
}
|
||||
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), "", "");
|
||||
if (pointCode1 != null && CollectionUtils.isNotEmpty(gzqPackageinfoivtList)) {
|
||||
|
||||
@@ -28,10 +28,39 @@ public class AutoSendGzqToDjq {
|
||||
|
||||
//管制区->待检区agv自动搬运任务
|
||||
public void run() {
|
||||
//this.sendGzqToDjq();
|
||||
this.sendGzqToDjq();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 普通任务
|
||||
*/
|
||||
|
||||
void sendGzqToDjq() {
|
||||
//管制区有合格品且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(gzqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
//待检区有空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
|
||||
task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name());
|
||||
task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code());
|
||||
task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
djqTask.createTask(task);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 二次分配逻辑
|
||||
*/
|
||||
|
||||
void sendGzqToDjq1() {
|
||||
JSONObject task = new JSONObject();
|
||||
String pointCode2;
|
||||
//管制区有合格品且过滤未完成任务
|
||||
|
||||
@@ -28,27 +28,62 @@ public class AutoSendMzToDjq {
|
||||
|
||||
//满轴->待检区agv自动搬运任务
|
||||
public void run() {
|
||||
this.sendMzqToDjq();
|
||||
this.sendMzqToDjq2();
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通任务
|
||||
*/
|
||||
void sendMzqToDjq() {
|
||||
JSONObject toDjqTask = new JSONObject();
|
||||
//满轴有子卷且没有未完成任务
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1", "2", "");
|
||||
if (CollectionUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2", "1", "");
|
||||
if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
|
||||
toDjqTask.put("vehicle_code", bstIvtPackageinfoivtList.get(0).getContainer_name());
|
||||
toDjqTask.put("point_code1", bstIvtPackageinfoivtList.get(0).getPoint_code());
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
toDjqTask.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
djqTask.createTask(toDjqTask);
|
||||
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
JSONObject toDjqTask = new JSONObject();
|
||||
toDjqTask.put("vehicle_code", bstIvtPackageinfoivtList.get(0).getContainer_name());
|
||||
toDjqTask.put("point_code1", bstIvtPackageinfoivtList.get(0).getPoint_code());
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
toDjqTask.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
djqTask.createTask(toDjqTask);
|
||||
|
||||
}
|
||||
void sendMzqToDjq2() {
|
||||
try {
|
||||
String pointCode2 = null;
|
||||
JSONObject task = new JSONObject();
|
||||
//满轴有子卷且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> mzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(mzqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
//待检区有空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
pointCode2 = djqPackageinfoivtList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取货二次分配"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type()));
|
||||
task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code());
|
||||
task.put("point_code2", pointCode2);
|
||||
djqTask.createTask(task);
|
||||
|
||||
} catch (Exception ex) {
|
||||
log.error("sendMzqToDjq1 error:{}", ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 二次分配任务
|
||||
*/
|
||||
void sendMzqToDjq1() {
|
||||
try {
|
||||
String pointCode2 = null;
|
||||
@@ -73,15 +108,13 @@ public class AutoSendMzToDjq {
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取放货二次分配"));
|
||||
task.put("point_code4", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
}
|
||||
if (pointCode2 != null) {
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
//需要二次分配,起点分配等待点
|
||||
task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type()));
|
||||
task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code());
|
||||
task.put("point_code2", pointCode2);
|
||||
djqTask.createTask(task);
|
||||
}
|
||||
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
//需要二次分配,起点分配等待点
|
||||
task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type()));
|
||||
task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code());
|
||||
task.put("point_code2", pointCode2);
|
||||
djqTask.createTask(task);
|
||||
|
||||
} catch (Exception ex) {
|
||||
log.error("sendMzqToDjq1 error:{}", ex.getMessage());
|
||||
}
|
||||
|
||||
@@ -36,6 +36,9 @@ public class AutoSendToZxq {
|
||||
this.sendDjqToZxq();
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通任务
|
||||
*/
|
||||
void sendDjqToZxq() {
|
||||
JSONObject toDjqTask = new JSONObject();
|
||||
//待检区有子卷且过滤未完成任务
|
||||
@@ -44,16 +47,21 @@ public class AutoSendToZxq {
|
||||
return;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(zxqPackageinfoivtList)) {
|
||||
toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name());
|
||||
toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
|
||||
toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code());
|
||||
zxqTask.createTask(toDjqTask);
|
||||
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
toDjqTask.put("vehicle_code", djqPackageinfoivtList.get(0).getContainer_name());
|
||||
toDjqTask.put("point_code1", djqPackageinfoivtList.get(0).getPoint_code());
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
|
||||
toDjqTask.put("point_code2", zxqPackageinfoivtList.get(0).getPoint_code());
|
||||
zxqTask.createTask(toDjqTask);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 二次分配任务
|
||||
*/
|
||||
public void sendDjqToZxq1() {
|
||||
//装箱区有空位,去待检区消费合格品子卷
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(
|
||||
|
||||
@@ -31,14 +31,51 @@ public class AutoSendVehicleToDjq {
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
//装箱区->待检区或管制区补空载具
|
||||
|
||||
public void run() {
|
||||
//this.sendVehicleToDjqOrGzq();
|
||||
this.sendVehicleToDjqOrGzq1();
|
||||
}
|
||||
|
||||
|
||||
public void sendVehicleToDjqOrGzq1() {
|
||||
//存在装箱区有空载具的点位
|
||||
String pointCode2 = null;
|
||||
JSONObject task = new JSONObject();
|
||||
List<BstIvtPackageinfoivt> zxqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"), "", "");
|
||||
if (CollectionUtils.isEmpty(zxqIvtList)) {
|
||||
return;
|
||||
}
|
||||
//待检区有空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
|
||||
pointCode2 = djqPackageinfoivtList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"));
|
||||
} else {
|
||||
//管制区有空位
|
||||
List<BstIvtPackageinfoivt> gzqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isNotEmpty(gzqList)) {
|
||||
pointCode2 = gzqList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)"));
|
||||
}
|
||||
}
|
||||
//去装箱区搬运空载具
|
||||
if (pointCode2 != null) {
|
||||
task.put("point_code2", pointCode2);
|
||||
task.put("point_code1", zxqIvtList.get(0).getPoint_code());
|
||||
if (task.getString("task_type").equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"))) {
|
||||
sendDjqKzjTask.createTask(task);
|
||||
} else {
|
||||
sendGzqKzjTask.createTask(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 装箱区->待检区或管制区补空载具
|
||||
* 二次分配任务
|
||||
*/
|
||||
public void sendVehicleToDjqOrGzq() {
|
||||
//存在装箱区有空载具的点位
|
||||
@@ -76,7 +113,7 @@ public class AutoSendVehicleToDjq {
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)"));
|
||||
}
|
||||
}
|
||||
//去待检区或管制区搬运空载具
|
||||
//去装箱区搬运空载具
|
||||
if (pointCode2 != null) {
|
||||
task.put("point_code2", pointCode2);
|
||||
//送空二次分配,目标点分配等待点
|
||||
|
||||
@@ -29,14 +29,84 @@ public class AutoSendVehicleToKzj {
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
|
||||
//待检区或管制区->空载具缓存位补空
|
||||
public void run() {
|
||||
this.toKzjHcw();
|
||||
this.toKzjHcw2();
|
||||
}
|
||||
|
||||
|
||||
public void toKzjHcw() {
|
||||
//存在空载具缓存位无空载具的点位
|
||||
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(kzjIvtList)) {
|
||||
return;
|
||||
}
|
||||
String pointCode1 = null;
|
||||
JSONObject task = new JSONObject();
|
||||
//待检区有空载具
|
||||
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
pointCode1 = djqPointList.get(0).getPoint_code();
|
||||
} else {
|
||||
//查询装箱区有空载具
|
||||
List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(zxqPointList)) {
|
||||
pointCode1 = zxqPointList.get(0).getPoint_code();
|
||||
}
|
||||
}
|
||||
//去装箱区搬运空载具
|
||||
if (pointCode1 != null) {
|
||||
task.put("point_code1", pointCode1);
|
||||
//送到到任意空载具缓存位
|
||||
task.put("point_code2", kzjIvtList.get(0).getPoint_code());
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
||||
djqToKzjhcwTask.createTask(task);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 待检区或管制区->空载具缓存位补空
|
||||
* 二次分配任务
|
||||
*/
|
||||
public void toKzjHcw2() {
|
||||
//存在空载具缓存位无空载具的点位
|
||||
String pointCode1 = null;
|
||||
JSONObject task = new JSONObject();
|
||||
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), "", "");
|
||||
if (CollectionUtils.isEmpty(kzjIvtList)) {
|
||||
return;
|
||||
}
|
||||
//待检区有空载具且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
|
||||
pointCode1 = djqPackageinfoivtList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
||||
} else {
|
||||
//管制区有空位
|
||||
List<BstIvtPackageinfoivt> gzqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(gzqList)) {
|
||||
pointCode1 = gzqList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"));
|
||||
}
|
||||
}
|
||||
//去待检区或管制区搬运空载具
|
||||
if (pointCode1 != null) {
|
||||
task.put("point_code1", pointCode1);
|
||||
//送空二次分配,目标点分配等待点
|
||||
task.put("point_code4", kzjIvtList.get(0).getPoint_code());
|
||||
task.put("point_code2", packageinfoivtService.getWaitPoint(kzjIvtList.get(0).getBlock(), kzjIvtList.get(0).getWait_point_type()));
|
||||
if (task.getString("task_type").equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"))) {
|
||||
djqToKzjhcwTask.createTask(task);
|
||||
} else {
|
||||
gzqToKzjhcwTask.createTask(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 二次分配任务
|
||||
*/
|
||||
public void toKzjHcw1() {
|
||||
//存在空载具缓存位无空载具的点位
|
||||
@@ -49,10 +119,10 @@ public class AutoSendVehicleToKzj {
|
||||
//待检区有空载具且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
|
||||
//无二次分配
|
||||
//无需二次分配
|
||||
List<BstIvtPackageinfoivt> notNeedAllocation = djqPackageinfoivtList.stream().filter(r -> !r.getWait_point_type().equals(PackageInfoIvtEnum.WAIT_POINT_TYPE.code("待检区等待点"))).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(notNeedAllocation)) {
|
||||
pointCode1 = notNeedAllocation.get(0).getPoint_code();
|
||||
pointCode1 = djqPackageinfoivtList.get(0).getPoint_code();
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
||||
} else {
|
||||
if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
|
||||
@@ -87,34 +157,4 @@ public class AutoSendVehicleToKzj {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void toKzjHcw() {
|
||||
//存在空载具缓存位无空载具的点位
|
||||
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(kzjIvtList)) {
|
||||
return;
|
||||
}
|
||||
String pointCode1 = null;
|
||||
JSONObject toKzjHcwTask = new JSONObject();
|
||||
//待检区有空载具
|
||||
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
pointCode1 = djqPointList.get(0).getPoint_code();
|
||||
} else {
|
||||
//查询装箱区有空载具
|
||||
List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (CollectionUtils.isNotEmpty(zxqPointList)) {
|
||||
pointCode1 = zxqPointList.get(0).getPoint_code();
|
||||
}
|
||||
}
|
||||
//去装箱区搬运空载具
|
||||
if (pointCode1 != null) {
|
||||
toKzjHcwTask.put("point_code1", pointCode1);
|
||||
//送到到任意空载具缓存位
|
||||
toKzjHcwTask.put("point_code2", kzjIvtList.get(0).getPoint_code());
|
||||
toKzjHcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
||||
djqToKzjhcwTask.createTask(toKzjHcwTask);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -88,12 +88,10 @@ public class SendAirShaftAgvTask extends AbstractAcsTask {
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||
// 互换资源
|
||||
String startPoint = task.getPoint_code1();
|
||||
BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false);
|
||||
// update: 在acs请求取货完成就已经清空点位信息
|
||||
String endPoint = task.getPoint_code2();
|
||||
BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false);
|
||||
TaskUtils.pointExchangeResources(startPointObj, endPointObj, "2");
|
||||
bcutpointivtService.updateById(startPointObj);
|
||||
TaskUtils.pointMaintenanceInventory(task, endPointObj, "2");
|
||||
bcutpointivtService.updateById(endPointObj);
|
||||
// 分切计划状态修改02->03
|
||||
List<String> collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2())
|
||||
|
||||
@@ -82,12 +82,10 @@ public class SlitterDownAgvTask extends AbstractAcsTask {
|
||||
}
|
||||
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||
// 互换资源
|
||||
String startPoint = task.getPoint_code1();
|
||||
BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false);
|
||||
// update: 在acs请求取货完成就已经清空点位信息
|
||||
String endPoint = task.getPoint_code2();
|
||||
BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false);
|
||||
TaskUtils.pointExchangeResources(startPointObj, endPointObj, "3");
|
||||
bcutpointivtService.updateById(startPointObj);
|
||||
TaskUtils.pointMaintenanceInventory(task, endPointObj, "3");
|
||||
bcutpointivtService.updateById(endPointObj);
|
||||
}
|
||||
// 取消
|
||||
|
||||
@@ -68,6 +68,7 @@ public class StockAreaCallTubeTask extends AbstractAcsTask {
|
||||
.start_device_code2(task.getPoint_code3())
|
||||
.next_device_code2(task.getPoint_code4())
|
||||
.vehicle_code(task.getVehicle_code())
|
||||
.interaction_json(JSONObject.parseObject(task.getRequest_param()))
|
||||
.agv_system_type(agv_system_type)
|
||||
.priority(task.getPriority())
|
||||
.product_area(task.getProduct_area())
|
||||
@@ -101,33 +102,6 @@ public class StockAreaCallTubeTask extends AbstractAcsTask {
|
||||
TaskUtils.updateOptMessageByBStockingPoint(startPointObj);
|
||||
stockingivtService.update(startPointObj);
|
||||
|
||||
|
||||
//下发ACS点位库存信息
|
||||
List<MdPbPapervehicle> list = mdPbPapervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>().eq(MdPbPapervehicle::getVehicle_code, task.getVehicle_code()));
|
||||
String[] material_codes = new String[list.size()];
|
||||
String[] material_specs = new String[list.size()];
|
||||
int[] qtys = new int[list.size()];
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
MdPbPapervehicle vehicle = list.get(i);
|
||||
String material_code = vehicle.getMaterial_code();
|
||||
int qty = vehicle.getQty().intValue();
|
||||
if (containscode(material_codes, material_code)) {
|
||||
int index = getIndex(material_codes, material_code);
|
||||
qtys[index] += qty;
|
||||
} else {
|
||||
material_codes[i] = vehicle.getMaterial_code();
|
||||
String spec = SlitterTaskUtil.getComposePaperTubeInformation(vehicle.getMaterial_name());
|
||||
material_specs[i] = spec;
|
||||
qtys[i] = qty;
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("to_material", material_codes);
|
||||
jsonObject.put("to_spec", material_codes);
|
||||
jsonObject.put("to_qty", qtys);
|
||||
jsonObject.put("device_code", material_specs);
|
||||
wmsToAcsService.getTubeMsg(jsonObject);
|
||||
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
@@ -137,25 +111,6 @@ public class StockAreaCallTubeTask extends AbstractAcsTask {
|
||||
taskService.updateById(task);
|
||||
}
|
||||
|
||||
public boolean containscode(String[] names, String name) {
|
||||
for (String n : names) {
|
||||
if (name.equals(n)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取name在数组中的索引
|
||||
public int getIndex(String[] names, String name) {
|
||||
for (int i = 0; i < names.length; i++) {
|
||||
if (name.equals(names[i])) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1; // 如果找不到返回-1
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
|
||||
@@ -5,7 +5,10 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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.stockingivt.service.IBstIvtStockingivtService;
|
||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -28,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.doSavePaperInfos;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 备货区(靠近机械手)送走托盘到暂存位置的备货区 - AGV任务
|
||||
@@ -43,6 +48,8 @@ public class StockAreaSendVehicleTask extends AbstractAcsTask {
|
||||
private IBstIvtStockingivtService stockingivtService;
|
||||
@Autowired
|
||||
private StockAreaCallTubeTask stockAreaCallTubeTask;
|
||||
@Autowired
|
||||
private IMdPbPapervehicleService mdPbPapervehicleService;
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
@@ -107,6 +114,9 @@ public class StockAreaSendVehicleTask extends AbstractAcsTask {
|
||||
param.put("vehicle_code", callPoint.getString("vehicle_code"));
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送纸管"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
List<MdPbPapervehicle> paperList = mdPbPapervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
|
||||
.eq(MdPbPapervehicle::getVehicle_code, callPoint.getString("vehicle_code")));
|
||||
doSavePaperInfos(paperList, param);
|
||||
stockAreaCallTubeTask.createTask(param);
|
||||
}
|
||||
// 取消
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||
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.shafttubeivt.service.IBstIvtShafttubeivtService;
|
||||
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
|
||||
import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService;
|
||||
@@ -33,6 +35,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.*;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2024/2/1
|
||||
@@ -64,6 +68,8 @@ public class AutoCallAirShaftTask {
|
||||
private StockAreaSendVehicleTask stockAreaSendVehicleTask;
|
||||
@Autowired
|
||||
private StockAreaCallTubeTask stockAreaCallTubeTask;
|
||||
@Autowired
|
||||
private IMdPbPapervehicleService mdPbPapervehicleService;
|
||||
|
||||
/**
|
||||
* hint: 目前只是考虑了上区域
|
||||
@@ -256,7 +262,10 @@ public class AutoCallAirShaftTask {
|
||||
param.put("point_code2", needMovePoint.getPoint_code());
|
||||
param.put("vehicle_code", needPoint.getVehicle_code());
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送纸管"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
// 存储纸管信息
|
||||
List<MdPbPapervehicle> paperList = mdPbPapervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
|
||||
.eq(MdPbPapervehicle::getVehicle_code, needPoint.getVehicle_code()));
|
||||
doSavePaperInfos(paperList, param);
|
||||
stockAreaCallTubeTask.createTask(param);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package org.nl.b_lms.sch.tasks.slitter.auto;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||
import org.nl.b_lms.sch.tasks.slitter.SlitterDownAgvTask;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 自动任务 分切机满卷下料(分切对接位:3)去拔轴 AGV任务
|
||||
* 先去套轴对接位,(标箔,套轴对接位不够的情况下是去分切缓存位)
|
||||
* 改成:先去暂存位,手持送到内包间
|
||||
*
|
||||
* 分切对接位和分切缓存位公用类
|
||||
* @Date: 2024/2/1
|
||||
* @see SlitterDownAgvTask#createTask(JSONObject)
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AutoSlitterCacheDownAgvTask {
|
||||
|
||||
@Autowired
|
||||
private IBstIvtCutpointivtService cutpointivtService;
|
||||
@Autowired
|
||||
private SlitterDownAgvTask slitterDownAgvTask;
|
||||
@Autowired
|
||||
private SlitterMapper slitterMapper;
|
||||
/**
|
||||
* 业务:
|
||||
* 分切下料满卷(分切计划是结束),通过气涨轴编码可定位。
|
||||
* 先往套轴对接位送,不够再送分切缓存位(针对B2,B4车间)
|
||||
*/
|
||||
public void run() {
|
||||
// 获取分切对接位满轴数据 todo: 先不考虑区域,后期添加
|
||||
// bct.point_type IN ('2', '3') -> bct.point_type = '3'
|
||||
List<BstIvtCutpointivt> cutPointIvts = slitterMapper.getAreaFullVolume();
|
||||
cutPointIvts.forEach(cut -> {
|
||||
// cut是起点
|
||||
// remove: 1、先去对应的套轴对接位,没有气涨轴(空位),没有任务的点位
|
||||
// update: 1、去分切缓存位,在由手持下发到内包间
|
||||
List<BstIvtCutpointivt> areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("2", "1", "0","0");
|
||||
if (areaEmptyNotTaskPoint.size() == 0) {
|
||||
log.warn(cut.getProduct_area() + "该区域暂无位置存放满轴");
|
||||
return;
|
||||
}
|
||||
// 生成任务
|
||||
BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0);
|
||||
toCreateTask(cut, endPoint);
|
||||
});
|
||||
}
|
||||
|
||||
private void toCreateTask(BstIvtCutpointivt cut, BstIvtCutpointivt endPoint) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", cut.getPoint_code());
|
||||
param.put("point_code2", endPoint.getPoint_code());
|
||||
param.put("vehicle_code1", cut.getQzz_no1());
|
||||
param.put("vehicle_code2", cut.getQzz_no2());
|
||||
param.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV任务"));
|
||||
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
slitterDownAgvTask.createTask(param);
|
||||
}
|
||||
}
|
||||
@@ -26,12 +26,13 @@ import java.util.stream.Stream;
|
||||
* @Author: lyd
|
||||
* @Description: 自动任务 分切机满卷下料(分切对接位:3)去拔轴 AGV任务
|
||||
* 先去套轴对接位,(标箔,套轴对接位不够的情况下是去分切缓存位)
|
||||
*
|
||||
* update: 业务不需要
|
||||
* 分切对接位和分切缓存位公用类
|
||||
* @Date: 2024/2/1
|
||||
* @see SlitterDownAgvTask#createTask(JSONObject)
|
||||
*/
|
||||
@Slf4j
|
||||
@Deprecated
|
||||
@Component
|
||||
public class AutoSlitterDownAgvTask {
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public enum SlitterEnum {
|
||||
*/
|
||||
TASK_TYPE(MapOf.of("穿拔轴缓存<>穿拔轴位", "010801", "穿拔轴缓存<>分切对接位", "010802", "穿拔轴位<>气胀轴缓存位", "010803"
|
||||
, "分切机下料AGV任务", "010804", "分切机上气胀轴", "010805", "分切机下气胀轴", "010806", "备货区送载具", "010807"
|
||||
, "备货区送纸管", "010808", "分切机下料桁架任务", "010809"));
|
||||
, "备货区送纸管", "010808", "分切机下料桁架任务", "010809", "分切机下料AGV到内包间", "010810"));
|
||||
private Map<String, String> code;
|
||||
|
||||
public String code(String desc) {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<select id="getAreaFullVolume" resultType="org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt">
|
||||
SELECT bct.*
|
||||
FROM `bst_ivt_cutpointivt` bct
|
||||
WHERE bct.point_type IN ('2', '3')
|
||||
WHERE bct.point_type = '3'
|
||||
AND bct.point_status = '3'
|
||||
AND bct.is_used = '1'
|
||||
AND 0 = (SELECT COUNT(*)
|
||||
|
||||
@@ -120,4 +120,31 @@ public interface SlitterService {
|
||||
JSONObject doInitShaftPoint(JSONObject param);
|
||||
|
||||
JSONObject cutIn(JSONObject param);
|
||||
|
||||
/**
|
||||
* 二期acs请求取货完成
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject acsActionFinishRequestToRelease(JSONObject param);
|
||||
|
||||
/**
|
||||
* 手持下卷到内包间
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject pdaSendSubVolumeToNBJ(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取分切暂存位AGV点位下拉框数据
|
||||
* @return
|
||||
*/
|
||||
JSONArray getCutCacheAgvPoints();
|
||||
|
||||
/**
|
||||
* 清理分切缓存到内包间
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject toCleanCutCacheInventory(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,10 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -49,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
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;
|
||||
@@ -101,6 +105,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
private IBstIvtStockingivtService stockingivtService;
|
||||
@Autowired
|
||||
private IMdPbPapervehicleService papervehicleService;
|
||||
@Autowired
|
||||
private SlitterDownAgvTask slitterDownAgvTask;
|
||||
@Autowired
|
||||
private ISysParamService paramService;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -111,6 +119,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
String deviceCode = param.getString("device_code");
|
||||
String size = param.getString("size");
|
||||
BstIvtShafttubeivt point = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
Param autoSendEmpty = paramService.findByCode("autoSendEmpty");
|
||||
if (ObjectUtil.isEmpty(autoSendEmpty)) {
|
||||
throw new BadRequestException("未配置是否直接送气胀轴");
|
||||
}
|
||||
// 判断尺寸是否相同
|
||||
if (!size.equals(point.getQzz_size())) {
|
||||
log.error("设备:{}对应的气胀轴尺寸不批对,需要气胀轴尺寸:{},实际尺寸:{}", deviceCode, point.getQzz_size(), size);
|
||||
@@ -127,7 +139,11 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
// point.getTube_code1() 编码 , getTube_name1() : 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("data", con);
|
||||
con.put("is_bushing", list.size() > 0 ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
|
||||
if ("1".equals(autoSendEmpty.getValue())) {
|
||||
con.put("is_bushing", "2");
|
||||
} else {
|
||||
con.put("is_bushing", list.size() > 0 ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
|
||||
}
|
||||
con.put("left", point.getTube_code1());
|
||||
con.put("leftSize", ObjectUtil.isNotEmpty(point.getTube_name1())
|
||||
? point.getTube_name1().split("\\|")[2].charAt(0) : "");
|
||||
@@ -820,4 +836,141 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject acsActionFinishRequestToRelease(JSONObject param) {
|
||||
String taskCode = param.getString("task_code");
|
||||
if (ObjectUtil.isEmpty(taskCode)) {
|
||||
throw new BadRequestException("ACS二楼请求取货完成失败,任务号不能为空!");
|
||||
}
|
||||
SchBaseTask task = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_code, taskCode));
|
||||
// 起点释放
|
||||
String startPoint = task.getPoint_code1();
|
||||
BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false);
|
||||
startPointObj.setPoint_status("1");
|
||||
startPointObj.setQzz_no1("");
|
||||
startPointObj.setQzz_no2("");
|
||||
TaskUtils.updateOptMessageByBCutPoint(startPointObj);
|
||||
bcutpointivtService.updateById(startPointObj);
|
||||
task.setTask_status(TaskStatusEnum.PICK_UP_COMPLETED.getCode());
|
||||
TaskUtils.updateOptMessageByTask(task);
|
||||
taskService.updateById(task);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.HTTP_OK);
|
||||
result.put("message", "反馈取货成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject pdaSendSubVolumeToNBJ(JSONObject param) {
|
||||
log.info("手持申请送子卷到内包间参数:{}", param);
|
||||
// param: point_code
|
||||
String pointCode = param.getString("point_code");
|
||||
RLock open = redissonClient.getLock(pointCode);
|
||||
boolean openLock;
|
||||
try {
|
||||
openLock = open.tryLock(0, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
try {
|
||||
if (openLock) {
|
||||
BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false);
|
||||
if (Objects.equals(point.getPoint_status(), "1")) {
|
||||
// 如果是没货
|
||||
throw new BadRequestException("点位:" + point.getPoint_code() + "检测无货,请确保任务执行完毕后触发!");
|
||||
}
|
||||
List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1",
|
||||
"1", "0", "2");
|
||||
if (areaEmptyNotTaskPoint.size() == 0) {
|
||||
throw new BadRequestException("请求搬运失败,内包间没有可存放位置!");
|
||||
}
|
||||
BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0);
|
||||
RLock lock = redissonClient.getLock(endPoint.getPoint_code());
|
||||
boolean tryLock;
|
||||
try {
|
||||
tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
try {
|
||||
if (tryLock) {
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("point_code1", point.getPoint_code());
|
||||
taskParam.put("point_code2", endPoint.getPoint_code());
|
||||
taskParam.put("vehicle_code1", point.getQzz_no1());
|
||||
taskParam.put("vehicle_code2", point.getQzz_no2());
|
||||
taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV到内包间"));
|
||||
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||
slitterDownAgvTask.createTask(taskParam);
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试!!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试!!");
|
||||
}
|
||||
} finally {
|
||||
if (openLock) {
|
||||
open.unlock();
|
||||
}
|
||||
}
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("status", HttpStatus.HTTP_OK);
|
||||
res.put("message", "请求成功!");
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getCutCacheAgvPoints() {
|
||||
List<BstIvtCutpointivt> list = bcutpointivtService.getPintByAgvCodesByPointType("3");
|
||||
JSONArray jsonArray = list.stream()
|
||||
.map(item -> {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("text", item.getPoint_code());
|
||||
jsonObject.put("value", item.getPoint_name());
|
||||
return jsonObject;
|
||||
})
|
||||
.collect(Collectors.toCollection(JSONArray::new));
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject toCleanCutCacheInventory(JSONObject param) {
|
||||
log.info("手持清理分切暂存位参数:{}", param);
|
||||
// param: point_code
|
||||
String pointCode = param.getString("point_code");
|
||||
RLock open = redissonClient.getLock(pointCode);
|
||||
boolean openLock;
|
||||
try {
|
||||
openLock = open.tryLock(0, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
try {
|
||||
if (openLock) {
|
||||
BstIvtCutpointivt agvCode = bcutpointivtService.getPintByAgvCode(pointCode, false);
|
||||
agvCode.setQzz_no1("");
|
||||
agvCode.setQzz_no2("");
|
||||
agvCode.setPoint_status("1");
|
||||
TaskUtils.updateOptMessageByBCutPoint(agvCode);
|
||||
bcutpointivtService.updateById(agvCode);
|
||||
} else {
|
||||
throw new BadRequestException("系统繁忙,稍后在试!!");
|
||||
}
|
||||
} finally {
|
||||
if (openLock) {
|
||||
open.unlock();
|
||||
}
|
||||
}
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("status", HttpStatus.HTTP_OK);
|
||||
res.put("message", "库存清除成功!");
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package org.nl.b_lms.sch.tasks.slitter.util;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
|
||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
||||
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;
|
||||
@@ -178,4 +181,64 @@ public class SlitterTaskUtil {
|
||||
}
|
||||
return "1";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询是否包含在内
|
||||
* @param names 数组
|
||||
* @param name 自负床
|
||||
* @return Boolean 是 {@code true} or 否{@code false}
|
||||
*/
|
||||
public static boolean containscode(String[] names, String name) {
|
||||
for (String n : names) {
|
||||
if (name.equals(n)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取name在数组中的索引
|
||||
* @param names 数组
|
||||
* @param name 校验字符
|
||||
* @return 索引
|
||||
*/
|
||||
public static int getIndex(String[] names, String name) {
|
||||
for (int i = 0; i < names.length; i++) {
|
||||
if (name.equals(names[i])) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
// 如果找不到返回-1
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 业务:备货区送纸管托盘时候,将纸管信息带给任务中的参数
|
||||
* @param paperList 备货区纸管信息
|
||||
* @param param 任务参数json
|
||||
*/
|
||||
public static void doSavePaperInfos(List<MdPbPapervehicle> paperList, JSONObject param) {
|
||||
String[] material_codes = new String[paperList.size()];
|
||||
String[] material_specs = new String[paperList.size()];
|
||||
int[] qtys = new int[paperList.size()];
|
||||
for (int i = 0; i < paperList.size(); i++) {
|
||||
MdPbPapervehicle vehicle = paperList.get(i);
|
||||
String materialCode = vehicle.getMaterial_code();
|
||||
int qty = vehicle.getQty().intValue();
|
||||
if (containscode(material_codes, materialCode)) {
|
||||
int index = getIndex(material_codes, materialCode);
|
||||
qtys[index] += qty;
|
||||
} else {
|
||||
material_codes[i] = vehicle.getMaterial_code();
|
||||
String spec = getComposePaperTubeInformation(vehicle.getMaterial_name());
|
||||
material_specs[i] = spec;
|
||||
qtys[i] = qty;
|
||||
}
|
||||
}
|
||||
param.put("to_material", material_codes);
|
||||
param.put("to_spec", material_codes);
|
||||
param.put("to_qty", qtys);
|
||||
param.put("device_code", material_specs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.common.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
|
||||
@@ -44,6 +45,24 @@ public class TaskUtils {
|
||||
source.setUpdate_time(now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务维护分切点位库存
|
||||
* @param taskObj 任务
|
||||
* @param endPointObj 点位
|
||||
* @param status 状态
|
||||
*/
|
||||
public static void pointMaintenanceInventory(SchBaseTask task, BstIvtCutpointivt target, String status) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
String now = DateUtil.now();
|
||||
target.setQzz_no1(task.getVehicle_code());
|
||||
target.setQzz_no2(task.getVehicle_code2());
|
||||
target.setPoint_status(status);
|
||||
target.setUpdate_optid(currentUserId);
|
||||
target.setUpdate_optname(currentUsername);
|
||||
target.setUpdate_time(now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用0,1,2,3四个的二进制字符表示是下单(双)上单(双)
|
||||
* @param currentUpPlan 要下来的上轴
|
||||
|
||||
@@ -110,12 +110,17 @@ public class AcsToWmsController {
|
||||
}
|
||||
|
||||
@PostMapping("/actionFinishRequest")
|
||||
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> actionFinishRequest(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(acsToWmsService.actionFinishRequest(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/actionFinishRequest2")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> actionFinishRequest2(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(acsToWmsService.actionFinishRequest2(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
/*@PostMapping("/getQZZInfo")
|
||||
|
||||
@SaIgnore
|
||||
|
||||
@@ -202,4 +202,11 @@ public interface AcsToWmsService {
|
||||
* @return /
|
||||
*/
|
||||
JSONObject getBoxInfo(JSONObject param);
|
||||
|
||||
/**
|
||||
* 二楼取货完成请求
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject actionFinishRequest2(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -67,6 +67,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -1790,14 +1793,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 这个情况是有agv任务在搬去待检区或管制区的路上,还没有更新任务状态;需要查询是否有这种任务,等这个任务更新完后,
|
||||
// 再补发之前创建的输送线到满轴缓存位任务;
|
||||
log.info("二楼到一楼,成品子卷到达一楼输送线,sendProductToFirstFloor--------------------------:" + whereJson.toString());
|
||||
JSONObject result = new JSONObject();
|
||||
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!");
|
||||
}
|
||||
if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!");
|
||||
}
|
||||
RLock lock = redissonClient.getLock(whereJson.getString("material_barcode"));
|
||||
String containerName = whereJson.getString("material_barcode");
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", containerName);
|
||||
RLock lock = redissonClient.getLock(containerName);
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
@@ -1807,10 +1812,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> mzPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()))
|
||||
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed()).collect(Collectors.toList());
|
||||
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("vehicle_code", whereJson.getString("material_barcode"));
|
||||
jo.put("vehicle_code", containerName);
|
||||
//2.创建输送线->满轴位桁架任务,
|
||||
String point_code1 = whereJson.getString("device_code");
|
||||
jo.put("point_code1", point_code1);
|
||||
@@ -1820,56 +1827,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
|
||||
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq).reversed()).collect(Collectors.toList());
|
||||
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList());
|
||||
//空载具缓存位有空载具,桁架取空载具从外到里取空载具,升序
|
||||
if (CollectionUtils.isNotEmpty(kzjPointList)) {
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
|
||||
//终点为输送线点位
|
||||
jo.put("point_code4", whereJson.getString("device_code"));
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
}
|
||||
//创建输送线四个点任务
|
||||
return createTask(containerName, jo, kzjPointList.get(0).getPoint_code(), whereJson.getString("device_code"));
|
||||
} else {
|
||||
//如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务
|
||||
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
}
|
||||
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
|
||||
List<SchBaseTask> existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
if (CollectionUtils.isEmpty(existTasks)) {
|
||||
JSONObject jo1 = new JSONObject();
|
||||
//创建确定终点任务
|
||||
jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
jo1.put("point_code2", "NBJ1002");
|
||||
jo1.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
||||
jo1.put("is_send", false);
|
||||
ssxDjwTask.createTask(jo1);
|
||||
}
|
||||
//创建输送线->满轴缓存位两个点任务
|
||||
return createTask2(containerName, jo);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
} else {
|
||||
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
|
||||
// List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
// //如果有就不创建,没有就创建
|
||||
// if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
// //只确定起点NBJ1002
|
||||
// JSONObject jo2 = new JSONObject();
|
||||
// jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
// jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
// jo2.put("point_code1", "NBJ1002");
|
||||
// jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
// jo2.put("is_send", false);
|
||||
// mzhcwTask.createTask(jo2);
|
||||
// }
|
||||
//如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
|
||||
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"),containerName);
|
||||
//如果有就不创建,没有就创建
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
//只确定起点NBJ1002
|
||||
JSONObject jo2 = new JSONObject();
|
||||
jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
jo2.put("point_code1", "NBJ1002");
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo2.put("is_send", false);
|
||||
mzhcwTask.createTask(jo2);
|
||||
}
|
||||
result.put("data", containerName);
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "满轴缓存位暂无空位!");
|
||||
}
|
||||
@@ -1886,6 +1867,61 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private JSONObject createTask2(String containerName, JSONObject jo) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", containerName);
|
||||
//如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务
|
||||
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
List<SchBaseTask> existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName);
|
||||
if (CollectionUtils.isEmpty(existTaskList1)) {
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
|
||||
List<SchBaseTask> existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
List<SchBaseTask> existTask1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName);
|
||||
if (CollectionUtils.isEmpty(existTask1)) {
|
||||
JSONObject jo1 = new JSONObject();
|
||||
//创建确定终点任务
|
||||
jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
jo1.put("point_code2", "NBJ1002");
|
||||
jo1.put("vehicle_code", containerName);
|
||||
jo1.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
||||
jo1.put("is_send", false);
|
||||
ssxDjwTask.createTask(jo1);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
} else {
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private JSONObject createTask(String containerName, JSONObject jo, String pointCode3, String pointCode4) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", containerName);
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
List<SchBaseTask> existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), containerName);
|
||||
if (CollectionUtils.isEmpty(existTaskList1)) {
|
||||
jo.put("point_code3", pointCode3);
|
||||
//终点为输送线点位
|
||||
jo.put("point_code4", pointCode4);
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
} else {
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<SchBaseTask> getExistTasks(String taskType) {
|
||||
return taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_type, taskType)
|
||||
@@ -1893,6 +1929,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")));
|
||||
}
|
||||
|
||||
private List<SchBaseTask> getExistTasks(String taskType, String containerName) {
|
||||
String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
return taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_type, taskType)
|
||||
.eq(SchBaseTask::getVehicle_code, containerName)
|
||||
.gt(SchBaseTask::getCreate_time, startTime)
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -2423,4 +2470,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
point.update(jsonParam,"region_code = 'ZC01' AND block_num = '"+block_num+"' AND row_num = '"+row_num+"' AND layer_num = '1'");
|
||||
|
||||
}
|
||||
@Override
|
||||
public JSONObject actionFinishRequest2(JSONObject param) {
|
||||
return slitterService.acsActionFinishRequestToRelease(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ public enum TaskStatusEnum {
|
||||
ISSUE("05", "下发"),
|
||||
EXECUTING("06", "执行中"),
|
||||
FINISHED("07", "完成"),
|
||||
PICK_UP_COMPLETED("071", "取货完成,执行中"),
|
||||
CANCEL("08", "取消");
|
||||
|
||||
private String name;
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
请仔细核对子卷与木箱规格是否匹配,
|
||||
<br>
|
||||
<br>
|
||||
<span class="red-text">木箱长度为:{{ this.boxLength }}</span>,
|
||||
<span class="red-text">木箱规格为:{{ this.boxLength }}</span>,
|
||||
<br>
|
||||
<br>
|
||||
<span class="red-text">子卷规格为:{{ this.paperTubeDescription }}</span>,
|
||||
@@ -211,7 +211,7 @@ export default {
|
||||
submit() {
|
||||
debugger
|
||||
this.rows = this.$refs.table.selection
|
||||
this.boxLength = this.rows[0].box_length
|
||||
this.boxLength = this.rows[0].material_code
|
||||
if (this.rows.length <= 0) {
|
||||
this.$message('请先选择木箱信息')
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user