diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml
index f7545f0a4..41faca610 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml
@@ -40,6 +40,7 @@
LEFT JOIN md_pb_papervehicle mp ON mp.vehicle_code = bs.vehicle_code
WHERE bs.point_type = #{pointType}
AND bs.point_location = #{location}
+ AND bs.is_used = '1'
AND 0 = (SELECT COUNT(*)
FROM sch_base_task t
WHERE (t.point_code1 = bs.point_code OR t.point_code2 = bs.point_code OR
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
index 296520e16..b1c9dced2 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml
@@ -133,6 +133,7 @@
#{item}
+ OR p1.qzzno IS NULL
)
SELECT
resource_name,
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
index e899a8eac..a088964a9 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
@@ -17,10 +17,10 @@ import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
-import org.nl.b_lms.sch.tasks.first_floor_area.ZxDjwTask;
-import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
+import org.nl.b_lms.sch.tasks.first_floor_area.*;
import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueueManager;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService;
+import org.nl.common.enums.ContainerLevelEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -36,6 +36,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
@@ -47,25 +48,39 @@ import java.util.stream.Collectors;
@Service("pdmBiSubpackagerelationService")
public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl implements IpdmBiSubpackagerelationService {
-
@Resource
private ZxqTask zxqTask;
@Resource
private ZxDjwTask zxDjwTask;
@Resource
- private OutBoxManageService outBoxManageService;
+ private ISysParamService iSysParamService;
+
@Resource
- private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
+ private DjqTask djqTask;
+ @Resource
+ private GzqTask gzqTask;
+
+ @Resource
+ private KzjhcwTask kzjhcwTask;
+
+ @Resource
+ private OutBoxManageService outBoxManageService;
+
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
+
+
+ @Resource
+ private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
+
+
@Resource
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
- @Resource
- private ISysParamService iSysParamService;
+
/**
* 查询数据分页
*
@@ -148,9 +163,191 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl待检
+ //mzToDj();
+
+ //待检->装箱
+ // djToZx();
+
+ //下发桁架任务1
+ //transferToPacking1();
+
+ //下发桁架任务2
+ //transferToPacking2();
+
+
return pdmBiSubpackagerelationList;
}
+ /**
+ * 满轴->待检
+ */
+ public void mzToDj() {
+ //子卷号
+ String containerName = "A1382211300106C8";
+ //起点
+ String pointCode1 = "ZXQ_01";
+ //查询库位信息
+ List bstIvtPackageinfoivtList = packageinfoivtService
+ .list(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ JSONObject toDjqTask = new JSONObject();
+ //获取子卷号
+ toDjqTask.put("vehicle_code", containerName);
+ List djqPointList = bstIvtPackageinfoivtList.stream()
+ .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
+ && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(djqPointList)) {
+ toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
+ toDjqTask.put("point_code1", pointCode1);
+ toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
+ djqTask.createTask(toDjqTask);
+ }
+
+
+ }
+
+ /**
+ * 待检->装箱
+ */
+ public void djToZx() {
+ //子卷号
+ String containerName = "";
+ //起点
+ String pointCode1 = "";
+ //木箱
+ String boxSn = "";
+ //装箱区点位
+ List zxqPointList = packageinfoivtService
+ .list(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
+ .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
+ //装箱区1
+ .eq(BstIvtPackageinfoivt::getBlock, "1")
+ .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ if (CollectionUtils.isNotEmpty(zxqPointList)) {
+ JSONObject jo = new JSONObject();
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
+ jo.put("vehicle_code", containerName);
+ jo.put("point_code1", pointCode1);
+ //木箱号
+ jo.put("vehicle_code2", boxSn);
+ jo.put("point_code2", zxqPointList.get(0).getPoint_code());
+ zxqTask.createTask(jo);
+ }
+
+ }
+
+ /**
+ * 空木箱出库
+ */
+ private void outBox1() {
+ JSONObject boxInfo = new JSONObject();
+ boxInfo.put("device_code", "ZXQ_1_1");
+ boxInfo.put("material_code", "MX61103");
+ //子卷个数
+ boxInfo.put("num", "1");
+ String boxSn = outBoxManageService.outBox(boxInfo);
+ if (StringUtils.isBlank(boxSn)) {
+ throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
+ }
+ }
+
+
+ private void transferToPacking1() {
+ JSONObject jo = new JSONObject();
+ //子卷号
+ String containerName = "A1652211050505A2";
+ //获取纸管长度
+ String frpDescription = "1300";
+ //获取木箱高度等级
+ String height = "730";
+ //起点
+ String point_code1 = "ZXQ_1_9";
+ //终点
+ String point_code2 = "ZXQ_1_1";
+ //托盘类型 1小托盘 2大托盘
+ String containerType = "2";
+ //木箱高度等级
+ String heightLevel = "";
+ String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
+ String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
+ if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) {
+ heightLevel = "1";
+ } else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) {
+ heightLevel = "2";
+ } else {
+ heightLevel = "3";
+ }
+ jo.put("point_code1", point_code1);
+ jo.put("point_code2", point_code2);
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
+ jo.put("vehicle_code", containerName);
+ jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
+ jo.put("is_send", "1");
+ JSONObject param = new JSONObject();
+ //木箱最大数量
+ param.put("maxNo", "1");
+ //木箱放入子卷数量
+ param.put("boxNo", "1");
+ //是否最后子卷
+ param.put("lastOne", "1");
+ //子卷号
+ param.put("barcode", containerName);
+ //子卷长度
+ param.put("len", frpDescription);
+ //木箱高度等级
+ param.put("heightLevel", heightLevel);
+ //托盘类型 1小托盘 2大托盘
+ param.put("containerType", containerType);
+ jo.put("request_param", param.toString());
+ zxDjwTask.createTask(jo);
+ }
+
+ /**
+ * 装箱区->装箱对接位桁架任务2
+ */
+
+ public void transferToPacking2() {
+ //下发装箱区->装箱对接位桁架任务
+ JSONObject jo = new JSONObject();
+ //子卷号
+ String containerName = "";
+ //获取纸管长度
+ String frpDescription = "";
+ //起点
+ String point_code1 = "ZXQ_1_8";
+ //终点
+ String point_code2 = "ZXQ_1_1";
+ jo.put("point_code1", point_code1);
+ jo.put("point_code2", point_code2);
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
+ jo.put("vehicle_code", containerName);
+ jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
+ jo.put("is_send", "1");
+ JSONObject param = new JSONObject();
+ //木箱最大数量
+ param.put("maxNo", "1");
+ //木箱放入子卷数量
+ param.put("boxNo", "1");
+ //是否最后子卷
+ param.put("lastOne", "1");
+ //子卷号
+ param.put("barcode", containerName);
+ //子卷长度
+ param.put("len", frpDescription);
+ //托盘类型 1小托盘 2大托盘
+ param.put("containerType", "1");
+ jo.put("request_param", param.toString());
+ zxDjwTask.createTask(jo);
+ }
/**
* 创建
@@ -214,90 +411,12 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList, List packagerelationList, String boxType) {
- JSONObject boxInfo = new JSONObject();
- boxInfo.put("device_code", "ZXQ_2_1");
- boxInfo.put("material_code", "MX6510");
- //String workorderId = "1597797877554483219";
- //子卷个数
- boxInfo.put("num", "1");
- String boxSn = outBoxManageService.outBox(boxInfo);
- if (StringUtils.isBlank(boxSn)) {
- throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
- }
- //更新子卷包装关系更新木箱号
- // UpdateWrapper updateWrapper1 = new UpdateWrapper<>();
- // updateWrapper1.set("package_box_sn", boxSn);
- // updateWrapper1.eq("workorder_id", workorderId);
- // pdmBiSubpackagerelationMapper.update(null, updateWrapper1);
- }
-
-
-
-
- private void transferToPacking1(List packagerelationList) {
- JSONObject jo = new JSONObject();
- //子卷号
- String containerName = "A1652211050505A2";
- //获取纸管长度
- String frpDescription = "1300";
- //获取木箱高度等级
- String height = "730";
- //起点
- String point_code1 = "ZXQ_1_9";
- //终点
- String point_code2 = "ZXQ_1_1";
- //托盘类型 1小托盘 2大托盘
- String containerType = "2";
- //木箱高度等级
- String heightLevel = "";
- String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
- String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
- if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) {
- heightLevel = "1";
- } else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) {
- heightLevel = "2";
- } else {
- heightLevel = "3";
- }
- jo.put("point_code1", point_code1);
- jo.put("point_code2", point_code2);
- jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
- jo.put("vehicle_code", containerName);
- jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
- jo.put("is_send", "1");
- JSONObject param = new JSONObject();
- //木箱最大数量
- param.put("maxNo", "1");
- //木箱放入子卷数量
- param.put("boxNo", "1");
- //是否最后子卷
- param.put("lastOne", "1");
- //子卷号
- param.put("barcode", containerName);
- //子卷长度
- param.put("len", frpDescription);
- //木箱高度等级
- param.put("heightLevel", heightLevel);
- //托盘类型 1小托盘 2大托盘
- param.put("containerType", containerType);
- jo.put("request_param", param.toString());
- zxDjwTask.createTask(jo);
- }
-
-
/**
* 空木箱出库
@@ -353,7 +472,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl装箱区agv任务
- agvTransfer(packagerelationList, deviceCode, boxSn);
+ //agvTransfer(packagerelationList, deviceCode, boxSn);
}
@@ -361,6 +480,46 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl装箱区agv任务
*/
private void agvTransfer(List packagerelationList, String deviceCode, String boxSn) {
+ //待检区点位
+ List djqPointList = packageinfoivtService
+ .list(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"))
+ .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ //todo 暂时改为合格品
+ .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("合格品"))
+ .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ Set containerNames = packagerelationList.stream()
+ .map(PdmBiSubpackagerelation::getContainer_name)
+ .collect(Collectors.toSet());
+ List djqPoints = djqPointList.stream()
+ .filter(djqPoint -> containerNames.contains(djqPoint.getContainer_name()))
+ .collect(Collectors.toList());
+ //下发agv任务
+ djqPoints.forEach(r -> {
+ //装箱区点位
+ List zxqPointList = packageinfoivtService
+ .list(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
+ .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
+ .eq(BstIvtPackageinfoivt::getBlock, deviceCode.substring(deviceCode.indexOf("_") + 1))
+ .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ JSONObject jo = new JSONObject();
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
+ jo.put("vehicle_code", r.getContainer_name());
+ jo.put("point_code1", r.getPoint_code());
+ //木箱号
+ jo.put("vehicle_code2", boxSn);
+ if (CollectionUtils.isEmpty(zxqPointList)) {
+ throw new BadRequestException("装箱区点位已满!");
+ }
+ jo.put("point_code2", zxqPointList.get(0).getPoint_code());
+ zxqTask.createTask(jo);
+ });
+ }
+
+
+ private void agvTransfer1(List packagerelationList, String deviceCode, String boxSn) {
//待检区点位
List djqPointList = packageinfoivtService
.list(new LambdaUpdateWrapper()
@@ -375,8 +534,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl containerNames.contains(djqPoint.getContainer_name()))
.collect(Collectors.toList());
//任务组id
- String groupId =deviceCode.substring(deviceCode.indexOf("_") + 1);
- List schBaseTaskList =new ArrayList<>();
+ String groupId = deviceCode.substring(deviceCode.indexOf("_") + 1);
+ List schBaseTaskList = new ArrayList<>();
//确定起点,安装装箱组标识加入任务队列
djqPoints.forEach(r -> {
JSONObject jo = new JSONObject();
@@ -389,58 +548,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl packagerelationList) {
- //下发装箱区->装箱对接位桁架任务
- JSONObject jo = new JSONObject();
- jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
- //todo 测试,装箱点位-1-1
- jo.put("point_code1", "ZXQ_1_8");
- //todo 测试,装箱对接位01
- jo.put("point_code2", "ZXQ_1_1");
- jo.put("vehicle_code", packagerelationList.get(0).getContainer_name());
- jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
- jo.put("is_send", "1");
- List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, packagerelationList.get(0).getContainer_name()));
- if (productionPlanList.isEmpty()) {
- throw new BadRequestException("该子卷暂无分切计划信息");
- }
- //获取纸管长度
- String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description();
- int maxNum = 0;
- for (String part : containerLength.split("\\|")) {
- String numStr = part.replaceAll("\\D+", "");
- if (!numStr.isEmpty()) {
- int num = Integer.parseInt(numStr);
- if (num > maxNum) {
- maxNum = num;
- }
- }
- }
- //todo 测试,扩展参数
- JSONObject param = new JSONObject();
- //木箱最大数量
- param.put("maxNo", "1");
- //木箱放入子卷数量
- param.put("boxNo", "1");
- //是否最后子卷
- param.put("lastOne", "1");
- //子卷号
- param.put("barcode", packagerelationList.get(0).getContainer_name());
- //子卷长度
- //param.put("len", maxNum);
- param.put("len", maxNum);
- //托盘类型 1小托盘 2大托盘
- param.put("containerType", "1");
- jo.put("request_param", param.toString());
- zxDjwTask.createTask(jo);
+ TaskQueueManager taskQueueManager = new TaskQueueManager();
+ taskQueueManager.addTasksToQueue(deviceCode, schBaseTaskList);
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java
index 7dcabe2df..4fbb0c6e5 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IbstIvtPackageinfoivtService.java
@@ -37,7 +37,7 @@ public interface IbstIvtPackageinfoivtService extends IService
*/
- List checkEndPointTask(String ivtType, String ivtStatus, String pointCode,String taskType);
+ List checkEndPointTask(String ivtType, String ivtStatus, String pointCode);
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java
index e1634621c..26fca6c38 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java
@@ -2,6 +2,7 @@ package org.nl.b_lms.sch.point.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
@@ -41,11 +42,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl checkEndPointTask(String ivtType, String ivtStatus, String pointCode,String taskType) {
- List bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper
+ public List checkEndPointTask(String ivtType, String ivtStatus, String pointCode) {
+ List packageinfoivtList = bstIvtPackageinfoivtMapper
.selectList(new LambdaUpdateWrapper()
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.eq(BstIvtPackageinfoivt::getPoint_status, ivtType)
.eq(BstIvtPackageinfoivt::getIvt_status, ivtStatus)
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
- if (pointCode.equals("1")) {
- List taskList = taskService.list(new LambdaUpdateWrapper()
- //起点未完成任务
- .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
- .eq(SchBaseTask::getTask_type, taskType)
- .and(
- r -> r.in(SchBaseTask::getPoint_code1, bstIvtPackageinfoivtList)
- ));
- return bstIvtPackageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code1).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList());
+ Set pointIds = packageinfoivtList.stream().map(BstIvtPackageinfoivt::getPoint_code).collect(Collectors.toSet());
+ if (CollectionUtils.isNotEmpty(pointIds)) {
+ if (pointCode.equals("1")) {
+ List taskList = taskService.list(new LambdaUpdateWrapper()
+ //起点未完成任务
+ .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
+ .and(
+ r -> r.in(SchBaseTask::getPoint_code1, pointIds)
+ ));
+ return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code1).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList());
+ } else {
+ List taskList = taskService.list(new LambdaUpdateWrapper()
+ //终点未完成任务
+ .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
+ .and(
+ r -> r.in(SchBaseTask::getPoint_code2, pointIds)
+ ));
+ return packageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList());
+ }
} else {
- List taskList = taskService.list(new LambdaUpdateWrapper()
- //终点未完成任务
- .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
- .eq(SchBaseTask::getTask_type, taskType)
- .and(
- r -> r.in(SchBaseTask::getPoint_code2, bstIvtPackageinfoivtList)
- ));
- return bstIvtPackageinfoivtList.stream().filter(r -> !taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList());
+ return null;
}
}
-
/**
* 创建
*
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
index 0ca08d931..5ca1c4d5e 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
@@ -57,6 +57,8 @@ public class TwoLashTask extends AbstractAcsTask {
/*
* 下发给ACS时需要特殊处理
*/
+ //任务表
+ WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
// 查询木箱信息
@@ -107,6 +109,11 @@ public class TwoLashTask extends AbstractAcsTask {
.interaction_json(interaction_json)
.build();
resultList.add(dto);
+
+ // 更新任务为下发
+ JSONObject paramMap = new JSONObject();
+ paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
+ wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
}
return resultList;
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java
index cef07db52..8b38d44e3 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java
@@ -5,18 +5,30 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.apache.commons.collections4.CollectionUtils;
+import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
+import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
+import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
+import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
+import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
+import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
+import static org.nl.common.enums.PackageInfoIvtEnum.IVT_STATUS;
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
/**
@@ -30,6 +42,9 @@ public class TwoOutBoxTask extends AbstractAcsTask {
*/
private final String THIS_CLASS = TwoOutBoxTask.class.getName();
+ @Autowired
+ private IbstIvtPackageinfoivtService packageinfoivtService;
+
@Override
public List addTask() {
/*
@@ -67,6 +82,10 @@ public class TwoOutBoxTask extends AbstractAcsTask {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
+
+ // 仓位表
+ WQLObject packageinfoivt = WQLObject.getWQLObject("bst_ivt_packageinfoivt");
+
// 任务表
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
@@ -89,11 +108,20 @@ public class TwoOutBoxTask extends AbstractAcsTask {
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
// 更新仓位
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
- jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
- jsonAttr.put("storagevehicle_code","");
+ jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
+ jsonAttr.put("storagevehicle_code", "");
attrTab.update(jsonAttr);
+ //更新木箱信息
+ JSONObject packageInfo = packageinfoivt.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
+ packageInfo.put("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
+ packageInfo.put("container_name",jsonTask.getString("vehicle_code"));
+ packageinfoivt.update(packageInfo);
+ //更新木箱信息
+ // packageinfoivtService.update(new LambdaUpdateWrapper()
+ // .eq(BstIvtPackageinfoivt::getPoint_code, jsonTask.getString("point_code2"))
+ // .set(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
+ // .set(BstIvtPackageinfoivt::getContainer_name, jsonTask.getString("vehicle_code")));
}
-
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
@@ -103,7 +131,7 @@ public class TwoOutBoxTask extends AbstractAcsTask {
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
// 解锁仓位
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
- jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
+ jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
attrTab.update(jsonAttr);
}
map.put("update_optid", SecurityUtils.getCurrentUserId());
@@ -112,6 +140,7 @@ public class TwoOutBoxTask extends AbstractAcsTask {
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
}
+
@Override
public void findStartPoint() {
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java
new file mode 100644
index 000000000..353b5f2b1
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java
@@ -0,0 +1,178 @@
+package org.nl.b_lms.sch.tasks;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
+import org.nl.b_lms.storage_manage.ios.service.iostorInv.impl.StIvtIostorinvOutServiceImpl;
+import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.LashManageServiceImpl;
+import org.nl.common.utils.SecurityUtils;
+import org.nl.modules.common.exception.BadRequestException;
+import org.nl.modules.wql.core.bean.WQLObject;
+import org.nl.modules.wql.util.SpringContextHolder;
+import org.nl.wms.sch.AcsTaskDto;
+import org.nl.wms.sch.manage.AbstractAcsTask;
+import org.nl.wms.sch.manage.TaskStatusEnum;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 堆垛机点位至行架点位任务(出库)
+ * Created by Lxy on 2021/12/22.
+ */
+@Service
+public class TwoOutHeapTask extends AbstractAcsTask {
+ private final String THIS_CLASS = TwoOutHeapTask.class.getName();
+
+ @Override
+ public List addTask() {
+ /*
+ * 下发给ACS时需要特殊处理
+ */
+ //任务表
+ WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
+
+ JSONArray taskArr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
+
+ ArrayList resultList = new ArrayList<>();
+
+ for (int i = 0; i < taskArr.size(); i++) {
+ JSONObject json = taskArr.getJSONObject(i);
+
+ char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
+ AcsTaskDto dto = AcsTaskDto.builder()
+ .ext_task_id(json.getString("task_id"))
+ .task_code(json.getString("task_code"))
+ .task_type(json.getString("acs_task_type"))
+ .start_device_code(json.getString("point_code1"))
+ .next_device_code(json.getString("point_code2"))
+ .vehicle_code(json.getString("vehicle_code"))
+ .interaction_json(json.getJSONObject("request_param"))
+ .priority(json.getString("priority"))
+ .class_type(json.getString("task_type"))
+ .dtl_type(String.valueOf(dtl_type))
+ .remark(json.getString("remark"))
+ .build();
+ resultList.add(dto);
+
+ // 更新任务为下发
+ JSONObject paramMap = new JSONObject();
+ paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
+ wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
+ }
+ return resultList;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void updateTaskStatus(JSONObject taskObj, String status) {
+ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
+
+ String task_id = taskObj.getString("task_id");
+ JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "' and task_status < '07'").uniqueResult(0);
+
+ if (ObjectUtil.isNotEmpty(jsonTask)) {
+ if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
+ // 任务为执行之后就不允许取消
+ if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
+ throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
+ }
+
+ // 更新删除字段
+ jsonTask.put("is_delete", "1");
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+ }
+
+ if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
+ // 更新任务状态为执行中
+ jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+
+ }
+
+ if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
+ // 更新任务完成
+ jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+
+ // 下发桁架任务:捆扎
+ JSONObject jsonParam = new JSONObject();
+ jsonParam.put("device_code",jsonTask.getString("point_code2"));
+ jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
+
+ LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
+ bean1.createLashTask(jsonParam);
+
+ }
+ }
+
+ }
+
+ @Override
+ public void findStartPoint() {
+
+ }
+
+ @Override
+ public void findNextPoint() {
+
+ }
+
+ @Override
+ public String createTask(JSONObject form) {
+ String currentUserId = SecurityUtils.getCurrentUserId();
+ String currentUsername = SecurityUtils.getCurrentUsername();
+
+ JSONObject json = new JSONObject();
+ json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
+ json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
+
+ json.put("task_type", form.getString("task_type"));
+ json.put("vehicle_code", form.getString("vehicle_code"));
+ json.put("vehicle_code2", form.getString("vehicle_code2"));
+ json.put("vehicle_type", form.getString("vehicle_type"));
+ json.put("task_name", form.getString("task_name"));
+ json.put("point_code1", form.getString("point_code1"));
+ json.put("point_code2", form.getString("point_code2"));
+ json.put("material_id", form.getString("material_id"));
+ json.put("task_group_id", form.getString("task_group_id"));
+ json.put("is_auto_issue", form.getString("is_auto_issue"));
+ json.put("table_fk", form.getString("table_fk"));
+ json.put("request_param", form.getString("request_param"));
+ json.put("sort_seq", form.getIntValue("sort_seq"));
+
+ json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
+ json.put("handle_class", THIS_CLASS);
+ json.put("create_id", currentUserId);
+ json.put("create_name", currentUsername);
+ json.put("create_time", DateUtil.now());
+ json.put("acs_task_type", "7");
+ WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
+
+ return json.getString("task_id");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void forceFinish(String task_id) {
+ JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
+ this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
+ }
+
+ @Override
+ public void cancel(String task_id) {
+ JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
+ this.updateTaskStatus(taskObj, IOSEnum.IS_NOTANDYES.code("否"));
+ }
+}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
index 21753695c..0b8419274 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -49,18 +50,44 @@ public class TwoOutTask extends AbstractAcsTask {
map.put("flag", "1");
map.put("handle_class", THIS_CLASS);
+ // 未下发的出库任务
List arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' order by sort_seq")
.getResultJSONArray(0).toJavaList(JSONObject.class);
- // 根据任务组分组
+ // 未下发的任务根据任务组进行分组
Map> groupMap = arr.stream()
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
+ // 需要下发的集合
List taskArr = new ArrayList<>();
+ // 用于判断下发几个任务组
+ int flag = 2;
+
+ // 判断当前正在执行或者下发的任务有几种规格:根据任务组进行判断,同一任务组代表同一木箱规格
+ List likeAllArr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status IN ('05','06') and is_delete = '0' " )
+ .getResultJSONArray(0).toJavaList(JSONObject.class);
+
+ Map> likeArr = likeAllArr.stream()
+ .collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
+
+ // 判断长度
+ if (likeArr.size() >= 2) {
+ return null;
+ }
+
+ if (likeArr.size() == 1) {
+ flag = 1;
+ }
+
+ // 组织需要下发的任务
for(String task_group_id : groupMap.keySet()) {
- taskArr = groupMap.get(task_group_id);
- continue;
+ taskArr.addAll(groupMap.get(task_group_id));
+ flag -= 1;
+
+ if (flag == 0) {
+ break;
+ }
}
ArrayList resultList = new ArrayList<>();
@@ -104,7 +131,7 @@ public class TwoOutTask extends AbstractAcsTask {
if (ObjectUtil.isNotEmpty(jsonTask)) {
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
// 任务为执行之后就不允许取消
- if (jsonTask.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
+ if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
}
@@ -139,13 +166,14 @@ public class TwoOutTask extends AbstractAcsTask {
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
.getResultJSONArray(0);
- // 下发桁架任务:捆扎
+ // 下发堆垛机至行架任务(2个行架位)
JSONObject jsonParam = new JSONObject();
jsonParam.put("device_code",jsonTask.getString("point_code2"));
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
+ jsonParam.put("vehicle_type",jsonTask.getString("vehicle_type"));
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
- bean1.createLashTask(jsonParam);
+ bean1.createHeapTask(jsonParam);
if (ObjectUtil.isEmpty(resultJSONArray)) {
this.immediateNotifyAcs(null);
@@ -177,6 +205,7 @@ public class TwoOutTask extends AbstractAcsTask {
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
+ json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_name", form.getString("task_name"));
json.put("point_code1", form.getString("point_code1"));
json.put("point_code2", form.getString("point_code2"));
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
index 0443bbe3d..489b475d9 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java
@@ -18,6 +18,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dto.SchBaseTaskVO;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
+import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueueManager;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
@@ -30,7 +31,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 4 目标待检区, 满轴缓存位 -> 待检区,agv任务
@@ -101,7 +105,7 @@ public class DjqTask extends AbstractAcsTask {
packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3更新库存记录
//todo 暂时改为质检合格品
- packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
+ packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//4.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
List taskList = taskService.list(new LambdaQueryWrapper()
//确定起点未下发
@@ -121,6 +125,9 @@ public class DjqTask extends AbstractAcsTask {
//任务下发
mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
}
+ //5搬运装箱区
+ //sendDjqToZxq(schBaseTask);
+
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
@@ -185,7 +192,20 @@ public class DjqTask extends AbstractAcsTask {
return task.getTask_id();
}
-
+ public void sendDjqToZxq(SchBaseTask schBaseTask) {
+ //装箱区有空位
+ List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2");
+ if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
+ Map> ivtList = bstIvtPackageinfoivtList.stream()
+ .collect(Collectors.groupingBy(
+ BstIvtPackageinfoivt::getPoint_code,
+ LinkedHashMap::new,
+ Collectors.mapping(BstIvtPackageinfoivt::getPoint_name, Collectors.toList())
+ ));
+ TaskQueueManager taskQueueManager =new TaskQueueManager();
+ taskQueueManager.processTasks(ivtList);
+ }
+ }
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper()
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java
index 862c84cb5..d438daa5a 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java
@@ -28,6 +28,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@@ -142,9 +143,9 @@ public class KzjhcwTask extends AbstractAcsTask {
throw new BadRequestException("业务类型不能为空");
}
String vehicleCode = form.getString("vehicle_code");
- if (StrUtil.isBlank(vehicleCode)) {
- throw new BadRequestException("载具号不能为空");
- }
+ // if (StrUtil.isBlank(vehicleCode)) {
+ // throw new BadRequestException("载具号不能为空");
+ // }
String pointCode1 = form.getString("point_code1");
if (StrUtil.isBlank(pointCode1)) {
throw new BadRequestException("起点不能为空");
@@ -214,9 +215,9 @@ public class KzjhcwTask extends AbstractAcsTask {
/**
* 装箱区->空载具缓存位补空
*/
- public void toKzjHcw(String pointCode) {
+ public void toKzjHcw1(String pointCode) {
//存在空载具缓存位无空载具的点位
- List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区或管制区->空载具缓存位)"));
+ List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2");
String pointCode1 = null;
JSONObject toKzjHcwTask = new JSONObject();
if (StringUtils.isNotBlank(pointCode)) {
@@ -251,4 +252,33 @@ public class KzjhcwTask extends AbstractAcsTask {
}
}
}
+
+ public void toKzjHcw(String pointCode) {
+ //存在空载具缓存位无空载具的点位
+ List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2");
+ String pointCode1 = null;
+ JSONObject toKzjHcwTask = new JSONObject();
+ if (StringUtils.isNotBlank(pointCode)) {
+ pointCode1 = pointCode;
+ } else {
+ //查询装箱区有空载具
+ List zxqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), "1");
+ //装箱区有空载具
+ if (CollectionUtils.isNotEmpty(zxqPointList)) {
+ pointCode1 = zxqPointList.get(0).getPoint_code();
+ } else {
+ //待检区有空载具
+ List djqPointList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), "1");
+ pointCode1 = djqPointList.get(0).getPoint_code();
+ }
+ }
+ //去装箱区搬运空载具
+ if (CollectionUtils.isNotEmpty(kzjIvtList) && pointCode1 != null) {
+ toKzjHcwTask.put("point_code1", pointCode1);
+ //送到到任意空载具缓存位
+ toKzjHcwTask.put("point_code2", kzjIvtList.get(0).getPoint_code());
+ toKzjHcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区或管制区->空载具缓存位)"));
+ this.createTask(toKzjHcwTask);
+ }
+ }
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
index d178935da..0c5e6cfe7 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java
@@ -75,6 +75,7 @@ public class MzhcwTask extends AbstractAcsTask {
private SsxDjwTask ssxDjwTask;
+
@Override
public List addTask() {
ArrayList resultList = new ArrayList<>();
@@ -211,6 +212,36 @@ public class MzhcwTask extends AbstractAcsTask {
}
private void createTaskToDjq(SchBaseTask schBaseTask) {
+ if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
+ throw new BadRequestException("子卷号不能为空!");
+ }
+ PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper()
+ .eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
+ if (containerInfo == null) {
+ throw new BadRequestException("找不到子卷信息!");
+ }
+ //查询库位信息
+ List bstIvtPackageinfoivtList = packageinfoivtService
+ .list(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ JSONObject toDjqTask = new JSONObject();
+ //获取子卷号
+ toDjqTask.put("vehicle_code", schBaseTask.getVehicle_code());
+ List djqPointList = bstIvtPackageinfoivtList.stream()
+ .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
+ && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(djqPointList)) {
+ throw new BadRequestException("待检区暂无空余库位!");
+ }
+ toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
+ toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
+ toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
+ djqTask.createTask(toDjqTask);
+ }
+
+
+ private void createTaskToDjq1(SchBaseTask schBaseTask) {
if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
throw new BadRequestException("子卷号不能为空!");
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
index 6e5952590..52646a7aa 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java
@@ -136,7 +136,7 @@ public class ZxDjwTask extends AbstractAcsTask {
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
}
//创建装箱区->空载具缓存位补空任务
- kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
+ //kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
index 746da5acc..c9cd97335 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java
@@ -183,82 +183,7 @@ public class ZxqTask extends AbstractAcsTask {
//更新库存记录
packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务,否,什么都不做
- PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
- .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
- if (pdmBiSubpackagerelation != null) {
- //查询目标点位信息
- BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2()));
- //查询装箱对接位的木箱号和区域与子卷对应的木箱号与区域是否匹配
- BstIvtPackageinfoivt zxdjwPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper()
- .eq(BstIvtPackageinfoivt::getContainer_name, pdmBiSubpackagerelation.getPackage_box_sn()).eq(BstIvtPackageinfoivt::getBlock, zxqPoint.getBlock()));
- if (zxdjwPoint != null) {
- //创建搬运任务到装箱位
- JSONObject jo = new JSONObject();
- jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
- jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
- jo.put("point_code1", schBaseTask.getPoint_code2());
- jo.put("point_code2", zxdjwPoint.getPoint_code());
- jo.put("vehicle_code", schBaseTask.getVehicle_code());
- jo.put("is_send", "1");
- List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
- if (productionPlanList.isEmpty()) {
- throw new BadRequestException("该子卷暂无分切计划信息");
- }
- //获取纸管长度
- String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description();
- int maxNum = 0;
- for (String part : containerLength.split("\\|")) {
- String numStr = part.replaceAll("\\D+", "");
- if (!numStr.isEmpty()) {
- int num = Integer.parseInt(numStr);
- if (num > maxNum) {
- maxNum = num;
- }
- }
- }
- //扩展参数
- JSONObject param = new JSONObject();
- //获取木箱信息,未包装的木箱
- BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).eq(BstIvtBoxinfo::getIs_packing, null));
- if (bstIvtBoxinfo == null) {
- throw new BadRequestException("找不到木箱信息!");
- }
- //获取木箱高度等级
- String height = "";
- String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
- String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
- String box_high = bstIvtBoxinfo.getBox_high();
- if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
- height = "1";
- } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
- height = "2";
- } else {
- height = "3";
- }
- //木箱高度等级
- param.put("heightLevel", height);
- //木箱最大数量
- param.put("maxNo", bstIvtBoxinfo.getNum());
- //托盘类型 1小托盘 2大托盘
- param.put("containerType", bstIvtBoxinfo.getVehicle_type());
- //查询是否为最后一个子卷,相同木箱号且状态为生成
- List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
- if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
- //最后子卷
- param.put("lastOne", "1");
- } else {
- param.put("lastOne", "0");
- }
- //木箱放入子卷数量
- param.put("boxNo", pdmBiSubpackagerelation.getQuanlity_in_box());
- //子卷号
- param.put("barcode", schBaseTask.getVehicle_code());
- //子卷长度
- param.put("len", maxNum);
- jo.put("request_param", param.toString());
- zxDjwTask.createTask(jo);
- }
- }
+ //zxqToZxw(schBaseTask);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
@@ -275,6 +200,85 @@ public class ZxqTask extends AbstractAcsTask {
}
+ private void zxqToZxw(SchBaseTask schBaseTask) {
+ PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
+ .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
+ if (pdmBiSubpackagerelation != null) {
+ //查询目标点位信息
+ BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2()));
+ //查询装箱对接位的木箱号和区域与子卷对应的木箱号与区域是否匹配
+ BstIvtPackageinfoivt zxdjwPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper()
+ .eq(BstIvtPackageinfoivt::getContainer_name, pdmBiSubpackagerelation.getPackage_box_sn()).eq(BstIvtPackageinfoivt::getBlock, zxqPoint.getBlock()));
+ if (zxdjwPoint != null) {
+ //创建搬运任务到装箱位
+ JSONObject jo = new JSONObject();
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
+ jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
+ jo.put("point_code1", schBaseTask.getPoint_code2());
+ jo.put("point_code2", zxdjwPoint.getPoint_code());
+ jo.put("vehicle_code", schBaseTask.getVehicle_code());
+ jo.put("is_send", "1");
+ List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
+ if (productionPlanList.isEmpty()) {
+ throw new BadRequestException("该子卷暂无分切计划信息");
+ }
+ //获取纸管长度
+ String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description();
+ int maxNum = 0;
+ for (String part : containerLength.split("\\|")) {
+ String numStr = part.replaceAll("\\D+", "");
+ if (!numStr.isEmpty()) {
+ int num = Integer.parseInt(numStr);
+ if (num > maxNum) {
+ maxNum = num;
+ }
+ }
+ }
+ //扩展参数
+ JSONObject param = new JSONObject();
+ //获取木箱信息,未包装的木箱
+ BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).eq(BstIvtBoxinfo::getIs_packing, null));
+ if (bstIvtBoxinfo == null) {
+ throw new BadRequestException("找不到木箱信息!");
+ }
+ //获取木箱高度等级
+ String height = "";
+ String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
+ String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
+ String box_high = bstIvtBoxinfo.getBox_high();
+ if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
+ height = "1";
+ } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
+ height = "2";
+ } else {
+ height = "3";
+ }
+ //木箱高度等级
+ param.put("heightLevel", height);
+ //木箱最大数量
+ param.put("maxNo", bstIvtBoxinfo.getNum());
+ //托盘类型 1小托盘 2大托盘
+ param.put("containerType", bstIvtBoxinfo.getVehicle_type());
+ //查询是否为最后一个子卷,相同木箱号且状态为生成
+ List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
+ if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
+ //最后子卷
+ param.put("lastOne", "1");
+ } else {
+ param.put("lastOne", "0");
+ }
+ //木箱放入子卷数量
+ param.put("boxNo", pdmBiSubpackagerelation.getQuanlity_in_box());
+ //子卷号
+ param.put("barcode", schBaseTask.getVehicle_code());
+ //子卷长度
+ param.put("len", maxNum);
+ jo.put("request_param", param.toString());
+ zxDjwTask.createTask(jo);
+ }
+ }
+ }
+
@Override
public String createTask(JSONObject form) {
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java
index e7786b6c5..e40c80729 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendMzToDjq.java
@@ -1,6 +1,7 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
@@ -16,6 +17,7 @@ import java.util.stream.Collectors;
@Slf4j
@Component
+@RequiredArgsConstructor
public class AutoSendMzToDjq {
@Resource
@@ -26,24 +28,20 @@ public class AutoSendMzToDjq {
//满轴->待检区agv自动搬运任务
public void run() {
- this.sendMzqToDjq();
+ this.sendMzqToDjq();
}
void sendMzqToDjq() {
JSONObject toDjqTask =new JSONObject();
//满轴有子卷且没有未完成任务
- List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
- if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
- List djqPointList = bstIvtPackageinfoivtList.stream()
- .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
- && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
- if (CollectionUtils.isNotEmpty(djqPointList)) {
+ List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1");
+ List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2");
+ if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)&&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", djqPointList.get(0).getPoint_code());
+ toDjqTask.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());
djqTask.createTask(toDjqTask);
- }
}
}
// void sendMzqToDjq() {
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java
index 692ae9c04..5b84dc70c 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToZxq.java
@@ -1,9 +1,13 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
+import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
+import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
+import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.springframework.stereotype.Component;
@@ -17,10 +21,13 @@ import java.util.stream.Collectors;
@Slf4j
@Component
+@RequiredArgsConstructor
public class AutoSendToZxq {
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
+ @Resource
+ private ZxqTask zxqTask;
//待检区->装箱区agv自动搬运任务
public void run() {
@@ -28,8 +35,23 @@ public class AutoSendToZxq {
}
void sendDjqToZxq() {
+ JSONObject toDjqTask =new JSONObject();
+ //待检区有子卷且没有未完成任务
+ List djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1");
+ List zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), "2");
+ if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)&&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);
+ }
+ }
+
+
+ void sendDjqToZxq1() {
//装箱区有空位
- List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",PackageInfoIvtEnum.IVT_STATUS.code("空"));
+ List bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2");
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
Map> ivtList = bstIvtPackageinfoivtList.stream()
.collect(Collectors.groupingBy(
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java
index b70b7f6a1..c889ba9ea 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java
@@ -27,7 +27,7 @@ public class AutoSendVehicleToDjq {
//装箱区->待检区送空agv自动搬运任务
public void run() {
- this.sendKzjHcwEmptyVehicle();
+ //this.sendKzjHcwEmptyVehicle();
}
@@ -36,12 +36,12 @@ public class AutoSendVehicleToDjq {
String pointCode1=null;
String pointCode2;
//待检区有空位
- List djqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",PackageInfoIvtEnum.TASK_TYPE.code("送空(装箱区->待检区或管制区)"));
+ List djqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2");
if (CollectionUtils.isNotEmpty(djqList)) {
pointCode2=djqList.get(0).getPoint_code();
}else{
//管制区有空位
- List zxqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2",PackageInfoIvtEnum.TASK_TYPE.code("送空(装箱区->待检区或管制区)"));
+ List zxqList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空"),"2");
pointCode2=zxqList.get(0).getPoint_code();
}
//查询装箱区有空载具
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKz.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKz.java
index a6d66f08e..21284bcda 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKz.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToKz.java
@@ -1,5 +1,6 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.tasks.first_floor_area.KzjhcwTask;
import org.springframework.stereotype.Component;
@@ -9,6 +10,7 @@ import javax.annotation.Resource;
@Slf4j
@Component
+@RequiredArgsConstructor
public class AutoSendVehicleToKz {
@Resource
@@ -19,7 +21,7 @@ public class AutoSendVehicleToKz {
this.sendToKzjHcw();
}
- //待检区->空轴缓存位送空agv自动搬运任务
+ //待检区->空轴缓存位补空agv自动搬运任务
void sendToKzjHcw() {
kzjhcwTask.toKzjHcw("");
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java
new file mode 100644
index 000000000..0096ba319
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java
@@ -0,0 +1,206 @@
+package org.nl.b_lms.sch.tasks.first_floor_area.auto;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
+import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
+import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
+import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
+import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
+import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
+import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
+import org.nl.b_lms.sch.task.service.IschBaseTaskService;
+import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
+import org.nl.b_lms.sch.tasks.first_floor_area.ZxDjwTask;
+import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
+import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
+import org.nl.common.enums.PackageInfoIvtEnum;
+import org.nl.modules.common.exception.BadRequestException;
+import org.nl.system.service.param.ISysParamService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class AutoSendZxToDjw {
+
+
+ @Resource
+ private ZxDjwTask zxDjwTask;
+
+
+ @Resource
+ private IbstIvtPackageinfoivtService packageinfoivtService;
+ @Resource
+ private IpdmBiSubpackagerelationService subpackageRelationService;
+
+
+ @Resource
+ private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
+ @Resource
+ private BstIvtBoxinfoMapper bstIvtBoxinfoMapper;
+
+ @Resource
+ private ISysParamService iSysParamService;
+
+ //满轴->待检区agv自动搬运任务
+ public void run() {
+ this.sendZxToDjw();
+ }
+
+ void sendZxToDjw() {
+ List zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), "1");
+ List zxwPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), "2");
+ if (CollectionUtils.isNotEmpty(zxqPackageinfoivtList) && CollectionUtils.isNotEmpty(zxwPackageinfoivtList)) {
+ //3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务,否,什么都不做
+ PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
+ .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, zxwPackageinfoivtList.get(0).getContainer_name()), false);
+ if (pdmBiSubpackagerelation == null) {
+ throw new BadRequestException("装箱位木箱号无对应子卷包装关系的木箱号!");
+ }
+ String containerName = pdmBiSubpackagerelation.getContainer_name();
+ String boxNo = zxwPackageinfoivtList.get(0).getContainer_name();
+ List zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(zxqPoint)) {
+ throw new BadRequestException("装箱区暂无该子卷信息");
+ }
+ List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, containerName));
+ if (productionPlanList.isEmpty()) {
+ throw new BadRequestException("该子卷暂无分切计划信息");
+ }
+ //创建搬运任务到装箱位
+ JSONObject jo = new JSONObject();
+ jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
+ jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
+ jo.put("point_code1", zxqPoint.get(0).getPoint_code());
+ jo.put("point_code2", zxwPackageinfoivtList.get(0).getPoint_code());
+ jo.put("vehicle_code", pdmBiSubpackagerelation.getContainer_name());
+ jo.put("is_send", "1");
+ //获取纸管长度
+ String containerLength = productionPlanList.get(0).getPaper_tube_or_FRP().equals("1") ? productionPlanList.get(0).getPaper_tube_description() : productionPlanList.get(0).getFRP_description();
+ int maxNum = 0;
+ for (String part : containerLength.split("\\|")) {
+ String numStr = part.replaceAll("\\D+", "");
+ if (!numStr.isEmpty()) {
+ int num = Integer.parseInt(numStr);
+ if (num > maxNum) {
+ maxNum = num;
+ }
+ }
+ }
+ //扩展参数
+ JSONObject param = new JSONObject();
+ //获取木箱信息,未包装的木箱
+ // BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no,boxNo).eq(BstIvtBoxinfo::getIs_packing, null));
+ BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, boxNo));
+ if (bstIvtBoxinfo == null) {
+ throw new BadRequestException("找不到木箱信息!");
+ }
+ //获取木箱高度等级
+ String height = "";
+ String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
+ String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
+ String box_high = bstIvtBoxinfo.getBox_high();
+ if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
+ height = "1";
+ } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
+ height = "2";
+ } else {
+ height = "3";
+ }
+ //木箱高度等级
+ param.put("heightLevel", height);
+ //木箱最大数量
+ param.put("maxNo", bstIvtBoxinfo.getNum());
+ //托盘类型 1小托盘 2大托盘
+ param.put("containerType", bstIvtBoxinfo.getVehicle_type());
+ //查询是否为最后一个子卷,相同木箱号且状态为生成
+ // List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0"));
+ // if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(containerName)) {
+ // //最后子卷
+ // param.put("lastOne", "1");
+ // } else {
+ // param.put("lastOne", "0");
+ // }
+ param.put("lastOne", "1");
+ //木箱放入子卷数量
+ //param.put("boxNo", pdmBiSubpackagerelation.getQuanlity_in_box());
+ param.put("boxNo", "1");
+ //子卷号
+ param.put("barcode", containerName);
+ //子卷长度
+ param.put("len", maxNum);
+ jo.put("request_param", param.toString());
+ zxDjwTask.createTask(jo);
+ }
+
+ }
+
+
+ // void sendMzqToDjq() {
+ // //满轴位有子卷
+ // List bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper
+ // .selectList(new LambdaUpdateWrapper()
+ // .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
+ // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
+ // .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
+ // .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
+ // if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
+ // String containerName = bstIvtPackageinfoivtList.get(0).getContainer_name();
+ // String pointCode = bstIvtPackageinfoivtList.get(0).getPoint_code();
+ // //查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区
+ // PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper()
+ // .eq(PdmBiSlittingproductionplan::getContainer_name, containerName));
+ // if (containerInfo == null) {
+ // throw new BadRequestException("找不到子卷信息!");
+ // }
+ // //子卷等级
+ // String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel();
+ // String finalLevel = level;
+ // if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(finalLevel))) {
+ // throw new BadRequestException("非法的子卷等级!");
+ // }
+ // level = "1";
+ // JSONObject toDjqTask = new JSONObject();
+ // toDjqTask.put("vehicle_code", containerName);
+ // // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
+ // String finalLevel1 = level;
+ // if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel1))) {
+ // List djqPointList = bstIvtPackageinfoivtList.stream()
+ // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
+ // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
+ // if (CollectionUtils.isEmpty(djqPointList)) {
+ // throw new BadRequestException("待检区暂无空余库位!");
+ // }
+ // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
+ // toDjqTask.put("point_code1", pointCode);
+ // toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
+ // djqTask.createTask(toDjqTask);
+ // } else {
+ // String finalLevel2 = level;
+ // if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel2))) {
+ // List gkqPointList = bstIvtPackageinfoivtList.stream()
+ // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
+ // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
+ // if (CollectionUtils.isEmpty(gkqPointList)) {
+ // throw new BadRequestException("管控区暂无空余库位!");
+ // }
+ // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
+ // toDjqTask.put("point_code1", pointCode);
+ // toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
+ // gzqTask.createTask(toDjqTask);
+ // }
+ // }
+ // }
+
+
+}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml
index 92316591c..e1c36a0fa 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml
@@ -10,8 +10,8 @@
`bst_ivt_cutpointivt` bct
LEFT JOIN pdm_bi_slittingproductionplan p ON p.qzzno = bct.qzz_no1 OR p.qzzno = bct.qzz_no2
WHERE bct.point_status = '2' AND p.parent_container_name = #{parent_container_name} AND p.split_group = #{split_group}
- AND (LENGTH(bic.qzz_no1) = 0 OR LENGTH(bic.qzz_no2) = 0)
- AND (LENGTH(bic.qzz_no1) ]]> 0 OR LENGTH(bic.qzz_no2) ]]> 0)
+ AND (LENGTH(bct.qzz_no1) = 0 OR LENGTH(bct.qzz_no2) = 0)
+ AND (LENGTH(bct.qzz_no1) ]]> 0 OR LENGTH(bct.qzz_no2) ]]> 0)
AND bct.is_used = '1'
LIMIT 1
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
index 3eeec9c40..6101f8361 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
@@ -136,7 +136,7 @@ public class SlitterServiceImpl implements SlitterService {
: "");
con.put("number", ObjectUtil.isNotEmpty(point.getTube_code1()) && ObjectUtil.isNotEmpty(point.getTube_code2())
? "2" : "1");
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "任务请求成功!");
return res;
}
@@ -155,7 +155,7 @@ public class SlitterServiceImpl implements SlitterService {
TaskUtils.updateOptMessageByBShaftPoint(CBJ);
shafttubeivtService.updateById(CBJ);
}
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
return res;
}
@@ -184,7 +184,7 @@ public class SlitterServiceImpl implements SlitterService {
r.put("device_code", deviceCode);
SlitterTaskUtil.putCurrentPaperSpec(r, plans);
r.put("pullCount", plans.size());
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
return res;
}
@@ -295,7 +295,7 @@ public class SlitterServiceImpl implements SlitterService {
lockPoint.unlock();
}
}
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
return res;
}
@@ -332,7 +332,7 @@ public class SlitterServiceImpl implements SlitterService {
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
param.put("is_bushing", "0");
trussCallShaftCacheTask.createTask(param);
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
return res;
}
@@ -639,7 +639,7 @@ public class SlitterServiceImpl implements SlitterService {
taskParam.put("point_code2", one.getPoint_code());
taskParam.put("material_code", plan.getContainer_name());
taskParam.put("to_is_labeling", "0");
- res.put("code", HttpStatus.HTTP_OK);
+ res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功!");
res.put("data", taskParam);
return res;
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
index 147fa5ae2..4afc09e93 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
@@ -96,8 +96,12 @@ public enum IOSEnum {
// 区域
PRODUCT_AREA(MapOf.of("BLK", "BLK")),
- // 出库口点位
- OUT_POINT(MapOf.of("出库口1", "CK2026","出库口2", "CK2027")),
+ // 出库堆垛机点位
+ OUT_POINT(MapOf.of("1","CK2036", "2","CK2038", "3","CK2040", "4","CK2042" ,"5","CK2044",
+ "6","CK2046", "7","7", "8","8", "9","9", "10","10")),
+
+ // 行架点位
+ OUT_HANGER(MapOf.of("行架位1", "CK2026","行架位2", "CK2027")),
//acs申请任务
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","退货入库","6","贴标","1","捆扎","2")),
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
index d3f278381..350c1a030 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
@@ -1221,32 +1221,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl i) {
- end_device_code = IOSEnum.OUT_POINT.code("出库口1");
- } else {
- end_device_code = IOSEnum.OUT_POINT.code("出库口2");
- }
- }
-
JSONObject json = taskMangeList.get(i);
+
+ // 确定起点
start_device_code = json.getString("struct_code");
+ // 确定终点: 根据仓位所在排确定终点
+ String end_device_code = IsEndCode(json);
+
// 过滤此仓位的分配明细
List disDaoList = disLikeList.stream()
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
@@ -1292,6 +1276,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
@@ -1329,6 +1318,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl pcsnList = Arrays.asList(material_barcode.split(","));
-
-
// 查询子卷包装关系
- List subList = subTab.query("container_name ='A1652211050505A2' and status in ('0','1')")
+// List subList = subTab.query("container_name ='A1262210272905A1' and status in ('0','1')")
+// .getResultJSONArray(0).toJavaList(JSONObject.class);
+ List subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
-
if (ObjectUtil.isEmpty(subList)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
index 9fc3b88b1..3a8c61959 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
@@ -11,6 +11,7 @@ import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.tasks.TwoLashTask;
+import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
@@ -20,13 +21,14 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManage
import org.nl.common.utils.IdUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
+import org.nl.modules.wql.util.SpringContextHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -189,6 +191,42 @@ public class LashManageServiceImpl implements LashManageService {
twoLashTask.immediateNotifyAcs(null);
}
+ @Override
+ public void createHeapTask(JSONObject whereJson) {
+ // 比较两行架点位的任务个数
+ List executeArr = WQLObject.getWQLObject("SCH_BASE_Task")
+ .query("handle_class = '" + TwoOutHeapTask.class.getName() + "' and task_status IN ('05','06') and is_delete = '0' " )
+ .getResultJSONArray(0).toJavaList(JSONObject.class);
+
+ // 根据终点点位进行分组
+ Map> groupPointMap = executeArr.stream()
+ .collect(Collectors.groupingBy(row -> row.getString("point_code2")));
+
+ // 终点
+ String next_device_code = IOSEnum.OUT_HANGER.code("行架位1");
+
+ List heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
+ List heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>());
+
+
+ if (heapOne.size() > heapTwo.size()) {
+ next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
+ }
+
+ // 创建任务并下发
+ JSONObject jsonTaskParam = new JSONObject();
+ jsonTaskParam.put("task_type", "010720");
+ jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
+ jsonTaskParam.put("point_code1", whereJson.getString("device_code"));
+ jsonTaskParam.put("point_code2", next_device_code);
+ jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
+ jsonTaskParam.put("request_param", whereJson);
+
+ TwoOutHeapTask bean = SpringContextHolder.getBean(TwoOutHeapTask.class);
+ bean.createTask(jsonTaskParam);
+ bean.immediateNotifyAcs(null);
+ }
+
@Override
public JSONObject applyTab(JSONObject whereJson) {
// 载具扩展属性表
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
index 87c4c8676..0d86dce68 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
@@ -13,7 +13,7 @@ import com.alibaba.fastjson.JSONObject;
public interface LashManageService {
/**
- * 创建桁架任务
+ * 创建 桁架-捆扎位任务
* @param whereJson {
* device_code:起点
* vehicle_code: 箱号
@@ -22,6 +22,17 @@ public interface LashManageService {
*/
void createLashTask(JSONObject whereJson);
+ /**
+ * 创建 堆垛机点位-桁架任务
+ * @param whereJson {
+ * device_code:起点
+ * vehicle_code: 箱号
+ * vehicle_type: 载具类型
+ *
+ * }
+ */
+ void createHeapTask(JSONObject whereJson);
+
/**
* 申请是否贴标
* @param whereJson {
diff --git a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java
index b269f2cf1..ff766ab84 100644
--- a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java
+++ b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java
@@ -18,7 +18,7 @@ import java.util.Map;
@Getter
public enum PackageInfoIvtEnum {
//点位类型
- POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱区", "5", "装箱位", "6")),
+ POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱位", "5","装箱区", "6")),
diff --git a/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java b/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java
index 33fbc159e..fce25bd45 100644
--- a/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java
+++ b/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java
@@ -31,9 +31,9 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
- @Bean
- public ServerEndpointExporter serverEndpointExporter() {
- return new ServerEndpointExporter();
- }
+// @Bean
+// public ServerEndpointExporter serverEndpointExporter() {
+// return new ServerEndpointExporter();
+// }
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls
index bb9305203..14d6c3a84 100644
Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls differ
diff --git a/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue b/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue
index f2417fa47..e95b25516 100644
--- a/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue
+++ b/lms/nladmin-ui/src/views/wms/pdm/sub/MaterDialog.vue
@@ -66,7 +66,7 @@ export default {
url: 'api/Materialbase',
idField: 'material_id',
sort: 'material_id,desc',
- query: { search: '', material_id: '' },
+ query: { search: '木箱', material_id: '' },
crudMethod: { ...crudMaterattr }
})
},
diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
index 341d5663a..4cc0cdfcd 100644
--- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
+++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
@@ -163,7 +163,7 @@
disabled
/>
-
+
- 是否异常出库
+ 是否异常出库
不发超期
@@ -220,6 +220,7 @@
type="warning"
icon="el-icon-check"
size="mini"
+ v-if="mstrow.stor_id !== '1582991156504039455'"
:disabled="button4"
@click="oneSetPoint2"
>
@@ -233,6 +234,7 @@
type="warning"
icon="el-icon-check"
:disabled="button5"
+ v-if="mstrow.stor_id !== '1582991156504039455'"
size="mini"
@click="allSetPoint"
>