Merge commit '9186ce137f2a67a4d8d7bb1cbfcc40cf69729d22' into master_merge
This commit is contained in:
@@ -54,7 +54,7 @@
|
|||||||
FROM
|
FROM
|
||||||
pdm_bi_subpackagerelation
|
pdm_bi_subpackagerelation
|
||||||
WHERE
|
WHERE
|
||||||
container_name IN (SELECT container_name FROM bst_ivt_packageinfoivt WHERE point_status = '3')
|
container_name IN (SELECT container_name FROM bst_ivt_packageinfoivt WHERE point_status = '6')
|
||||||
<if test="sale_order_name != null and sale_order_name != ''">
|
<if test="sale_order_name != null and sale_order_name != ''">
|
||||||
AND sale_order_name LIKE CONCAT('%', #{sale_order_name}, '%')
|
AND sale_order_name LIKE CONCAT('%', #{sale_order_name}, '%')
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.b_lms.pdm.subpackagerelation.service.impl;
|
package org.nl.b_lms.pdm.subpackagerelation.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -26,6 +27,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.system.service.param.ISysParamService;
|
import org.nl.system.service.param.ISysParamService;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
@@ -34,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -55,7 +60,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
private ISysParamService iSysParamService;
|
private ISysParamService iSysParamService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DjqTask djqTask;
|
private DjqTask djqTask;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -84,6 +88,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
private TaskQueueManager taskQueueManager;
|
private TaskQueueManager taskQueueManager;
|
||||||
@Resource
|
@Resource
|
||||||
private TaskQueue taskQueue;
|
private TaskQueue taskQueue;
|
||||||
|
@Resource
|
||||||
|
@Qualifier("threadPoolExecutor")
|
||||||
|
private ThreadPoolExecutor pool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询数据分页
|
* 查询数据分页
|
||||||
@@ -101,11 +108,10 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
@Override
|
@Override
|
||||||
public IPage<PdmBiSubpackagerelation> queryContainerization(Map whereJson, PageQuery pageable) {
|
public IPage<PdmBiSubpackagerelation> queryContainerization(Map whereJson, PageQuery pageable) {
|
||||||
Page<PdmBiSubpackagerelation> pageObject = new Page<>(pageable.getPage(), pageable.getSize());
|
Page<PdmBiSubpackagerelation> pageObject = new Page<>(pageable.getPage(), pageable.getSize());
|
||||||
return pdmBiSubpackagerelationMapper.selectGroupedSubPackageRelation(pageObject,(String)whereJson.get("sale_order_name"),(String)whereJson.get("customer_name"),(String)whereJson.get("customer_description"),(String)whereJson.get("status"));
|
return pdmBiSubpackagerelationMapper.selectGroupedSubPackageRelation(pageObject, (String) whereJson.get("sale_order_name"), (String) whereJson.get("customer_name"), (String) whereJson.get("customer_description"), (String) whereJson.get("status"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单装箱信息
|
* 查询订单装箱信息
|
||||||
*
|
*
|
||||||
@@ -140,10 +146,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据订单号查询子卷信息
|
* 根据订单号查询子卷信息
|
||||||
*
|
*
|
||||||
@@ -402,18 +404,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
public void updateEntityList(JSONObject whereJson) {
|
public void updateEntityList(JSONObject whereJson) {
|
||||||
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
|
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
|
||||||
List<PdmBiSubpackagerelation> isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList());
|
List<PdmBiSubpackagerelation> isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList());
|
||||||
if (isOutBox.size() > 0) {
|
if (isOutBox.size() > 0) {
|
||||||
throw new BadRequestException("标记为黄色的子卷号已分配木箱,请重新选择未分配木箱的子卷");
|
throw new BadRequestException("标记为黄色的子卷号已分配木箱,请重新选择未分配木箱的子卷");
|
||||||
}
|
}
|
||||||
List<String> entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream()
|
JSONArray jsonArray = whereJson.getJSONArray("tableMater");
|
||||||
.map(PdmBiSubpackagerelation::getWorkorder_id)
|
if (jsonArray == null || jsonArray.size() == 0) {
|
||||||
.map(String::valueOf)
|
throw new BadRequestException("无选中子卷信息");
|
||||||
.collect(Collectors.toList());
|
|
||||||
if (entityList.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
List<PdmBiSubpackagerelation> pdmBiSubpackagerelationList = pdmBiSubpackagerelationMapper
|
List<PdmBiSubpackagerelation> pdmBiSubpackagerelationList = pdmBiSubpackagerelationMapper
|
||||||
.selectList(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getSale_order_name, whereJson.getString("sale_order_name")));
|
.selectList(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getSale_order_name, jsonArray.getJSONObject(0).getString("sale_order_name")));
|
||||||
Integer maxBoxGroup = pdmBiSubpackagerelationList.stream()
|
Integer maxBoxGroup = pdmBiSubpackagerelationList.stream()
|
||||||
.map(PdmBiSubpackagerelation::getBox_group)
|
.map(PdmBiSubpackagerelation::getBox_group)
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
@@ -421,6 +420,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
.max(Integer::compareTo)
|
.max(Integer::compareTo)
|
||||||
.orElse(0) + 1;
|
.orElse(0) + 1;
|
||||||
try {
|
try {
|
||||||
|
List<String> entityList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream()
|
||||||
|
.map(PdmBiSubpackagerelation::getWorkorder_id)
|
||||||
|
.map(String::valueOf)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (entityList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// code:终点,material_code:木箱规格,num: 子卷数
|
// code:终点,material_code:木箱规格,num: 子卷数
|
||||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
|
||||||
String boxType = whereJson.getString("checked");
|
String boxType = whereJson.getString("checked");
|
||||||
@@ -440,8 +446,38 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
* 空木箱出库
|
* 空木箱出库
|
||||||
*/
|
*/
|
||||||
private void outBox(List<String> entityList, List<PdmBiSubpackagerelation> packagerelationList, String boxType) {
|
private void outBox(List<String> entityList, List<PdmBiSubpackagerelation> packagerelationList, String boxType) {
|
||||||
|
//均衡获取装箱对接位
|
||||||
|
//String deviceCode= getPointCode();
|
||||||
|
String deviceCode = "ZXQ_1_1";
|
||||||
JSONObject boxInfo = new JSONObject();
|
JSONObject boxInfo = new JSONObject();
|
||||||
String deviceCode;
|
//确定装箱区终点
|
||||||
|
boxInfo.put("device_code", deviceCode);
|
||||||
|
boxInfo.put("material_code", boxType);
|
||||||
|
boxInfo.put("num", entityList.size());
|
||||||
|
String boxSn = outBoxManageService.outBox(boxInfo);
|
||||||
|
if (StringUtils.isBlank(boxSn)) {
|
||||||
|
throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
|
||||||
|
}
|
||||||
|
//更新子卷包装关系更新木箱号
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
try {
|
||||||
|
updateBoxInfo(entityList, boxSn);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("异常信息:" + e);
|
||||||
|
}
|
||||||
|
}, pool);
|
||||||
|
//待检区->装箱区agv任务
|
||||||
|
// String finalDeviceCode = deviceCode;
|
||||||
|
// CompletableFuture.runAsync(() -> {
|
||||||
|
// try {
|
||||||
|
// agvTransfer(packagerelationList, finalDeviceCode, boxSn);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("异常信息:" + e);
|
||||||
|
// }
|
||||||
|
// }, pool);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getPointCode() {
|
||||||
//均衡获取木箱出库终点
|
//均衡获取木箱出库终点
|
||||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, "5").eq(BstIvtPackageinfoivt::getIs_used, "1").orderByAsc(BstIvtPackageinfoivt::getPoint_code));
|
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, "5").eq(BstIvtPackageinfoivt::getIs_used, "1").orderByAsc(BstIvtPackageinfoivt::getPoint_code));
|
||||||
if (CollectionUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
if (CollectionUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
||||||
@@ -476,23 +512,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
Optional<String> minPointCode = result.stream()
|
Optional<String> minPointCode = result.stream()
|
||||||
.min(Comparator.comparingInt(map -> map.entrySet().iterator().next().getValue()))
|
.min(Comparator.comparingInt(map -> map.entrySet().iterator().next().getValue()))
|
||||||
.map(map -> map.keySet().iterator().next());
|
.map(map -> map.keySet().iterator().next());
|
||||||
deviceCode = minPointCode.orElseGet(() -> bstIvtPackageinfoivtList.get(0).getPoint_code());
|
return minPointCode.orElseGet(() -> bstIvtPackageinfoivtList.get(0).getPoint_code());
|
||||||
//确定装箱区终点
|
}
|
||||||
boxInfo.put("device_code", deviceCode);
|
|
||||||
boxInfo.put("material_code", boxType);
|
|
||||||
boxInfo.put("num", entityList.size());
|
protected void updateBoxInfo(List<String> entityList, String boxSn) {
|
||||||
String boxSn = outBoxManageService.outBox(boxInfo);
|
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
|
||||||
//String boxSn = "MX61401";
|
updateWrapper.set("package_box_sn", boxSn);
|
||||||
if (StringUtils.isBlank(boxSn)) {
|
updateWrapper.in("workorder_id", entityList);
|
||||||
throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
|
pdmBiSubpackagerelationMapper.update(null, updateWrapper);
|
||||||
}
|
|
||||||
//更新子卷包装关系更新木箱号
|
|
||||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper1 = new UpdateWrapper<>();
|
|
||||||
updateWrapper1.set("package_box_sn", boxSn);
|
|
||||||
updateWrapper1.in("workorder_id", entityList);
|
|
||||||
pdmBiSubpackagerelationMapper.update(null, updateWrapper1);
|
|
||||||
//待检区->装箱区agv任务
|
|
||||||
agvTransfer(packagerelationList, deviceCode, boxSn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -539,7 +567,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void agvTransfer(List<PdmBiSubpackagerelation> packagerelationList, String deviceCode, String boxSn) {
|
protected void agvTransfer(List<PdmBiSubpackagerelation> packagerelationList, String deviceCode, String boxSn) {
|
||||||
//待检区点位
|
//待检区点位
|
||||||
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
|
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
|
||||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||||
@@ -571,7 +599,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
schBaseTaskList.add(task);
|
schBaseTaskList.add(task);
|
||||||
});
|
});
|
||||||
//taskQueueManager.addTasksToQueue(groupId, schBaseTaskList);
|
//taskQueueManager.addTasksToQueue(groupId, schBaseTaskList);
|
||||||
taskQueue.addTasksToQueue(groupId, schBaseTaskList);
|
// taskQueue.addTasksToQueue(groupId, schBaseTaskList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.b_lms.sch.tasks;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -72,6 +73,8 @@ public class TwoInBoxTask extends AbstractAcsTask {
|
|||||||
// 任务表
|
// 任务表
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||||
|
|
||||||
|
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
|
||||||
|
|
||||||
JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0);
|
JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0);
|
||||||
|
|
||||||
// 更新任务的参数
|
// 更新任务的参数
|
||||||
@@ -96,7 +99,29 @@ public class TwoInBoxTask extends AbstractAcsTask {
|
|||||||
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||||
jsonAttr.put("storagevehicle_code", jsonTask.getString("vehicle_code"));
|
jsonAttr.put("storagevehicle_code", jsonTask.getString("vehicle_code"));
|
||||||
attrTab.update(jsonAttr);
|
attrTab.update(jsonAttr);
|
||||||
}
|
|
||||||
|
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + jsonTask.getString("vehicle_code2") + "'")
|
||||||
|
.uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(jsonVehicle)) {
|
||||||
|
throw new BadRequestException("载具不存在!");
|
||||||
|
}
|
||||||
|
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(ext_jo)) {
|
||||||
|
JSONObject jsonVeExt = new JSONObject();
|
||||||
|
jsonVeExt.put("storagevehicleext_id", org.nl.common.utils.IdUtil.getLongId());
|
||||||
|
jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
|
||||||
|
jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
|
||||||
|
jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
|
||||||
|
jsonVeExt.put("pcsn", jsonTask.getString("vehicle_code"));
|
||||||
|
jsonVeExt.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
|
||||||
|
jsonVeExt.put("update_time", DateUtil.now());
|
||||||
|
veExtTab.insert(jsonVeExt);
|
||||||
|
}else {
|
||||||
|
ext_jo.put("pcsn", jsonTask.getString("vehicle_code2"));
|
||||||
|
ext_jo.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
|
||||||
|
ext_jo.put("update_time", DateUtil.now());
|
||||||
|
veExtTab.update(ext_jo);
|
||||||
|
} }
|
||||||
|
|
||||||
// 取消
|
// 取消
|
||||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ public class TwoInEmpExcepTask extends AbstractAcsTask {
|
|||||||
throw new BadRequestException("托盘号不能为空!");
|
throw new BadRequestException("托盘号不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.isBlank(form.getString("vehicle_type"))) {
|
if (StrUtil.isBlank(form.getString("containerType"))) {
|
||||||
throw new BadRequestException("托盘类型不能为空!");
|
throw new BadRequestException("托盘类型不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.b_lms.sch.tasks;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -90,6 +91,8 @@ public class TwoInEmpTask extends AbstractAcsTask {
|
|||||||
// 完成
|
// 完成
|
||||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||||
|
|
||||||
// 更新仓位
|
// 更新仓位
|
||||||
@@ -100,6 +103,7 @@ public class TwoInEmpTask extends AbstractAcsTask {
|
|||||||
jsonAttr.put("is_emptyvehicle",IOSEnum.IS_NOTANDYES.code("是"));
|
jsonAttr.put("is_emptyvehicle",IOSEnum.IS_NOTANDYES.code("是"));
|
||||||
|
|
||||||
attrTab.update(jsonAttr);
|
attrTab.update(jsonAttr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 取消
|
// 取消
|
||||||
|
|||||||
@@ -141,6 +141,21 @@ public class TwoLashTask extends AbstractAcsTask {
|
|||||||
// 完成
|
// 完成
|
||||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||||
|
|
||||||
|
// 判断当前任务组的所有任务是否都为完成:如果都为完成则 调用acs接口允许此木箱离开
|
||||||
|
JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + taskObj.getString("task_group_id") + "' and is_delete = '0' and task_status <> 07 and task_id <> '"+taskObj.getString("task_id")+"'")
|
||||||
|
.uniqueResult(0);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(groupTask)) {
|
||||||
|
// 更新点位载具、数量
|
||||||
|
JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0);
|
||||||
|
pointDao.put("vehicle_code", "");
|
||||||
|
pointDao.put("vehicle_qty",0);
|
||||||
|
WQLObject.getWQLObject("sch_base_point").update(pointDao);
|
||||||
|
|
||||||
|
// TODO 调用acs接口告诉此木箱可以离开
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,6 +234,7 @@ public class TwoLashTask extends AbstractAcsTask {
|
|||||||
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||||
json.put("point_code1", form.getString("start_device_code"));
|
json.put("point_code1", form.getString("start_device_code"));
|
||||||
json.put("point_code2", form.getString("next_device_code"));
|
json.put("point_code2", form.getString("next_device_code"));
|
||||||
|
json.put("task_group_id", form.getString("task_group_id"));
|
||||||
json.put("is_auto_issue", form.getString("is_auto_issue"));
|
json.put("is_auto_issue", form.getString("is_auto_issue"));
|
||||||
json.put("handle_class", this.getClass().getName());
|
json.put("handle_class", this.getClass().getName());
|
||||||
json.put("create_id", SecurityUtils.getCurrentUserId());
|
json.put("create_id", SecurityUtils.getCurrentUserId());
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ public class TwoOutEmpTask extends AbstractAcsTask {
|
|||||||
throw new BadRequestException("托盘号不能为空!");
|
throw new BadRequestException("托盘号不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.isBlank(form.getString("vehicle_type"))) {
|
if (StrUtil.isBlank(form.getString("containerType"))) {
|
||||||
throw new BadRequestException("托盘类型不能为空!");
|
throw new BadRequestException("托盘类型不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ public class TwoOutHeapTask extends AbstractAcsTask {
|
|||||||
JSONObject jsonParam = new JSONObject();
|
JSONObject jsonParam = new JSONObject();
|
||||||
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
||||||
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
||||||
|
jsonParam.put("task_group_id",jsonTask.getString("task_group_id"));
|
||||||
|
|
||||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||||
bean1.createLashTask(jsonParam);
|
bean1.createLashTask(jsonParam);
|
||||||
|
|||||||
@@ -163,13 +163,14 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
bean.finishTask(jsonTask);
|
bean.finishTask(jsonTask);
|
||||||
|
|
||||||
// 判断此任务组是否全部完成
|
// 判断此任务组是否全部完成
|
||||||
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
|
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "' and handle_class = '"+THIS_CLASS+"'")
|
||||||
.getResultJSONArray(0);
|
.getResultJSONArray(0);
|
||||||
|
|
||||||
// 下发堆垛机至行架任务(2个行架位)
|
// 下发堆垛机至行架任务(2个行架位)
|
||||||
JSONObject jsonParam = new JSONObject();
|
JSONObject jsonParam = new JSONObject();
|
||||||
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
||||||
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
||||||
|
jsonParam.put("task_group_id",jsonTask.getString("task_group_id"));
|
||||||
jsonParam.put("vehicle_type",jsonTask.getJSONObject("request_param").getString("containerType"));
|
jsonParam.put("vehicle_type",jsonTask.getJSONObject("request_param").getString("containerType"));
|
||||||
|
|
||||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class MzhcwTask extends AbstractAcsTask {
|
|||||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
|
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
|
||||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
|
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
|
||||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
.orderByDesc(BstIvtPackageinfoivt::getSort_seq));
|
||||||
JSONObject toSsxTask = new JSONObject();
|
JSONObject toSsxTask = new JSONObject();
|
||||||
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||||
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.nl.modules.common.exception.BadRequestException;
|
|||||||
import org.nl.common.utils.CodeUtil;
|
import org.nl.common.utils.CodeUtil;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.system.service.param.ISysParamService;
|
||||||
import org.nl.wms.basedata.st.service.StorattrService;
|
import org.nl.wms.basedata.st.service.StorattrService;
|
||||||
import org.nl.wms.basedata.st.service.dto.StorattrDto;
|
import org.nl.wms.basedata.st.service.dto.StorattrDto;
|
||||||
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
||||||
@@ -102,6 +103,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
|
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysParamService iSysParamService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public String insertMst(JSONObject whereJson) {
|
public String insertMst(JSONObject whereJson) {
|
||||||
@@ -1132,26 +1136,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(disDaoList)) {
|
if (ObjectUtil.isNotEmpty(disDaoList)) {
|
||||||
// 相同
|
// 不为空说明是此单据下的木箱
|
||||||
JSONObject jsonSub1 = subTab.query("package_box_sn = '" + jsonAttr.getString("storagevehicle_code") + "'").uniqueResult(0);
|
flag = false;
|
||||||
JSONObject jsonSub2 = subTab.query("package_box_sn = '" + jsonLow.getString("storagevehicle_code") + "'").uniqueResult(0);
|
} else {
|
||||||
|
// 为空:判断此木箱是否有任务
|
||||||
if (jsonSub1.getString("sale_order_name").equals(jsonSub2.getString("sale_order_name")) &&
|
JSONObject jsonTask = taskService.query("vehicle_code = '" + jsonLow.getString("storagevehicle_code") + "' and task_status <> '07' and is_delete = '0'").uniqueResult(0);
|
||||||
jsonSub1.getString("box_length").equals(jsonSub2.getString("box_length")) &&
|
|
||||||
jsonSub1.getString("box_width").equals(jsonSub2.getString("box_width")) &&
|
|
||||||
jsonSub1.getString("box_high").equals(jsonSub2.getString("box_high")) &&
|
|
||||||
jsonSub1.getString("product_name").equals(jsonSub2.getString("product_name"))) {
|
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||||
flag = false;
|
flag = false;
|
||||||
} else {
|
|
||||||
// 不相同:判断是否有此木箱的任务
|
|
||||||
JSONObject jsonTask = taskService.query("table_fk = '" + iostorinv_id + "' and vehicle_code = '" + jsonLow.getString("storagevehicle_code") + "' and is_delete = '0'").uniqueResult(0);
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
|
||||||
flag = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
@@ -1160,7 +1154,36 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
moveParam.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
moveParam.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||||
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||||
moveParam.put("box_no", jsonLow.getString("storagevehicle_code"));
|
moveParam.put("box_no", jsonLow.getString("storagevehicle_code"));
|
||||||
// moveParam.put("material_id", jsonMater.getString("material_id"));
|
//根据木箱高度,判断入库仓位的高度、
|
||||||
|
String height = "";
|
||||||
|
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||||
|
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||||
|
// 查询木箱信息
|
||||||
|
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||||
|
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||||
|
.eq(BstIvtBoxinfo::getBox_no, jsonLow.getString("storagevehicle_code"))
|
||||||
|
);
|
||||||
|
|
||||||
|
String box_high = boxDao.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";
|
||||||
|
}
|
||||||
|
moveParam.put("height", height);
|
||||||
|
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||||
|
moveParam.put("move_block_num", jsonLow.getString("block_num"));
|
||||||
|
|
||||||
|
// 查询物料id
|
||||||
|
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
|
||||||
|
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||||
|
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||||
|
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
|
||||||
|
).get(0);
|
||||||
|
|
||||||
|
moveParam.put("material_id", disDao.getMaterial_id());
|
||||||
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||||
|
|
||||||
// 生成任务
|
// 生成任务
|
||||||
|
|||||||
@@ -69,9 +69,6 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WmsToAcsService wmsToAcsService;
|
private WmsToAcsService wmsToAcsService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AcsToWmsService acsToWmsService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysParamService iSysParamService;
|
private ISysParamService iSysParamService;
|
||||||
|
|
||||||
@@ -161,10 +158,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void boxBinVehicle(JSONObject whereJson) {
|
public void boxBinVehicle(JSONObject whereJson) {
|
||||||
// 载具表
|
|
||||||
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
|
|
||||||
// 载具扩展属性表
|
|
||||||
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
|
||||||
/*
|
/*
|
||||||
* 查询mes木箱信息,插入木箱信息表
|
* 查询mes木箱信息,插入木箱信息表
|
||||||
*/
|
*/
|
||||||
@@ -205,28 +199,6 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
if (boxDao == null) {
|
if (boxDao == null) {
|
||||||
throw new BadRequestException("木箱不存在!");
|
throw new BadRequestException("木箱不存在!");
|
||||||
}
|
}
|
||||||
// JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'")
|
|
||||||
// .uniqueResult(0);
|
|
||||||
// if (ObjectUtil.isEmpty(jsonVehicle)) {
|
|
||||||
// throw new BadRequestException("载具不存在!");
|
|
||||||
// }
|
|
||||||
// JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0);
|
|
||||||
// if (ObjectUtil.isEmpty(ext_jo)) {
|
|
||||||
// JSONObject jsonVeExt = new JSONObject();
|
|
||||||
// jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId());
|
|
||||||
// jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
|
|
||||||
// jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
|
|
||||||
// jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
|
|
||||||
// jsonVeExt.put("pcsn", whereJson.getString("box_no"));
|
|
||||||
// jsonVeExt.put("device_uuid", IdUtil.getLongId());
|
|
||||||
// jsonVeExt.put("update_time", DateUtil.now());
|
|
||||||
// veExtTab.insert(jsonVeExt);
|
|
||||||
// }else {
|
|
||||||
// ext_jo.put("pcsn", whereJson.getString("box_no"));
|
|
||||||
// ext_jo.put("device_uuid", IdUtil.getLongId());
|
|
||||||
// ext_jo.put("update_time", DateUtil.now());
|
|
||||||
// veExtTab.update(ext_jo);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 下发桁架任务
|
// 下发桁架任务
|
||||||
|
|
||||||
@@ -242,6 +214,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
device_ja.add(device_jo);
|
device_ja.add(device_jo);
|
||||||
JSONObject device_data = wmsToAcsService.getPointStatus(device_ja);
|
JSONObject device_data = wmsToAcsService.getPointStatus(device_ja);
|
||||||
JSONObject data = device_data.getJSONArray("data").getJSONObject(0);
|
JSONObject data = device_data.getJSONArray("data").getJSONObject(0);
|
||||||
|
AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class);
|
||||||
//如果此时拆叠盘位为空
|
//如果此时拆叠盘位为空
|
||||||
if (data.getIntValue("qty") == 0) {
|
if (data.getIntValue("qty") == 0) {
|
||||||
//生成空托盘出库任务
|
//生成空托盘出库任务
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONAware;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
@@ -119,12 +120,27 @@ public class InBussManageServiceImpl implements InBussManageService {
|
|||||||
* 判断是否有仓位
|
* 判断是否有仓位
|
||||||
* 判断条件:库区、仓库、是否启用、是否删除、未锁定、没有载具
|
* 判断条件:库区、仓库、是否启用、是否删除、未锁定、没有载具
|
||||||
*/
|
*/
|
||||||
JSONArray attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
// 是否是移库: 提前确定的巷道
|
||||||
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
String block_num = jsonObject.getString("move_block_num");
|
||||||
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
|
||||||
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
JSONArray attrArry = new JSONArray();
|
||||||
"AND height = '" + jsonObject.getString("height") + "'" +
|
if (ObjectUtil.isEmpty(block_num)) {
|
||||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
|
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||||
|
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||||
|
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
||||||
|
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
||||||
|
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||||
|
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
|
||||||
|
} else {
|
||||||
|
attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||||
|
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||||
|
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
|
||||||
|
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
|
||||||
|
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||||
|
"AND sect_id = '" + jsonObject.getString("sect_id") + "' AND block_num = '"+block_num+"'")
|
||||||
|
.getResultJSONArray(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(attrArry)) {
|
if (ObjectUtil.isEmpty(attrArry)) {
|
||||||
notInRowList.clear();
|
notInRowList.clear();
|
||||||
@@ -143,7 +159,10 @@ public class InBussManageServiceImpl implements InBussManageService {
|
|||||||
jsonSub.put("vehicle_type", jsonObject.getString("vehicle_type"));
|
jsonSub.put("vehicle_type", jsonObject.getString("vehicle_type"));
|
||||||
jsonSub.put("height", jsonObject.getString("height"));
|
jsonSub.put("height", jsonObject.getString("height"));
|
||||||
|
|
||||||
String block_num = getMinBlock(jsonSub);
|
// 不是移库则需要找新巷道
|
||||||
|
if (ObjectUtil.isEmpty(block_num)) {
|
||||||
|
block_num = getMinBlock(jsonSub);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排
|
* 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排
|
||||||
*/
|
*/
|
||||||
@@ -156,6 +175,11 @@ public class InBussManageServiceImpl implements InBussManageService {
|
|||||||
jsonSub.put("row_num", row_num);
|
jsonSub.put("row_num", row_num);
|
||||||
JSONObject jsonAttr = queryStruct(jsonSub);
|
JSONObject jsonAttr = queryStruct(jsonSub);
|
||||||
|
|
||||||
|
// 如果是移库空并且仓位为空则报错
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonObject.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
throw new BadRequestException("仓位不足!");
|
||||||
|
}
|
||||||
|
|
||||||
// 为空则新找巷道
|
// 为空则新找巷道
|
||||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import org.hibernate.annotations.Source;
|
|||||||
import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
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.dao.mapper.SchBasePointMapper;
|
||||||
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
||||||
|
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||||
|
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
|
||||||
import org.nl.b_lms.sch.tasks.TwoLashTask;
|
import org.nl.b_lms.sch.tasks.TwoLashTask;
|
||||||
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
|
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.IBstIvtBoxinfoService;
|
||||||
@@ -184,6 +186,7 @@ public class LashManageServiceImpl implements LashManageService {
|
|||||||
jsonTaskParam.put("task_type", "010707");
|
jsonTaskParam.put("task_type", "010707");
|
||||||
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
|
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
|
||||||
jsonTaskParam.put("next_device_code", end_point);
|
jsonTaskParam.put("next_device_code", end_point);
|
||||||
|
jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id"));
|
||||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||||
jsonTaskParam.put("is_auto_issue", is_move);
|
jsonTaskParam.put("is_auto_issue", is_move);
|
||||||
|
|
||||||
@@ -218,6 +221,7 @@ public class LashManageServiceImpl implements LashManageService {
|
|||||||
jsonTaskParam.put("task_type", "010720");
|
jsonTaskParam.put("task_type", "010720");
|
||||||
whereJson.put("containerType", whereJson.getString("vehicle_type"));
|
whereJson.put("containerType", whereJson.getString("vehicle_type"));
|
||||||
jsonTaskParam.put("point_code1", whereJson.getString("device_code"));
|
jsonTaskParam.put("point_code1", whereJson.getString("device_code"));
|
||||||
|
jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id"));
|
||||||
jsonTaskParam.put("point_code2", next_device_code);
|
jsonTaskParam.put("point_code2", next_device_code);
|
||||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||||
jsonTaskParam.put("request_param", whereJson);
|
jsonTaskParam.put("request_param", whereJson);
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ import cn.hutool.core.util.NumberUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||||
|
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService;
|
||||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
|
||||||
@@ -17,6 +20,7 @@ import org.nl.common.utils.IdUtil;
|
|||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.system.service.param.ISysParamService;
|
||||||
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
|
||||||
import org.nl.wms.st.inbill.service.StorPublicService;
|
import org.nl.wms.st.inbill.service.StorPublicService;
|
||||||
import org.nl.wms.st.instor.service.HandMoveStorService;
|
import org.nl.wms.st.instor.service.HandMoveStorService;
|
||||||
@@ -72,6 +76,12 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private HandMoveStorService handMoveStorService;
|
private HandMoveStorService handMoveStorService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysParamService iSysParamService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void lockStruct(List<String> param, JSONObject json) {
|
public void lockStruct(List<String> param, JSONObject json) {
|
||||||
@@ -381,6 +391,29 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
|||||||
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
|
||||||
moveParam.put("box_no", json.getString("storagevehicle_code"));
|
moveParam.put("box_no", json.getString("storagevehicle_code"));
|
||||||
moveParam.put("material_id", jsonMater.getString("material_id"));
|
moveParam.put("material_id", jsonMater.getString("material_id"));
|
||||||
|
//根据木箱高度,判断入库仓位的高度、
|
||||||
|
String height = "";
|
||||||
|
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||||
|
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||||
|
// 查询木箱信息
|
||||||
|
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||||
|
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||||
|
.eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code"))
|
||||||
|
);
|
||||||
|
|
||||||
|
String box_high = boxDao.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";
|
||||||
|
}
|
||||||
|
moveParam.put("height", height);
|
||||||
|
moveParam.put("vehicle_type", boxDao.getVehicle_type());
|
||||||
|
// 移库巷道
|
||||||
|
moveParam.put("move_block_num",json.getString("block_num"));
|
||||||
|
|
||||||
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
|
||||||
|
|
||||||
// 查询移出货位的库存物料
|
// 查询移出货位的库存物料
|
||||||
|
|||||||
@@ -79,6 +79,13 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
|
|||||||
throw new BadRequestException("终点点位不存在或未启用!");
|
throw new BadRequestException("终点点位不存在或未启用!");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
//判断当前点位是否存在任务,如果存在则不生成任务
|
||||||
|
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||||
|
JSONObject jsonObject = wo_Task.query("point_code2 = '" + whereJson.getString("device_code") + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonObject)){
|
||||||
|
throw new BadRequestException("点位【"+jsonObject.getString("point_code2")+"】正在出空托盘任务!");
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject jsonAttr = getStruct(whereJson);
|
JSONObject jsonAttr = getStruct(whereJson);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public interface InBussManageService {
|
|||||||
* sect_id:库区标识
|
* sect_id:库区标识
|
||||||
* material_id: 物料标识
|
* material_id: 物料标识
|
||||||
* box_no:木箱号
|
* box_no:木箱号
|
||||||
|
* move_block_num: 是否移库:提前确定巷道
|
||||||
* }
|
* }
|
||||||
* @return JSONObject 仓位对象
|
* @return JSONObject 仓位对象
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public interface LashManageService {
|
|||||||
* @param whereJson {
|
* @param whereJson {
|
||||||
* device_code:起点
|
* device_code:起点
|
||||||
* vehicle_code: 箱号
|
* vehicle_code: 箱号
|
||||||
|
* task_group_id: 任务组
|
||||||
*
|
*
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
@@ -28,6 +29,7 @@ public interface LashManageService {
|
|||||||
* device_code:起点
|
* device_code:起点
|
||||||
* vehicle_code: 箱号
|
* vehicle_code: 箱号
|
||||||
* vehicle_type: 载具类型
|
* vehicle_type: 载具类型
|
||||||
|
* task_group_id: 任务组
|
||||||
*
|
*
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ package org.nl.config.thread;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
@@ -63,6 +64,8 @@ public class AsyncTaskExecutePool implements AsyncConfigurer {
|
|||||||
return executor;
|
return executor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
|
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
|
||||||
return (throwable, method, objects) -> {
|
return (throwable, method, objects) -> {
|
||||||
|
|||||||
@@ -37,4 +37,6 @@ public class AsyncTaskProperties {
|
|||||||
private int keepAliveSeconds;
|
private int keepAliveSeconds;
|
||||||
|
|
||||||
private int queueCapacity;
|
private int queueCapacity;
|
||||||
|
|
||||||
|
private int awaitTerminationSeconds;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
@Override
|
@Override
|
||||||
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
|
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
|
||||||
String search = MapUtil.getStr(whereJson, "search");
|
String search = MapUtil.getStr(whereJson, "search");
|
||||||
|
//只查询木箱
|
||||||
|
String box = MapUtil.getStr(whereJson, "box");
|
||||||
//物料限制的时候使用,初始化页面
|
//物料限制的时候使用,初始化页面
|
||||||
String class_idStr = MapUtil.getStr(whereJson, "class_idStr");
|
String class_idStr = MapUtil.getStr(whereJson, "class_idStr");
|
||||||
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
|
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
|
||||||
@@ -60,6 +62,13 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
|||||||
}
|
}
|
||||||
map.put("search", "%" + search + "%");
|
map.put("search", "%" + search + "%");
|
||||||
}
|
}
|
||||||
|
if (!StrUtil.isEmpty(box)) {
|
||||||
|
//处理转义字符
|
||||||
|
if (box.contains("\\")) {
|
||||||
|
box = box.replace("\\", "\\\\\\");
|
||||||
|
}
|
||||||
|
map.put("box", "%" + box + "%");
|
||||||
|
}
|
||||||
|
|
||||||
//处理物料当前节点的所有子节点
|
//处理物料当前节点的所有子节点
|
||||||
if (!StrUtil.isEmpty(material_type_id)) {
|
if (!StrUtil.isEmpty(material_type_id)) {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#################################################
|
#################################################
|
||||||
输入.flag TYPEAS s_string
|
输入.flag TYPEAS s_string
|
||||||
输入.search TYPEAS s_string
|
输入.search TYPEAS s_string
|
||||||
|
输入.box TYPEAS s_string
|
||||||
输入.class_code TYPEAS s_string
|
输入.class_code TYPEAS s_string
|
||||||
输入.idssql TYPEAS f_string
|
输入.idssql TYPEAS f_string
|
||||||
输入.classIds TYPEAS f_string
|
输入.classIds TYPEAS f_string
|
||||||
@@ -59,6 +60,11 @@
|
|||||||
mb.material_name like 输入.search
|
mb.material_name like 输入.search
|
||||||
)
|
)
|
||||||
ENDOPTION
|
ENDOPTION
|
||||||
|
OPTION 输入.box <> ""
|
||||||
|
(
|
||||||
|
mb.material_name like 输入.box
|
||||||
|
)
|
||||||
|
ENDOPTION
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDPAGEQUERY
|
ENDPAGEQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
@@ -1968,11 +1968,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
log.info("applyTwo返回参数:---------------------------------------------" + result.toString());
|
log.info("applyTwo返回参数:---------------------------------------------" + result.toString());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}catch (Exception ex){
|
|
||||||
log.info("applyTwo申请任务异常,任务类型为:---------------------------------------------"+type+"异常信息为"+ex.toString());
|
|
||||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
|
||||||
result.put("message","申请任务异常,任务类型为:"+type+"异常信息为"+ex.toString());
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
if (tryLock) {
|
if (tryLock) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export default {
|
|||||||
url: 'api/Materialbase',
|
url: 'api/Materialbase',
|
||||||
idField: 'material_id',
|
idField: 'material_id',
|
||||||
sort: 'material_id,desc',
|
sort: 'material_id,desc',
|
||||||
query: { search: 'MX', material_id: '' },
|
query: { box: '木箱', material_id: '' },
|
||||||
crudMethod: { ...crudMaterattr }
|
crudMethod: { ...crudMaterattr }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user