opt:印尼调试代码优化

This commit is contained in:
2026-07-11 14:55:30 +07:00
parent e5037fd3e8
commit 57758164d4
35 changed files with 623 additions and 317 deletions

View File

@@ -41,7 +41,7 @@ public class VehicleTwoController {
@Log("入空载具")
@SaIgnore
public ResponseEntity<Object> vehicleIn(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(vehicleTwoService.vehicleIn(whereJson), HttpStatus.OK);
return new ResponseEntity<>(vehicleTwoService.InVehicleIn(whereJson), HttpStatus.OK);
}
@PostMapping("/boxIn")

View File

@@ -20,6 +20,18 @@ public interface VehicleTwoService {
*/
JSONObject vehicleIn(JSONObject whereJson);
/**
* 一楼入库空载具入库
* @param whereJson {
* vehicle_code: 载具号
* vehicle_type: 载具类型
* point_code: 点位
* }
* @return JSONObject返回前端参数
*/
JSONObject InVehicleIn(JSONObject whereJson);
/**
*
* @param whereJson {

View File

@@ -28,8 +28,10 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussMana
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService;
import org.nl.common.enums.SpecEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata.st.service.StructattrService;
@@ -41,6 +43,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -90,6 +93,18 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
@Autowired
private IMdPbStoragevehicleextService mdPbStoragevehicleextService;
@Autowired
private RedisUtils redisUtils;
/**
* 空载具入库处理服务
*/
@Autowired
private InVehicleManageService inVehicleManageService;
@Resource
private ISysParamService iSysParamService;
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject vehicleIn(JSONObject whereJson) {
@@ -112,7 +127,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
// 判断入库叠盘位的 托盘类型是否相同、是否叠满
JSONObject device_jo = new JSONObject();
device_jo.put("device_code", "RK1004");
device_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
device_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK"));
JSONArray device_ja = new JSONArray();
@@ -126,7 +141,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010715");
jsonTaskParam.put("start_device_code", point_code);
jsonTaskParam.put("next_device_code", "RK1004");
jsonTaskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
jsonTaskParam.put("containerType", whereJson.getString("vehicle_type"));
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
JSONObject param = new JSONObject();
@@ -145,7 +160,8 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
// 生层到出库口叠盘机任务
// 判断托盘类型
String next_device_code = "CK2005";
String next_device_code = IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type);
/*if (vehicle_type.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
// 小托盘 CK2009
next_device_code = "CK2009";
@@ -155,11 +171,11 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
}*/
// 判断点位状态
device_jo.put("device_code", "CK2005");
device_jo.put("device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type));
JSONArray device_ja2 = new JSONArray();
device_ja2.add(device_jo);
JSONObject device_data2 = wmsToAcsService.getPointStatus(device_ja2);
JSONObject data2 = device_data2.getJSONArray("data").getJSONObject(0);
// JSONObject data2 = device_data2.getJSONArray("data").getJSONObject(0);
/*// 判断是否有货 且数量小于5
if (data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("否")) ||
(data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("是"))
@@ -172,6 +188,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
jsonTaskParam.put("next_device_code", next_device_code);
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("containerType", whereJson.getString("vehicle_type"));
jsonTaskParam.put("type", "3");
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
param.put("heightLevel", "0");
@@ -187,15 +204,93 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject InVehicleIn(JSONObject whereJson) {
JSONObject result = new JSONObject();
String point_code = whereJson.getString("point_code");
String vehicle_type = whereJson.getString("vehicle_type");
if( whereJson.getIntValue("layer") >4 || whereJson.getIntValue("layer")<1){
throw new BadRequestException("层数不区间");
}
// 判断起点是否存在
SchBasePoint pointDao = ischBasePointService.getOne(
new QueryWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, point_code)
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code(""))
);
if (ObjectUtil.isEmpty(pointDao)) {
throw new BadRequestException("点位:" + point_code + "不存在或未启用!");
}
if(!IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type).equals(point_code)){
throw new BadRequestException("点位只能为" + IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type));
}
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String vehicle_height = iSysParamService.findByCode("vehicle_height").getValue();
int high = Integer.parseInt(vehicle_height) * whereJson.getIntValue("layer");
if (high <= Integer.parseInt(heightLevel1)) {
height = "1";
} else if (high > Integer.parseInt(heightLevel1) && high <= Integer.parseInt(heightLevel2)) {
height = "2";
}
// whereJson.put("heightLevel", height);
if (high > Integer.parseInt(heightLevel2)){
throw new BadRequestException("高度超高,无法入库");
}
JSONArray rows = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("device_code", point_code);
jsonObject.put("code", "to_back_up_1");
jsonObject.put("value", "3");
jsonObject.put("product_area", "BLK");
rows.add(jsonObject);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("device_code", point_code);
jsonObject1.put("code", "to_container_type");
jsonObject1.put("value",vehicle_type);
jsonObject1.put("product_area", "BLK");
rows.add(jsonObject1);
redisUtils.set(whereJson.getString("vehicle_code") + "InVehicleInHeightLevel",height);
wmsToAcsService.action(rows);
// inVehicleManageService.inVehicle(whereJson);
result.put("message", "入库成功!");
return result;
}
@Override
public JSONObject boxIn(JSONObject whereJson) {
// 调用接口
String startCode = whereJson.getString("point_code");
if ("MXRKW1".equals(startCode)) {
inBoxManageService.boxBinVehicle(whereJson);
} else if ("THRKDJW1".equals(startCode)) {
if(StringUtils.isBlank(startCode)){
throw new BadRequestException("点位不能为空!");
}
//KMXRKW2 退货入库
if ("KMXRKW2".equals(startCode)) {
inBoxManageService.boxBinVehicleByTHRK(whereJson);
}
else if (startCode.contains("KMXRKW")) {
inBoxManageService.boxBinVehicle(whereJson);
}
JSONObject result = new JSONObject();
result.put("message", "入库成功!");
return result;

View File

@@ -40,6 +40,6 @@ public interface PdmBiSubpackagerelationMapper extends BaseMapper<PdmBiSubpackag
List<Map<String,String>> downloadData(@Param("day") String date);
@Select("select * from pdm_bi_subpackagerelation where package_box_sn = #{boxNo}")
@Select("select * from pdm_bi_subpackagerelation where package_box_sn = #{boxNo} limit 1")
StructattrQuerry selectSubpackagerelationInser(String boxNo);
}

View File

@@ -42,7 +42,6 @@ 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.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoInBoxTrussTask;
import org.nl.b_lms.sch.tasks.boxstack.InBoxTrussTask;
import org.nl.b_lms.sch.tasks.TwoOutBoxTask;
import org.nl.b_lms.sch.tasks.boxstack.MxMoveTask;
@@ -867,7 +866,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
acsParam.put("device_code", deviceCode);
acsParam.put("sub_volume", "BR" + box);

View File

@@ -115,7 +115,7 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
task.setUpdate_time(DateUtil.now());
ischBaseTaskService.update(task, new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, task.getTask_id()));
ischBaseTaskService.update(task, new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")));
}
@Override

View File

@@ -104,6 +104,7 @@ public class TwoLashTask extends AbstractAcsTask {
interaction_json.put("length", dao.get(0).getBox_length());
interaction_json.put("weight", dao.get(0).getBox_width());
interaction_json.put("height", dao.get(0).getBox_high());
interaction_json.put("barcode",dao.get(0).getBox_no());
// 捆扎模版
if (ObjectUtil.isEmpty(boxTypeDao.getLash_num())) {
throw new BadRequestException("捆扎模版不能为空!");

View File

@@ -38,6 +38,8 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 堆垛机点位至行架点位任务(出库)
@@ -57,158 +59,211 @@ public class TwoOutHeapTask extends AbstractAcsTask {
private MdPdStoragevehicleextMapper mdPdStoragevehicleextMapper;
private List<SchBaseTask> sendTask(List<SchBaseTask> taskArrAll) {
private List<JSONObject> sendTask(List<JSONObject> taskArrAll) {
/*
* 一个行架点位只允许一个任务正在执行或下发中
*/
// WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
// // 点位表
// WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
// 点位表
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
List<SchBaseTask> taskArr = new ArrayList<>();
ArrayList<JSONObject> taskArr = new ArrayList<>();
// 判断这两个点位是否有任务:如果没有则下发任务
// List<JSONObject> pointJson = wo_Task.query("handle_class = '" + THIS_CLASS + "' AND task_status IN ('05','06') AND is_delete = '0' ORDER BY point_code2")
// .getResultJSONArray(0).toJavaList(JSONObject.class);
List<JSONObject> pointJson = wo_Task.query("handle_class = '" + THIS_CLASS + "' AND task_status IN ('05','06') AND is_delete = '0' ORDER BY point_code2")
.getResultJSONArray(0).toJavaList(JSONObject.class);
List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS).eq(SchBaseTask::getIs_delete, "0")
.in(SchBaseTask::getTask_status, "05", "06").orderByAsc(SchBaseTask::getPoint_code2));
// 统计行架1、行架2 当前负载数量
long countHanger1 = pointJson.stream()
.filter(j -> IOSEnum.OUT_HANGER.code("行架位1").equals(j.getString("point_code2"))).count();
long countHanger2 = pointJson.stream()
.filter(j -> IOSEnum.OUT_HANGER.code("行架位2").equals(j.getString("point_code2"))).count();
// ==========2. 预分组待下发任务只遍历一次taskArrAll ==========
Map<String, List<JSONObject>> taskGroupMap = taskArrAll.stream()
.collect(Collectors.groupingBy(item -> item.getString("point_code2")));
List<JSONObject> exceptTaskList = taskGroupMap.getOrDefault(IOSEnum.EXCEP_OUT.code("异常出库口"), Collections.emptyList());
List<JSONObject> waitHanger1List = taskGroupMap.getOrDefault(IOSEnum.OUT_HANGER.code("行架位1"), Collections.emptyList());
List<JSONObject> waitHanger2List = taskGroupMap.getOrDefault(IOSEnum.OUT_HANGER.code("行架位2"), Collections.emptyList());
if (CollUtil.isEmpty(taskList)) {
// 下发两个的任务
SchBaseTask oneTask = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(oneTask)) {
taskArr.add(oneTask);
// ==========3. 优先下发异常出库任务限制最多1条点位独占 ==========
if (CollUtil.isNotEmpty(exceptTaskList)) {
// 只取第一条下发
taskArr.add(exceptTaskList.get(0));
}
// ==========4. 行架负载均衡分配核心逻辑 ==========
// 判断哪边负载更小
boolean hanger1Less = countHanger1 < countHanger2;
boolean hanger2Less = countHanger2 < countHanger1;
JSONObject selectTask = null;
String targetPoint = null;
if (hanger1Less) {
// 行架1负载低优先原生行架1任务
selectTask = waitHanger1List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
// 若无原生任务则把行架2任务 转移 → 行架1
if (ObjectUtil.isNull(selectTask)) {
selectTask = waitHanger2List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
}
SchBaseTask towTask = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位2")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(towTask)) {
taskArr.add(towTask);
} else if (hanger2Less) {
// 行架2负载低优先原生行架2任务
selectTask = waitHanger2List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
// 若无原生任务则把行架1任务 转移 → 行架2
if (ObjectUtil.isNull(selectTask)) {
selectTask = waitHanger1List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
}
} else {
// 哪里空了就下发哪里的
if (taskList.size() == 1) {
SchBaseTask schBaseTask = taskList.get(0);
if (schBaseTask.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位1"))) {
// 行架位1有任务则下发行架位2的任务
SchBaseTask towTask = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位2")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(towTask)) {
// 如果能找到去行架位2的任务则下发当前任务
taskArr.add(towTask);
} else {
// 如果不能找到去行架位2则找去行架位1的任务进行二次分配到行架位2
SchBaseTask twoJsonOne = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
if (twoJsonOne != null) {
// 进行二次分配
// 判断点位是否启用
// JSONObject jsonOne = pointTab.query("point_code = '" + IOSEnum.OUT_HANGER.code("行架位2") + "'")
// .uniqueResult(0);
SchBasePoint point = schPointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, IOSEnum.OUT_HANGER.code("行架位2")));
if (point.getIs_used().equals("1")) {
twoJsonOne.setPoint_code2(IOSEnum.OUT_HANGER.code("行架位2"));
schBaseTaskMapper.updateById(twoJsonOne);
taskArr.add(twoJsonOne);
}
}
}
} else {
// 行架位2有任务则下发行架位1的任务
SchBaseTask oneJson = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位1")))
.findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(oneJson)) {
// 如果能找到去行架位1的任务则下发当前任务
taskArr.add(oneJson);
} else {
// 如果不能找到去行架位1则找去行架位2的任务进行二次分配到行架位1
SchBaseTask twoJsonTwo = taskArrAll.stream()
.filter(row -> row.getPoint_code2().equals(IOSEnum.OUT_HANGER.code("行架位2")))
.findFirst().orElse(null);
if (twoJsonTwo!=null) {
// 进行二次分配
// JSONObject jsonTwo = pointTab.query("point_code = '" + IOSEnum.OUT_HANGER.code("行架位1") + "'")
// .uniqueResult(0);
SchBasePoint point = schPointMapper.selectOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, IOSEnum.OUT_HANGER.code("行架位1")));
if (point.getIs_used().equals("1")) {
twoJsonTwo.setPoint_code2(IOSEnum.OUT_HANGER.code("行架位1"));
schBaseTaskMapper.updateById(twoJsonTwo);
taskArr.add(twoJsonTwo);
}
}
}
}
// count相等默认优先行架1
selectTask = waitHanger1List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位1");
if (ObjectUtil.isNull(selectTask)) {
selectTask = waitHanger2List.stream().findFirst().orElse(null);
targetPoint = IOSEnum.OUT_HANGER.code("行架位2");
}
}
// ==========5. 处理选中任务,区分是否需要变更点位 ==========
if (ObjectUtil.isNotEmpty(selectTask)) {
String originalPoint = selectTask.getString("point_code2");
// 深拷贝禁止操作原始taskArrAll对象
JSONObject taskCopy = JSONObject.parseObject(selectTask.toJSONString());
if (!originalPoint.equals(targetPoint)) {
// 需要二次分配、变更点位
// 校验目标点位是否启用
JSONObject pointInfo = pointTab.query("point_code = '" + targetPoint + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(pointInfo) && "1".equals(pointInfo.getString("is_used"))) {
// 修改副本点位
taskCopy.put("point_code2", targetPoint);
// 更新数据库
wo_Task.update(taskCopy);
taskArr.add(taskCopy);
}
} else {
// 原生点位,无需修改,直接加入下发列表
taskArr.add(taskCopy);
}
}
return taskArr;
}
@Override
public List<AcsTaskDto> addTask() {
return Collections.emptyList();
/*
* 下发给ACS时需要特殊处理
*/
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
List<JSONObject> taskArrAll = wo_Task
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' ORDER BY create_time")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 是否下发多个AGV输送出库任务
String is_send_many = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_send_many").getValue();
// 是否异常出库口任务
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
List<JSONObject> taskArr;
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (is_send_many.equals(IOSEnum.IS_NOTANDYES.code(""))) {
// 只允许每个行架点位有一条任务
taskArr = sendTask(taskArrAll);
} else {
taskArr = taskArrAll;
}
} else {
taskArr = taskArrAll;
}
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < taskArr.size(); i++) {
JSONObject json = taskArr.get(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_code2"))
.vehicle_code2(json.getString("vehicle_code"))
.interaction_json(json.getJSONObject("request_param"))
.priority(json.getString("priority"))
.class_type(IOSEnum.ACS_TYPE.code("RGV输送任务"))
.dtl_type(String.valueOf(dtl_type))
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
.remark(json.getString("remark"))
.build();
if (json.getString("vehicle_code2").contains("YNX")) {
dto.setRoute_plan_code("two");
} else {
dto.setRoute_plan_code("normal");
}
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);
SchBaseTask schBaseTask = schBaseTaskMapper.selectOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id,task_id).lt(SchBaseTask::getTask_status, "07"));
if (ObjectUtil.isNotEmpty(schBaseTask)) {
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 (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + schBaseTask.getTask_code() + "已执行,不可取消");
if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
}
schBaseTask.setIs_delete("1");
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
JSONObject param = new JSONObject();
param.put("is_delete", "1");
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
JSONObject param = new JSONObject();
param.put("task_status", TaskStatusEnum.EXECUTING.getCode());
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
// 更新任务完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTaskMapper.updateById(schBaseTask);
JSONObject param = new JSONObject();
param.put("task_status", TaskStatusEnum.FINISHED.getCode());
param.put("update_time", DateUtil.now());
taskTab.update(param, "task_id = '" + task_id + "'");
// 如果是异常出库口则不需要下发行架任务
if (schBaseTask.getPoint_code2().equals(IOSEnum.EXCEP_OUT.code("异常出库口"))) {
MdPdStoragevehicleext mdPdStoragevehicleext = mdPdStoragevehicleextMapper.selectOne(new QueryWrapper<MdPdStoragevehicleext>().eq("storagevehicle_code",schBaseTask.getVehicle_code() ));
if (ObjectUtil.isNotEmpty(mdPdStoragevehicleext)) {
mdPdStoragevehicleext.setPcsn("");
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
if (jsonTask.getString("point_code2").equals(IOSEnum.EXCEP_OUT.code("异常出库口"))) {
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject ext_jo = veExtTab.query("pcsn = '" + jsonTask.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(ext_jo)) {
ext_jo.put("pcsn", "");
veExtTab.update(ext_jo);
}
} else {
// 下发桁架任务:捆扎
JSONObject jsonParam = new JSONObject();
jsonParam.put("device_code", schBaseTask.getPoint_code2());
jsonParam.put("vehicle_code", schBaseTask.getVehicle_code());
jsonParam.put("task_group_id", schBaseTask.getTask_group_id());
jsonParam.put("device_code", jsonTask.getString("point_code2"));
jsonParam.put("vehicle_code", jsonTask.getString("vehicle_code"));
jsonParam.put("task_group_id", jsonTask.getString("task_group_id"));
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
bean1.createLashTask(jsonParam);
}
@@ -280,80 +335,49 @@ public class TwoOutHeapTask extends AbstractAcsTask {
}
@Transactional
public void sendTaskAcs(String groupTaskId, boolean retry) {
// WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
// List<JSONObject> taskArrAll = wo_Task
// .query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' ORDER BY create_time")
// .getResultJSONArray(0).toJavaList(JSONObject.class);
List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS)
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
.eq(SchBaseTask::getIs_delete, "0").orderByAsc(SchBaseTask::getCreate_time));
public void sendTaskAcs(String groupTaskId, boolean retry) { WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
List<JSONObject> taskArrAll = wo_Task
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' ORDER BY create_time")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 是否下发多个AGV输送出库任务
if (CollectionUtils.isEmpty(taskList)) {
if (CollectionUtils.isEmpty(taskArrAll)) {
return;
}
List<SchBaseTask> taskArr;
List<JSONObject> taskArr;
// 是否异常出库口任务
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code(""))) {
String is_send_many = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_send_many").getValue();
if (is_send_many.equals(IOSEnum.IS_NOTANDYES.code(""))) {
// 只允许每个行架点位有一条任务
taskArr = sendTask(taskList);
taskArr = sendTask(taskArrAll);
} else {
taskArr = taskList;
taskArr = taskArrAll;
}
} else {
taskArr = taskList;
taskArr = taskArrAll;
}
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < taskArr.size(); i++) {
// SchBaseTask schBaseTask = taskArr.get(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_code2"))
// .vehicle_code2(json.getString("vehicle_code"))
// .interaction_json(json.getJSONObject("request_param"))
// .priority(json.getString("priority"))
// .class_type(IOSEnum.ACS_TYPE.code("RGV输送任务"))
// .dtl_type(String.valueOf(dtl_type))
// .product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
// .remark(json.getString("remark"))
// .build();
SchBaseTask schBaseTask = taskArr.get(i);
char dtl_type = schBaseTask.getTask_type().charAt(schBaseTask.getTask_type().length() - 1);
// 处理request_param转换为JSONObject
JSONObject requestParamJson = null;
if (schBaseTask.getRequest_param() != null && !schBaseTask.getRequest_param().isEmpty()) {
requestParamJson = JSONObject.parseObject(schBaseTask.getRequest_param());
}
JSONObject json = taskArr.get(i);
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(schBaseTask.getTask_id())
.task_code(schBaseTask.getTask_code())
.task_type(schBaseTask.getAcs_task_type())
.start_device_code(schBaseTask.getPoint_code1())
.next_device_code(schBaseTask.getPoint_code2())
.vehicle_code(schBaseTask.getVehicle_code2())
.vehicle_code2(schBaseTask.getVehicle_code())
.interaction_json(requestParamJson)
.priority(schBaseTask.getPriority())
.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_code2"))
.vehicle_code2(json.getString("vehicle_code"))
.interaction_json(json.getJSONObject("request_param"))
.priority(json.getString("priority"))
.class_type(IOSEnum.ACS_TYPE.code("RGV输送任务"))
.dtl_type(String.valueOf(dtl_type))
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
.remark(schBaseTask.getRemark())
.remark(json.getString("remark"))
.build();
if (schBaseTask.getVehicle_code2().contains("A")) {
if (json.getString("vehicle_code2").contains("YNX")) {
dto.setRoute_plan_code("two");
} else {
dto.setRoute_plan_code("normal");

View File

@@ -254,9 +254,9 @@ public class MxOutTask extends AbstractAcsTask {
BeanUtils.copyProperties(schBaseTaskVo, task);
taskService.save(task);
//测试屏蔽下发acs
// if (isSend) {
// this.immediateNotifyAcs(null);
// }
if (isSend) {
this.immediateNotifyAcs(null);
}
return task.getTask_id();
}

View File

@@ -108,7 +108,7 @@ public class AutoMxZxTask {
schBaseTask.setPoint_code2(bstIvtBoxstacks.get(0).getStack_code());
taskService.updateById(schBaseTask);
//测试屏蔽下发acs
// this.immediateNotifyAcs(null);
// this.immediateNotifyAcs(null);
}
} else {

View File

@@ -209,9 +209,9 @@ public class DjqTask extends AbstractAcsTask {
taskService.save(task);
//如果目标点位没有空位先创建不下发
//测试屏蔽下发acs
// if (isSend) {
// this.immediateNotifyAcs(null);
// }
if (isSend) {
this.immediateNotifyAcs(null);
}
return task.getTask_id();
}

View File

@@ -253,9 +253,9 @@ public class ZxqTask extends AbstractAcsTask {
//测试屏蔽下发acs
// if (isSend) {
// this.immediateNotifyAcs(null);
// }
if (isSend) {
this.immediateNotifyAcs(null);
}
return task.getTask_id();
}

View File

@@ -79,7 +79,7 @@ public enum IOSEnum {
SECT_TYPE(MapOf.of("主存区", "00","暂存区","01","虚拟区","09")),
//库区
SECT_ID(MapOf.of("印尼主存区", "2026561243103498240")),
SECT_ID(MapOf.of("印尼主存区", "2071537527294136320")),
//库存变动类型
IVT_CHANGE(MapOf.of("加待入", "31","加库存","33","减待入","32","加冻结","11","减冻结","12","减库存","21")),
@@ -100,20 +100,29 @@ public enum IOSEnum {
// 出库 38 42 46
// 出库堆垛机点位
OUT_POINT(MapOf.of("1","CK2038", "2","CK2038", "3","CK2042", "4","CK2042" ,"5","CK2046",
"6","CK2046", "7","7", "8","8", "9","9", "10","10","1020","CK1020")),
OUT_POINT(MapOf.of("1","CK1116", "2","CK1116", "3","CK1112", "4","CK1112" ,"5","CK1108",
"6","CK1108", "7","CK1104", "8","CK1104", "9","9", "10","10")),
// 出库堆垛机点位
OUT_POINT2(MapOf.of("1","CK2037", "2","CK2037", "3","CK2041", "4","CK2041" ,"5","CK2045",
"6","CK2045", "7","7", "8","8", "9","9", "10","10","1020","CK1020")),
OUT_POINT2(MapOf.of("1","CK1116", "2","CK1116", "3","CK1112", "4","CK1112" ,"5","CK1108",
"6","CK1108", "7","CK1104", "8","CK1104", "9","9", "10","10")),
// 载具类型对应1楼拆叠盘点位
VEHICLE_TYPE_POINT(MapOf.of("1","RK1006", "2","RK1013")),
// 载具类型对应1楼入库扫码位
VEHICLE_TYPE_SCAN_POINT(MapOf.of("1","RK1005", "2","RK1012")),
VEHICLE_TYPE_OUT_POINT(MapOf.of("1","CK1142", "2","CK1140")),
// 出库发货等待点
OUT_FH_POINT(MapOf.of("1","B_FH01_0", "2","B_FH02_0", "3","B_FH03_0", "4","B_FH04_0" ,"5","B_FH05_0",
"6","B_FH06_0")),
// 行架点位
OUT_HANGER(MapOf.of("行架位1", "CK2013","行架位2", "CK2017")),
OUT_HANGER(MapOf.of("行架位1", "CK1134","行架位2", "CK1138")),
// 点位
POINT_CODE(MapOf.of("退货入库位", "THRKDJW1", "2020","CK2020", "2022","CK2022","木箱装箱开盒盖位","CK2024")),
POINT_CODE(MapOf.of("退货入库位", "KMXRKW2", "1125","CK1125", "1124","CK1124","木箱装箱开盒盖位","CK2024")),
//acs申请任务
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1"
@@ -135,7 +144,7 @@ public enum IOSEnum {
CHANGE_OUT(MapOf.of("换标出库口", "CK1020")),
// 下发acs任务类型明细
ACS_TYPE(MapOf.of("子卷装箱行架任务", "12","装箱入库行架任务", "13",
ACS_TYPE(MapOf.of("木箱入库行架任务", "12","装箱入库行架任务", "13",
"子卷下线行架任务", "16","退货入库行架任务", "14","RGV输送任务", "15",
"木箱堆叠行架任务", "17"
)),

View File

@@ -711,7 +711,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (CollUtil.isEmpty(taskList)) {
//测试屏蔽下发acs
// twoOutTask.immediateNotifyAcs(null);
twoOutTask.immediateNotifyAcs(null);
}
}
@@ -1676,11 +1676,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -1812,11 +1812,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());

View File

@@ -354,23 +354,23 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
attrParam.put("sect_id", jsonObject.getString("sect_id"));
attrParam.put("material_id", disDao.getMaterial_id());
attrParam.put("box_no", disDao.getBox_no());
// BstIvtBoxinfo boxDao = getBstIvtBoxinfo(whereJson);
// if (boxDao == null) {
// throw new BadRequestException("未找到该木箱信息!");
// }
// jsonObject.put("box_no", boxDao.getBox_no());
// jsonObject.put("vehicle_type", boxDao.getVehicle_type());
// attrParam.put("vehicle_type", boxDao.getVehicle_type());
BstIvtBoxinfo boxDao = getBstIvtBoxinfo(whereJson);
if (boxDao == null) {
throw new BadRequestException("未找到该木箱信息!");
}
jsonObject.put("box_no", boxDao.getBox_no());
jsonObject.put("vehicle_type", boxDao.getVehicle_type());
attrParam.put("vehicle_type", boxDao.getVehicle_type());
//根据木箱高度,判断入库仓位的高度
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = "3";
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1,2";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
attrParam.put("height", height);
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonObject.getString("sect_id")));
@@ -469,7 +469,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
jsonSend.put("vehicle_code2", jsonObject.getString("vehicle_code"));
JSONObject param = new JSONObject();
param.put("containerType", jsonObject.getString("vehicle_type"));
param.put("heightLevel", height);
param.put("heightLevel", height.split(",")[0]);
jsonSend.put("request_param", param.toString());
String task_id1 = this.setPoint(jsonSend);
// 下发任务

View File

@@ -163,7 +163,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
JSONObject jsonParam = new JSONObject();
jsonParam.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
@@ -217,26 +217,19 @@ public class InBoxManageServiceImpl implements InBoxManageService {
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("未查询到点位【" + whereJson.getString("point_code") + "】!");
}
String box_no = whereJson.getString("box_no");
String[] split = box_no.split(",");
String boxType = "";
int layer = whereJson.getIntValue("layer");
if (layer != split.length) {
throw new BadRequestException("扫描的木箱个数和选择的木箱层数不一致!");
}
Set<String> collect = Arrays.stream(split).collect(Collectors.toSet());
if (collect.size() != split.length) {
throw new BadRequestException("扫描的木箱条码不能相同");
}
if (split.length > 3) {
throw new BadRequestException("堆叠木箱最大不能超过3层");
}
// 校验是否有相同木箱号
List<String> strings = Arrays.asList(split);
int size = (int) strings.stream()
.distinct().count();
if (size != split.length) {
String boxType = "";
String up_box_no = whereJson.getString("up_box_no");
String down_box_no = whereJson.getString("down_box_no");
List<String> split = Arrays.asList(down_box_no,up_box_no);
if (StringUtils.isBlank(down_box_no)) {
throw new BadRequestException("下条码不能为空");
}
if (down_box_no.equals(up_box_no)) {
throw new BadRequestException("木箱号有相同,请重新扫码!");
}
//查询仓库是否存在相同木箱
@@ -247,8 +240,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
}
}
for (int i = 0; i < split.length; i++) {
String boxNO = split[i];
for (int i = 0; i < split.size(); i++) {
String boxNO = split.get(i);
JSONObject jo = new JSONObject();
jo.put("box_no", boxNO);
//调用MES接口插入或更新木箱信息
@@ -258,8 +251,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
}
}
for (int i = 0; i < split.length; i++) {
String boxNo = split[i];
for (int i = 0; i < split.size(); i++) {
String boxNo = split.get(i);
BstIvtBoxinfo boxinfo = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, boxNo));
@@ -278,7 +271,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, split[0])
.eq(BstIvtBoxinfo::getBox_no, split.get(0))
);
if (boxDao == null) {
throw new BadRequestException("木箱不存在!");
@@ -289,7 +282,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 判断入库叠盘位的 托盘类型是否相同、是否叠满
JSONObject device_jo = new JSONObject();
device_jo.put("device_code", "RK1004");
device_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
device_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK"));
JSONArray device_ja = new JSONArray();
@@ -301,19 +294,19 @@ public class InBoxManageServiceImpl implements InBoxManageService {
if (data.getIntValue("qty") == 0 && data.getIntValue("move") == 0) {
//生成空托盘出库任务
JSONObject apply_jo = new JSONObject();
apply_jo.put("device_code", "RK1004");
apply_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
apply_jo.put("type", "3");
apply_jo.put("container_type", vehicle_type);
acsToWmsService.applyTwo(apply_jo);
} else {
if (!data.getString("container_type").equals(vehicle_type)) {
if (data.getString("container_type").equals("0")) {
throw new BadRequestException("当前电气反馈的托盘类型为0请检查");
}
// if (data.getString("container_type").equals("0")) {
// throw new BadRequestException("当前电气反馈的托盘类型为0请检查");
// }
//给ACS下发拆叠盘位的空托盘入库信号并进行空托盘出库
JSONArray action_rows = new JSONArray();
JSONObject action_jo = new JSONObject();
action_jo.put("device_code", "RK1004");
action_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
action_jo.put("code", "to_command");
action_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK"));
action_jo.put("value", "4");
@@ -322,7 +315,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
//生成空托盘出库任务
JSONObject apply_jo = new JSONObject();
apply_jo.put("device_code", "RK1004");
apply_jo.put("device_code", IOSEnum.VEHICLE_TYPE_POINT.code(vehicle_type));
apply_jo.put("type", "3");
apply_jo.put("container_type", vehicle_type);
acsToWmsService.applyTwo(apply_jo);
@@ -332,15 +325,17 @@ public class InBoxManageServiceImpl implements InBoxManageService {
JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713");
taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", "RK1005");
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(vehicle_type));
taskParam.put("vehicle_code", whereJson.getString("box_no"));
JSONObject param = new JSONObject();
param.put("layer", whereJson.getString("layer"));
param.put("layer", split.size());
param.put("length", boxDao.getBox_length());
param.put("width", boxDao.getBox_width());
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
param.put("barcode", whereJson.getString("box_no"));
//新增逻辑 需要确认
param.put("type", "1");
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
@@ -351,7 +346,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
param.put("heightLevel", height);
taskParam.put("request_param", param.toString());
@@ -382,15 +377,18 @@ public class InBoxManageServiceImpl implements InBoxManageService {
JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713");
taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", "CK2005");
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(boxDao.getVehicle_type()));
taskParam.put("vehicle_code", whereJson.getString("box_no"));
//taskParam.put("vehicle_code2", whereJson.getString("box_no"));
JSONObject param = new JSONObject();
param.put("layer", whereJson.getString("layer"));
param.put("layer", "1");
// param.put("layer", whereJson.getString("layer"));
param.put("length", boxDao.getBox_length());
param.put("width", boxDao.getBox_width());
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
//新增逻辑 需要确认
param.put("type", "2");
param.put("barcode", whereJson.getString("box_no") + "-9");
//根据木箱高度,判断入库仓位的高度
@@ -403,7 +401,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
param.put("heightLevel", height);
taskParam.put("request_param", param.toString());
@@ -506,15 +504,18 @@ public class InBoxManageServiceImpl implements InBoxManageService {
JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713");
taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", IOSEnum.SPECIAL_POINTS.code("退货入库口"));
taskParam.put("next_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code("1"));
taskParam.put("vehicle_code", whereJson.getString("box_no"));
//taskParam.put("vehicle_code2", whereJson.getString("box_no"));
JSONObject param = new JSONObject();
param.put("layer", whereJson.getString("layer"));
param.put("layer", "1");
param.put("length", boxDao.getBox_length());
param.put("width", boxDao.getBox_width());
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
//新增逻辑 需要确认
param.put("type", "2");
String type = whereJson.getString("bill_type");
if (StrUtil.isEmpty(type)) {
throw new BadRequestException("入库类型不能为空!");
@@ -534,7 +535,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
param.put("heightLevel", height);
taskParam.put("request_param", param.toString());

View File

@@ -341,6 +341,8 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("印尼主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
jsonDiv.put("material_barcode", jsonObject.getString("material_barcode"));
jsonDiv.put("in_buss", IOSEnum.IS_NOTANDYES.code(""));
jsonDiv.put("move_block_num", jsonObject.getString("move_block_num"));
jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code"));
jsonDiv.put("vehicle_type", jsonObject.getString("vehicleType"));
iStIvtIostorinvService.divStruct(jsonDiv);

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
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.task.dao.SchBaseTask;
@@ -68,6 +69,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
@Override
@Transactional
public void inVehicle(JSONObject whereJson) {
whereJson.put("type", "3");
SchBasePoint schBasePoint = schBasePointMapper.selectOne(new QueryWrapper<SchBasePoint>().eq("point_code", whereJson.getString("device_code"))
.eq("is_delete", IOSEnum.IS_NOTANDYES.code(""))
.eq("is_used", IOSEnum.IS_NOTANDYES.code("")));
@@ -81,7 +83,11 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
jsonParam.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
jsonParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
jsonParam.put("vehicle_type", whereJson.getString("vehicle_type"));
if("2".equals(whereJson.getString("vehicle_type"))) {
jsonParam.put("move_block_num","3");
} else {
jsonParam.put("move_block_num","4");
}
JSONObject jsonAttr = getStruct(jsonParam);
if (ObjectUtil.isEmpty(jsonAttr)) {
@@ -92,12 +98,23 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010705");
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
if(IOSEnum.VEHICLE_TYPE_OUT_POINT.code(whereJson.getString("vehicle_type")).equals(whereJson.getString("device_code"))) {
jsonTaskParam.put("start_device_code", whereJson.getString("device_code"));
} else {
jsonTaskParam.put("start_device_code", IOSEnum.VEHICLE_TYPE_SCAN_POINT.code(whereJson.getString("vehicle_type")));
}
jsonTaskParam.put("next_device_code", jsonAttr.getString("struct_code"));
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("containerType", whereJson.getString("vehicle_type"));
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
param.put("heightLevel", whereJson.getString("heightLevel"));
if(StringUtils.isBlank(whereJson.getString("heightLevel"))
&& !IOSEnum.VEHICLE_TYPE_OUT_POINT.code(whereJson.getString("vehicle_type")).equals(whereJson.getString("device_code"))){
throw new BadRequestException("异常");
}
param.put("type", whereJson.getString("type"));
//0表示为空托盘
jsonTaskParam.put("request_param", param.toString());
@@ -105,7 +122,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
taskBean.createTask(jsonTaskParam);
//测试屏蔽下发acs
// taskBean.immediateNotifyAcs(null);
taskBean.immediateNotifyAcs(null);
// 锁定终点
StIvtStructattr stIvtStructattr = stIvtStructattrMapper.selectOne(new QueryWrapper<StIvtStructattr>().lambda().eq(StIvtStructattr::getStruct_code, jsonAttr.getString("struct_code")));

View File

@@ -162,6 +162,7 @@ public class LashManageServiceImpl implements LashManageService {
// 桁架任务终点
String end_point;
// todo 检查一下这个堆叠的代码逻辑是否正常
// 判断是否有相同订单号、木箱规格的木箱
List<JSONObject> likeBoxList = pointDaoList.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getString("box_length")) &&
@@ -189,11 +190,11 @@ public class LashManageServiceImpl implements LashManageService {
jsonPoint.put("vehicle_code", "");
is_move = IOSEnum.IS_NOTANDYES.code("");
// 判断是否是2020工位如果是则需要判断2022工位上后续是否有堆叠的木箱,如果没有则强制离开
if (jsonPoint.getString("point_code").equals(IOSEnum.POINT_CODE.code("2020"))) {
//判断工位上后续是否有堆叠的木箱,如果没有则强制离开
//判断是否是1124工位如果是则需要判断1125工位上后续是否有堆叠的木箱如果没有则强制离开
if (jsonPoint.getString("point_code").equals(IOSEnum.POINT_CODE.code("1124"))) {
checkMove();
}
}
end_point = jsonPoint.getString("point_code");
schBasePointMapper.updateById(JSON.parseObject(jsonPoint.toString(), SchBasePoint.class));
@@ -265,7 +266,7 @@ public class LashManageServiceImpl implements LashManageService {
twoLashTask.createTask(jsonTaskParam);
//测试屏蔽下发acs
// twoLashTask.immediateNotifyAcs(null);
twoLashTask.immediateNotifyAcs(null);
}
@Override
@@ -482,22 +483,22 @@ public class LashManageServiceImpl implements LashManageService {
}
/**
* 校验2022捆扎位是否可以强制离开
* 校验1125捆扎位是否可以强制离开
*/
private void checkMove() {
// 判断2022工位是否有有货
// 判断1125工位是否有有货
SchBasePoint pointDao = schBasePointMapper.selectOne(
new QueryWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, IOSEnum.POINT_CODE.code("2022"))
.eq(SchBasePoint::getPoint_code, IOSEnum.POINT_CODE.code("1125"))
);
if (ObjectUtil.isNotEmpty(pointDao.getVehicle_code()) && pointDao.getVehicle_qty().intValue() == 1) {
// 判断是否还有去2022工位的行架任务
// 判断是否还有去1125工位的行架任务
List<SchBaseTask> taskList = ischBaseTaskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getTask_type, TASKEnum.LASH_TYPE.code("捆扎桁架任务"))
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.eq(SchBaseTask::getPoint_code2, IOSEnum.POINT_CODE.code("2022"))
.eq(SchBaseTask::getPoint_code2, IOSEnum.POINT_CODE.code("1125"))
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
);
@@ -506,7 +507,7 @@ public class LashManageServiceImpl implements LashManageService {
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);
JSONArray action_rows = new JSONArray();
JSONObject action_jo = new JSONObject();
action_jo.put("device_code", IOSEnum.POINT_CODE.code("2022"));
action_jo.put("device_code", IOSEnum.POINT_CODE.code("1125"));
action_jo.put("code", "to_command");
action_jo.put("product_area", "BLK");
action_jo.put("value", "26");

View File

@@ -474,11 +474,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -654,11 +654,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -788,11 +788,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);
@@ -903,11 +903,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1,2,3";
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2,3";
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
moveParam.put("height", height);

View File

@@ -121,7 +121,7 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
//测试屏蔽下发acs
// taskBean.immediateNotifyAcs(null);
taskBean.immediateNotifyAcs(null);
// 锁定起点

View File

@@ -353,6 +353,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
StructattrQuerry structattrQuerry2 = new StructattrQuerry();
structattrQuerry2.setBlock_num(structattrQuerry.getBlock_num());
structattrQuerry2.setSect_id(structattrQuerry.getSect_id());
structattrQuerry2.setHeight(structattrQuerry.getHeight());
// 查询此巷道的所有仓位
List<StIvtStructattr> stIvtStructattrs = stIvtStructattrMapper.getallStruct(structattrQuerry2);

View File

@@ -17,7 +17,7 @@
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
AND attr.storagevehicle_type = #{param.vehicle_type}
</if>
<if test="param.not_in_block_num != '' and param.not_in_block_num != null ">
AND attr.block_num != #{param.block_num}
@@ -29,7 +29,7 @@
</foreach>
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
<foreach collection="param.height" open="(" close=")" separator="," item="height">
#{height}
</foreach>
group by attr.block_num
@@ -151,11 +151,11 @@
AND attr.sect_id = #{param.sect_id}
AND attr.zdepth = '2'
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
AND attr.storagevehicle_type = #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
<foreach collection="param.height" open="(" close=")" separator="," item="height">
#{height}
</foreach>
@@ -211,10 +211,10 @@
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
AND attr.storagevehicle_type = #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
<foreach collection="param.height" open="(" close=")" separator="," item="height">
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
@@ -247,11 +247,11 @@
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
AND attr.storagevehicle_type = #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
<foreach collection="param.height" open="(" close=")" separator="," item="height">
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">

View File

@@ -0,0 +1,65 @@
package org.nl.common;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 表格分页数据对象
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
public class PdaTableDataInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 总记录数
*/
private long totalElements;
/**
* 列表数据
*/
private List<T> data;
/**
* 消息状态码
*/
private int code;
/**
* 消息内容
*/
private String msg;
/**
* 分页
*
* @param list 列表数据
* @param total 总记录数
*/
public PdaTableDataInfo(List<T> list, long total) {
this.data = list;
this.totalElements = total;
}
public static <T> PdaTableDataInfo<T> pdaBuild(List<T> list) {
PdaTableDataInfo<T> rspData = new PdaTableDataInfo<>();
rspData.setCode(HttpStatus.HTTP_OK);
rspData.setMsg("查询成功");
rspData.setData(list);
rspData.setTotalElements(list.size());
return rspData;
}
}

View File

@@ -122,7 +122,8 @@ public class LogAspect {
if (ex instanceof BadRequestException){
throw ex;
}else {
throw new BadRequestException("系统繁忙,请联系管理员确认,稍后再试");
throw ex;
//throw new BadRequestException("系统繁忙,请联系管理员确认,稍后再试");
}
} finally {
log.info("[--response--][请求接口:{} 执行结束][耗时:{}s]", url, (System.currentTimeMillis() - comming) / 1000);

View File

@@ -2,6 +2,8 @@ package org.nl.system.controller.dict;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.PdaTableDataInfo;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.logging.annotation.Log;
@@ -87,6 +89,14 @@ public class SysDictController {
return new ResponseEntity<>(TableDataInfo.build(dictService.queryDetailsPost(code)), HttpStatus.OK);
}
@PostMapping("/dictDetail/pdaPost")
public ResponseEntity<Object> queryDetailsPdaPost(@RequestBody JSONObject jsonData) {
if(StringUtils.isNotBlank(jsonData.getString("code"))) {
return new ResponseEntity<>(PdaTableDataInfo.pdaBuild(dictService.queryDetailsPdaPost(jsonData.getString("code"))), HttpStatus.OK);
} else {
return new ResponseEntity<>(PdaTableDataInfo.pdaBuild(null), HttpStatus.OK);
}
}
@GetMapping(value = "/dictDetail/map")
public ResponseEntity<Object> getDictDetailMaps(@RequestParam String dictName) {

View File

@@ -1,5 +1,6 @@
package org.nl.system.service.dict;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
@@ -103,5 +104,12 @@ public interface ISysDictService extends IService<Dict> {
*/
List<Dict> queryDetailsPost(String code);
/**
* 根据code获取字典数据
* @param code
* @return
*/
List<JSONObject> queryDetailsPdaPost(String code);
List<SelectVo> getInvTypes();
}

View File

@@ -3,6 +3,8 @@ package org.nl.system.service.dict.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* <p>
@@ -220,6 +223,25 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
return sysDictMapper.selectList(lam);
}
@Override
public List<JSONObject> queryDetailsPdaPost(String code) {
LambdaQueryWrapper<Dict> lam = new LambdaQueryWrapper<>();
lam.eq(Dict::getCode, code)
.isNotNull(Dict::getLabel)
.ne(Dict::getLabel, "")
.orderBy(true, true, Dict::getDict_sort);
List<Dict> dictList = sysDictMapper.selectList(lam);
return dictList.stream()
.map(dict -> {
JSONObject json = new JSONObject();
json.put("text", dict.getLabel());
json.put("value", dict.getValue());
// 如需其他字段可继续put
return json;
})
.collect(Collectors.toList());
}
@Override
public List<SelectVo> getInvTypes() {
return sysDictMapper.getInvTypes();

View File

@@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.regexp.internal.RE;
import org.nl.b_lms.sch.tasks.slitter.util.MdmDescriptionParseUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -59,6 +60,7 @@ import org.nl.common.enums.SpecEnum;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
@@ -197,6 +199,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private BoxSSXTask boxSSXTask;
@Autowired
private RedisUtils redisUtils;
/**
* task_id任务标识
@@ -1305,6 +1310,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (CollectionUtils.isEmpty(errorMsg)) {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
whereJson.put("material_barcode",containers);
if(whereJson.getString("vehicle_code").startsWith("YNX")) {
whereJson.put("move_block_num", "3");
} else if(whereJson.getString("vehicle_code").startsWith("YNY")) {
whereJson.put("move_block_num", "4");
}
inBussManageService.inTask(whereJson);
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK, null, Boolean.TRUE, null, containers);
} else {
@@ -1322,9 +1332,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonTaskParam.put("vehicle_code", jsonObject.getString("box_no"));
jsonTaskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
JSONObject request_param = new JSONObject();
if (whereJson.getString("vehicle_code").startsWith("A")) {
if (whereJson.getString("vehicle_code").startsWith("YNX")) {
request_param.put("containerType", "2");
} else if (whereJson.getString("vehicle_code").startsWith("B")) {
} else if (whereJson.getString("vehicle_code").startsWith("YNY")) {
request_param.put("containerType", "1");
} else {
throw new BadRequestException("托盘号有误,无法找到对应的托盘类型!");
@@ -1343,7 +1353,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
// 2-空盘入库
whereJson.put("vehicle_type", whereJson.getString("container_type"));
whereJson.put("heightLevel", redisUtils.get(whereJson.getString("vehicle_code")+"InVehicleInHeightLevel"));
inVehicleManageService.inVehicle(whereJson);
redisUtils.del(whereJson.getString("vehicle_code")+"InVehicleInHeightLevel");
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘出库"))) {
// 3-空盘出库
if (ObjectUtil.isEmpty(whereJson.getString("container_type"))) {
@@ -1430,6 +1442,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
mdPdStoragevehicleext.setUpdate_time(DateUtil.now());
mdPdStoragevehicleextMapper.updateById(mdPdStoragevehicleext);
}
//测试,后面改成
if(whereJson.getString("vehicle_code").startsWith("YNX")) {
whereJson.put("move_block_num", "3");
} else if(whereJson.getString("vehicle_code").startsWith("YNY")) {
whereJson.put("move_block_num", "4");
}
whereJson.put("material_barcode", material_barcodes);
inBussManageService.inTask(whereJson);
@@ -1452,6 +1470,26 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
boxSSXTask.createTask(jsonParam);
}
else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("退货异常申请行架对接位至NG位"))) {
//校验
List<PdmBiSubpackagerelation> pdmBiSubpackagerelations = pdmBiSubpackagerelationMapper.selectList(new QueryWrapper<PdmBiSubpackagerelation>().eq("package_box_sn", whereJson.getString("material_barcode")).eq("status", "0"));
if (ObjectUtil.isEmpty(pdmBiSubpackagerelations)){
throw new BadRequestException("未查询到子卷包装信息!");
}
MdPdStorageVehicleInfo mdPdStorageVehicleInfo = mdStorageVehicleInfoMapper.selectOne(new QueryWrapper<MdPdStorageVehicleInfo>().eq("storagevehicle_code", whereJson.getString("vehicle_code")));
if (ObjectUtil.isEmpty(mdPdStorageVehicleInfo)) {
throw new BadRequestException("载具不存在!");
}
JSONObject jsonParam = new JSONObject();
jsonParam.put("start_device_code",whereJson.getString("device_code"));
jsonParam.put("next_device_code",IOSEnum.POINT_CODE.code("木箱装箱开盒盖位"));
jsonParam.put("vehicle_code2",mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("vehicle_code",whereJson.getString("material_barcode"));
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
boxSSXTask.createTask(jsonParam);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功!");
@@ -1896,7 +1934,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("boxLength", boxNo.getBox_length());
@@ -1971,7 +2009,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
throw new BadRequestException("高度超高,无法入库");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("boxLength", boxDao.getBox_length());

View File

@@ -54,7 +54,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "";
url = url + "/sap/center/lms/004";
url = url + "/sap/center/YNLMS/004";
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
//.header("sap-client", sap_client)
@@ -71,13 +71,13 @@ public class LmsToSapServiceImpl implements LmsToSapService {
} catch (Exception e) {
// 记录失败日志
OutboundApiLogger.logFail("sap", "/sap/center/lms/004", "LMS回传SAP交货单",
OutboundApiLogger.logFail("sap", "/sap/center/YNLMS/004", "LMS回传SAP交货单",
url, "POST", JSONUtil.toJsonStr(jo), e.getMessage(),
System.currentTimeMillis() - startTime);
throw new BadRequestException("SAP提示错误" + e.getMessage());
}
// 记录成功日志
OutboundApiLogger.logSuccess("sap", "/sap/center/lms/004", "LMS回传SAP交货单",
OutboundApiLogger.logSuccess("sap", "/sap/center/YNLMS/004", "LMS回传SAP交货单",
url, "POST", JSONUtil.toJsonStr(jo), result.toString(), 200,
System.currentTimeMillis() - startTime);
return result;
@@ -123,7 +123,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue();
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "/sap/center/lms/005";
String api = "/sap/center/YNLMS/005";
url = url + api;
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
@@ -140,12 +140,12 @@ public class LmsToSapServiceImpl implements LmsToSapService {
} catch (Exception e) {
// 记录失败日志
OutboundApiLogger.logFail("sap", "/sap/center/lms/005", "LMS移库接口回传",
OutboundApiLogger.logFail("sap", "/sap/center/YNLMS/005", "LMS移库接口回传",
url, "POST", JSONUtil.toJsonStr(jo), e.getMessage(),
System.currentTimeMillis() - startTime);
throw new BadRequestException("SAP提示错误" + e.getMessage());
}
OutboundApiLogger.logSuccess("sap", "/sap/center/lms/005", "LMS移库接口回传",
OutboundApiLogger.logSuccess("sap", "/sap/center/YNLMS/005", "LMS移库接口回传",
url, "POST", JSONUtil.toJsonStr(jo), result.toString(), 200,
System.currentTimeMillis() - startTime);
return result;
@@ -171,7 +171,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue();
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "/sap/center/lms/007";
String api = "/sap/center/YNLMS/007";
url = url + api;
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
@@ -188,13 +188,13 @@ public class LmsToSapServiceImpl implements LmsToSapService {
} catch (Exception e) {
// 记录失败日志
OutboundApiLogger.logFail("sap", "/sap/center/lms/007", "LMS调拨出库接口回传",
OutboundApiLogger.logFail("sap", "/sap/center/YNLMS/007", "LMS调拨出库接口回传",
url, "POST", JSONUtil.toJsonStr(jo), e.getMessage(),
System.currentTimeMillis() - startTime);
throw new BadRequestException("SAP提示错误" + e.getMessage());
}
// 记录成功日志
OutboundApiLogger.logSuccess("sap", "/sap/center/lms/007", "LMS调拨出库接口回传",
OutboundApiLogger.logSuccess("sap", "/sap/center/YNLMS/007", "LMS调拨出库接口回传",
url, "POST", JSONUtil.toJsonStr(jo), result.toString(), 200,
System.currentTimeMillis() - startTime);
return result;
@@ -220,7 +220,7 @@ public class LmsToSapServiceImpl implements LmsToSapService {
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_URL").getValue();
String token = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_TOKEN").getValue();
String sap_client = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("SAP_CLIENT").getValue();
String api = "/sap/center/lms/001";
String api = "/sap/center/YNLMS/001";
url = url + api;
try {
String resultMsg = HttpRequest.post(url).header("TOKEN", token)
@@ -237,13 +237,13 @@ public class LmsToSapServiceImpl implements LmsToSapService {
} catch (Exception e) {
// 记录失败日志
OutboundApiLogger.logFail("sap", "/sap/center/lms/001", "LMS成品报废明细回传",
OutboundApiLogger.logFail("sap", "/sap/center/YNLMS/001", "LMS成品报废明细回传",
url, "POST", JSONUtil.toJsonStr(jo), e.getMessage(),
System.currentTimeMillis() - startTime);
throw new BadRequestException("SAP提示错误" + e.getMessage());
}
// 记录成功日志
OutboundApiLogger.logSuccess("sap", "/sap/center/lms/001", "LMS成品报废明细回传",
OutboundApiLogger.logSuccess("sap", "/sap/center/YNLMS/001", "LMS成品报废明细回传",
url, "POST", JSONUtil.toJsonStr(jo), result.toString(), 200,
System.currentTimeMillis() - startTime);
return result;

View File

@@ -26,7 +26,7 @@ public enum RegionTypeEnum {
TWO_KZ01("23", "二期捆扎区", "1754774130626007040"),
TWO_FH01("24", "二期发货区", "1759453285649092608"),
TWO_OUT01("25", "二期出库区", "1760141408548818944"),
TWO_BZC01("26", "二期主存区", "1748219897940414464"),
TWO_BZC01("26", "主存区", "2071537527294136320"),
B1_HKZC("27", "B1烘烤暂存区", "1809497203715215360"),
B2_HKZC("28", "B2烘烤暂存区", "1766012860535803904");

View File

@@ -67,7 +67,7 @@ public class HandMoveStorAcsTask extends AbstractAcsTask {
if (json.getString("task_type").equals("010709")) {
dto.setVehicle_code(json.getString("vehicle_code2"));
if (json.getString("vehicle_code2").contains("A")) {
if (json.getString("vehicle_code2").contains("YNX")) {
dto.setRoute_plan_code("two");
} else {
dto.setRoute_plan_code("normal");

View File

@@ -20,10 +20,10 @@ public class TaskUtil {
* 一楼立库获取托盘路由方案two大托盘normal小托盘
*/
public static String getRoutePlanCode(String location) {
if (location.contains("L1-") || location.contains("L2-") || location.contains("L3-") || location.contains("L4-")) {
return "two";
} else {
if (location.contains("L12-") || location.contains("L13-") || location.contains("L14-") || location.contains("L15-")) {
return "normal";
} else {
return "two";
}
}

View File

@@ -291,6 +291,9 @@ export default {
parent_class_code: 'vehicle_type'
}
crudClassstandard.getClassType(param).then(res => {
console.log(res)
console.log(res)
console.log(res)
const data = res.content
this.buildTree(data)
this.classes1 = data

View File

@@ -407,11 +407,8 @@ export default {
this.sects = res.content
})
var area_type = '1585167595403874304'
var area_type = '1791031105286180864'
if (this.storId.toString() === '1582991156504039455') {
area_type = '1791031105286180864'
}
crudPoint.getPoint({ 'area_type': area_type }).then(res => {
this.pointList = res
})