Browse Source

Opt:解决代码冲突

master
张东升 1 week ago
parent
commit
608d247ae6
  1. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/StockingIvtServiceImpl.java
  2. 184
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java

2
lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/StockingIvtServiceImpl.java

@ -19,13 +19,13 @@ import org.nl.b_lms.sch.tasks.slitter.InstorStockAgvTask;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant; import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum; import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.b_lms.storage_manage.md.service.MaterialbaseService;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils; import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper; import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.wms.basedata.master.service.MaterialbaseService;
import org.nl.wms.basedata.master.service.dto.MaterialbaseDto; import org.nl.wms.basedata.master.service.dto.MaterialbaseDto;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

184
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java

@ -5,13 +5,12 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpStatus;
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.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
@ -47,7 +46,6 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils; import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.dao.Param;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
@ -57,7 +55,6 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -127,8 +124,6 @@ public class SlitterServiceImpl implements SlitterService {
private UpShaftTrussTask upShaftTrussTask; private UpShaftTrussTask upShaftTrussTask;
@Autowired @Autowired
private ReturnShaftAgvTask returnShaftAgvTask; private ReturnShaftAgvTask returnShaftAgvTask;
@Autowired
private ISysNoticeService noticeService;
@Override @Override
@ -154,10 +149,6 @@ public class SlitterServiceImpl implements SlitterService {
List<String> tubes = Stream.of(point.getTube_code1(), point.getTube_code2()) List<String> tubes = Stream.of(point.getTube_code1(), point.getTube_code2())
.filter(ObjectUtil::isNotEmpty) .filter(ObjectUtil::isNotEmpty)
.collect(Collectors.toList()); .collect(Collectors.toList());
// 判断是否存在纸管(查找三点位是否有所需的管芯)
// List<MdPbPapervehicle> list = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
// .in(MdPbPapervehicle::getMaterial_code, tubes)
// .gt(MdPbPapervehicle::getQty, 0));
List<GxQtyDto> gxQtyList = papervehicleService.getGxPoints(point.getPoint_location(), tubes); List<GxQtyDto> gxQtyList = papervehicleService.getGxPoints(point.getPoint_location(), tubes);
// point.getTube_code1() 编码 , getTube_name1() : 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650 // point.getTube_code1() 编码 , getTube_name1() : 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650
res.put("device_code", deviceCode); res.put("device_code", deviceCode);
@ -165,11 +156,6 @@ public class SlitterServiceImpl implements SlitterService {
if ("1".equals(autoSendEmpty.getValue()) && gxQtyList.size() == 0) { if ("1".equals(autoSendEmpty.getValue()) && gxQtyList.size() == 0) {
con.put("is_bushing", SlitterConstant.TO_SHAFT_INFO_97); con.put("is_bushing", SlitterConstant.TO_SHAFT_INFO_97);
} else { } else {
// int sum = list.stream()
// .mapToInt(e -> e.getQty().intValue())
// .sum();
// // 需要求和判断当前数量和所需数
// con.put("is_bushing", sum >= tubes.size() ? SlitterConstant.SLITTER_YES : SlitterConstant.SLITTER_NO);
List<GxQtyDto> hasNeedPoint = gxQtyList.stream() List<GxQtyDto> hasNeedPoint = gxQtyList.stream()
.filter(gx -> "1".equals(gx.getPoint_type()) && gx.getQty() >= tubes.size()) .filter(gx -> "1".equals(gx.getPoint_type()) && gx.getQty() >= tubes.size())
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -370,8 +356,6 @@ public class SlitterServiceImpl implements SlitterService {
} }
if (ObjectUtil.isEmpty(cutPoint)) { if (ObjectUtil.isEmpty(cutPoint)) {
// 获取一个空位 (上下区域) // 获取一个空位 (上下区域)
// List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus(
// "1", "1", startPoint.getPoint_location(), "1");
List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( List<BstIvtCutpointivt> emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus(
"1", "1", startPoint.getPoint_location(), "1"); "1", "1", startPoint.getPoint_location(), "1");
if (emptyNotTaskPoint.size() == 0) { if (emptyNotTaskPoint.size() == 0) {
@ -444,12 +428,6 @@ public class SlitterServiceImpl implements SlitterService {
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
// 临时存放气涨轴尺寸 // 临时存放气涨轴尺寸
startPoint.setQzz_size(qzzSize); startPoint.setQzz_size(qzzSize);
// 获取等待点(放货点)
// 获取空位
// List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint);
// if (shafttubeivts.size() == 0) {
// throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位");
// }
BstIvtShafttubeivt putWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>() BstIvtShafttubeivt putWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
.eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location()) .eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location())
.eq(BstIvtShafttubeivt::getPoint_type, "8")); .eq(BstIvtShafttubeivt::getPoint_type, "8"));
@ -482,6 +460,7 @@ public class SlitterServiceImpl implements SlitterService {
public JSONObject acsCallShaftFromCache(JSONObject param) { public JSONObject acsCallShaftFromCache(JSONObject param) {
log.info("ACS申请从气涨轴暂存位呼叫气胀轴的输入参数为:{}", param); log.info("ACS申请从气涨轴暂存位呼叫气胀轴的输入参数为:{}", param);
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
//拔轴设备点位
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String qzzSize = param.getString("size"); String qzzSize = param.getString("size");
// 判断是否有未完成的任务 // 判断是否有未完成的任务
@ -492,19 +471,13 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!"); throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!");
} }
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
// 获取气涨轴缓存没有任务的点位
// List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize,
// startPoint.getQzz_generation(), startPoint.getPoint_location());
// if (shafttubeivts.size() == 0) {
// throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位");
// }
BstIvtShafttubeivt pickWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>() BstIvtShafttubeivt pickWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
.eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location()) .eq(BstIvtShafttubeivt::getPoint_location, startPoint.getPoint_location())
.eq(BstIvtShafttubeivt::getPoint_type, "7")); .eq(BstIvtShafttubeivt::getPoint_type, "7"));
if (ObjectUtil.isEmpty(pickWaitPoint)) { if (ObjectUtil.isEmpty(pickWaitPoint)) {
throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的等待点位"); throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的等待点位");
} }
// BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
taskParam.put("point_code1", pickWaitPoint.getPoint_code()); taskParam.put("point_code1", pickWaitPoint.getPoint_code());
taskParam.put("point_code2", startPoint.getPoint_code()); taskParam.put("point_code2", startPoint.getPoint_code());
@ -903,11 +876,14 @@ public class SlitterServiceImpl implements SlitterService {
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK); res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功!"); res.put("message", "请求成功!");
// param: device_code row_num
if (ObjectUtil.isEmpty(param.getString("row_num"))) { if (ObjectUtil.isEmpty(param.getString("row_num"))) {
log.error("设备:{},排数不能为空", param.getString("device_code")); log.error("设备:{},排数不能为空", param.getString("device_code"));
throw new BadRequestException("设备:" + param.getString("device_code") + "排数不能为空"); throw new BadRequestException("设备:" + param.getString("device_code") + "排数不能为空");
} }
if (ObjectUtil.isEmpty(param.getString("col_num"))) {
log.error("设备:{},列数不能为空", param.getString("device_code"));
throw new BadRequestException("设备:" + param.getString("device_code") + "列数不能为空");
}
BstIvtStockingivt device = stockingivtService.getPointByCode(param.getString("device_code"), false); BstIvtStockingivt device = stockingivtService.getPointByCode(param.getString("device_code"), false);
String vehicleCode = device.getVehicle_code(); String vehicleCode = device.getVehicle_code();
if (ObjectUtil.isEmpty(vehicleCode)) { if (ObjectUtil.isEmpty(vehicleCode)) {
@ -923,38 +899,16 @@ public class SlitterServiceImpl implements SlitterService {
} }
MdPbPapervehicle mdPbPapervehicle = papervehicleService.getOne(new LambdaQueryWrapper<MdPbPapervehicle>() MdPbPapervehicle mdPbPapervehicle = papervehicleService.getOne(new LambdaQueryWrapper<MdPbPapervehicle>()
.eq(MdPbPapervehicle::getVehicle_code, vehicleCode) .eq(MdPbPapervehicle::getVehicle_code, vehicleCode)
.eq(MdPbPapervehicle::getRow_num, param.getString("row_num"))); .eq(MdPbPapervehicle::getRow_num, param.getString("row_num"))
.eq(MdPbPapervehicle::getCol_num, param.getString("col_num")));
if (ObjectUtil.isEmpty(mdPbPapervehicle)) { if (ObjectUtil.isEmpty(mdPbPapervehicle)) {
log.warn("托盘:" + vehicleCode + "第" + param.getString("row_num") + "行没数据!"); log.warn("托盘:" + vehicleCode + "第" + param.getString("row_num")+"-"+param.getString("col_num") + "没数据!");
throw new BadRequestException("托盘:" + vehicleCode + "第" + param.getString("row_num") + "行没数据!"); throw new BadRequestException("托盘:" + vehicleCode + "第" + param.getString("row_num")+"-"+param.getString("col_num") + "行没数据!");
} }
log.debug("更新前" + vehicleCode + "第" + param.getString("row_num") + mdPbPapervehicle); log.debug("更新前" + vehicleCode + "数据:" + mdPbPapervehicle);
if (mdPbPapervehicle != null || mdPbPapervehicle.getQty().intValue() > 0) { if (mdPbPapervehicle != null || mdPbPapervehicle.getQty().intValue() > 0) {
//数量减一
mdPbPapervehicle.setQty(BigDecimal.valueOf(mdPbPapervehicle.getQty().intValue() - 1));
log.debug("更新后:" + vehicleCode + "第" + param.getString("row_num") + mdPbPapervehicle);
// 检查更新后的 qty 是否为 0,然后删除相应的记录
if (mdPbPapervehicle.getQty().intValue() <= 0) {
boolean remove = papervehicleService.removeById(mdPbPapervehicle); boolean remove = papervehicleService.removeById(mdPbPapervehicle);
log.debug("删除0结果:" + vehicleCode + ":" + remove); log.debug("删除0结果:" + vehicleCode + ":" + remove);
} else {
papervehicleService.update(mdPbPapervehicle);
}
// todo: 如果qty=0,创建AGV送空任务,(新的task_type)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
// if (remove) { // hint: 错误
// // 证明删除成功,创建任务搬走
// // 查找一个没有任务的空位
// List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask(device.getPoint_location(), "0");
// if (list.size() == 0) {
// noticeService.createNotice("管芯抓取备货区找不到空位置搬运",
// "管芯抓取点位[" + device.getPoint_name() + "]无法从备货区找到空位",
// NoticeTypeEnum.EXCEPTION.getCode());
// return res;
// }
// BstIvtStockingivt stockingivt = list.get(0);
// }
} }
return res; return res;
} }
@ -987,9 +941,14 @@ public class SlitterServiceImpl implements SlitterService {
if (taskList.size() > 0) { if (taskList.size() > 0) {
throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!"); throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!");
} }
BstIvtShafttubeivt shaftPoint = shafttubeivtService.getByPointCode(pointCode, false); BstIvtShafttubeivt shaftPoint = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
if (SlitterConstant.SLITTER_NO.equals(shaftPoint.getHave_qzz())) { .eq(BstIvtShafttubeivt::getPoint_code, pointCode)
throw new BadRequestException("点位不存在气胀轴信息,无需初始化!"); );
if (ObjectUtil.isEmpty(shaftPoint)) {
throw new BadRequestException("点位 [" + pointCode + "] 不存在!");
}
if (StrUtil.equals(shaftPoint.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode + "] 未启用,不允许操作!");
} }
if (SlitterConstant.SLITTER_YES.equals(isAgainTz)) { if (SlitterConstant.SLITTER_YES.equals(isAgainTz)) {
//2、把当前点位上子卷号对应的is_paper_ok改为1 //2、把当前点位上子卷号对应的is_paper_ok改为1
@ -1009,9 +968,11 @@ public class SlitterServiceImpl implements SlitterService {
shaftPoint.setTube_code2(""); shaftPoint.setTube_code2("");
shaftPoint.setTube_name1(""); shaftPoint.setTube_name1("");
shaftPoint.setTube_name2(""); shaftPoint.setTube_name2("");
shaftPoint.setPlan("");
shaftPoint.setContainer_name1(""); shaftPoint.setContainer_name1("");
shaftPoint.setContainer_name2(""); shaftPoint.setContainer_name2("");
shaftPoint.setQzz_size(""); shaftPoint.setQzz_size("");
shaftPoint.setQzz_generation("");
TaskUtils.updateOptMessageByBShaftPoint(shaftPoint); TaskUtils.updateOptMessageByBShaftPoint(shaftPoint);
shafttubeivtService.update(shaftPoint); shafttubeivtService.update(shaftPoint);
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
@ -1082,13 +1043,19 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!"); throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!");
} }
BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false);
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("点位 [" + pointCode + "] 不存在!");
}
if (StrUtil.equals(point.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode + "] 未启用,不允许操作!");
}
if (Objects.equals(point.getPoint_status(), "1")) { if (Objects.equals(point.getPoint_status(), "1")) {
// 如果是没货 // 如果是没货
throw new BadRequestException("点位:" + point.getPoint_code() + "检测无货,请确保任务执行完毕后触发!"); throw new BadRequestException("点位:" + point.getPoint_code() + "检测到无货,不允许操作!");
} }
if (ObjectUtil.equals(point.getPoint_status(), "2")) { if (ObjectUtil.equals(point.getPoint_status(), "2")) {
// 如果是没货 // 如果是没货
throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请确保下卷任务是否完毕后触发!"); throw new BadRequestException("点位:" + point.getPoint_code() + "检测到为空气胀轴,不允许操作!");
} }
if (ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { if (ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) {
throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码为空!"); throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码为空!");
@ -1106,9 +1073,7 @@ public class SlitterServiceImpl implements SlitterService {
} else { } else {
throw new BadRequestException("操作失败,点位[" + pointCode + "]无气胀轴信息,请先绑定子卷库存!"); throw new BadRequestException("操作失败,点位[" + pointCode + "]无气胀轴信息,请先绑定子卷库存!");
} }
// List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1", List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", point.getPoint_location(), "2");
// "1", "0", "2");
List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2");
if (areaEmptyNotTaskPoint.size() <= 1) { if (areaEmptyNotTaskPoint.size() <= 1) {
throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); throw new BadRequestException("请求搬运失败,内包间没有可存放位置!");
} }
@ -1161,6 +1126,14 @@ public class SlitterServiceImpl implements SlitterService {
log.info("手持清理分切暂存位参数:{}", param); log.info("手持清理分切暂存位参数:{}", param);
// param: point_code // param: point_code
String pointCode = param.getString("point_code"); String pointCode = param.getString("point_code");
if (ObjectUtil.isEmpty(pointCode)) {
throw new BadRequestException("分切暂存位不能为空!");
}
// 校验是否存在任务
List<SchBaseTask> taskList = taskService.checkHaveStartTask(pointCode);
if (taskList.size() > 0) {
throw new BadRequestException("操作失败,点位[" + pointCode + "]存在未完成的任务!");
}
RLock open = redissonClient.getLock(pointCode); RLock open = redissonClient.getLock(pointCode);
boolean openLock; boolean openLock;
try { try {
@ -1171,6 +1144,12 @@ public class SlitterServiceImpl implements SlitterService {
try { try {
if (openLock) { if (openLock) {
BstIvtCutpointivt agvCode = bcutpointivtService.getPintByTrussCode(pointCode, false); BstIvtCutpointivt agvCode = bcutpointivtService.getPintByTrussCode(pointCode, false);
if (ObjectUtil.isEmpty(agvCode)) {
throw new BadRequestException("操作失败,点位[" + pointCode + "]未找到对应的分切暂存架!");
}
if (StrUtil.equals(agvCode.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode + "] 未启用,不允许操作!");
}
if (agvCode.getTruss_point_code1().equals(pointCode)) { if (agvCode.getTruss_point_code1().equals(pointCode)) {
agvCode.setQzz_no1(""); agvCode.setQzz_no1("");
} }
@ -1244,6 +1223,9 @@ public class SlitterServiceImpl implements SlitterService {
if (ObjectUtil.isEmpty(containerName)) { if (ObjectUtil.isEmpty(containerName)) {
throw new BadRequestException("子卷号不能为空!"); throw new BadRequestException("子卷号不能为空!");
} }
if (ObjectUtil.isEmpty(pointCode1)) {
throw new BadRequestException("分切暂存位不能为空!");
}
List<String> collect = Arrays.stream(containerName.split(",")).collect(Collectors.toList()); List<String> collect = Arrays.stream(containerName.split(",")).collect(Collectors.toList());
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByContainerNames(collect); List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByContainerNames(collect);
if (plans.size() == 0) { if (plans.size() == 0) {
@ -1255,6 +1237,12 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!"); throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!");
} }
BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false); BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false);
if (ObjectUtil.isEmpty(pointCode)) {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]未找到对应的分切暂存架!");
}
if (StrUtil.equals(pointCode.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode1 + "] 未启用,不允许操作!");
}
PdmBiSlittingproductionplan demoPlan = plans.get(0); PdmBiSlittingproductionplan demoPlan = plans.get(0);
String resourceName = demoPlan.getResource_name(); String resourceName = demoPlan.getResource_name();
// 创建新的气胀轴编码 // 创建新的气胀轴编码
@ -1287,15 +1275,26 @@ public class SlitterServiceImpl implements SlitterService {
public JSONObject shaftMaintenanceInventory(JSONObject param) { public JSONObject shaftMaintenanceInventory(JSONObject param) {
log.info("手持维护气胀轴库库存:{}", param); log.info("手持维护气胀轴库库存:{}", param);
// param : point_code, type // param : point_code, type
BstIvtShafttubeivt shafttubeivt = new BstIvtShafttubeivt(); String point_code = param.getString("point_code");
if (ObjectUtil.isEmpty(point_code)) {
throw new BadRequestException("点位信息不能为空!");
}
BstIvtShafttubeivt point = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
.eq(BstIvtShafttubeivt::getPoint_code, param.getString("point_code"))
);
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("点位 [" + point_code + "] 不存在!");
}
if (StrUtil.equals(point.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + point_code + "] 未启用,不允许操作!");
}
if (SlitterConstant.SLITTER_YES.equals(param.getString("type"))) { if (SlitterConstant.SLITTER_YES.equals(param.getString("type"))) {
shafttubeivt.setHave_qzz(SlitterConstant.SLITTER_YES); point.setHave_qzz(SlitterConstant.SLITTER_YES);
} else { } else {
shafttubeivt.setHave_qzz(SlitterConstant.SLITTER_NO); point.setHave_qzz(SlitterConstant.SLITTER_NO);
} }
TaskUtils.updateOptMessageByBShaftPoint(shafttubeivt); TaskUtils.updateOptMessageByBShaftPoint(point);
shafttubeivtService.update(shafttubeivt, new LambdaQueryWrapper<BstIvtShafttubeivt>() shafttubeivtService.update(point);
.eq(BstIvtShafttubeivt::getPoint_code, param.getString("point_code")));
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("status", HttpStatus.HTTP_OK); res.put("status", HttpStatus.HTTP_OK);
res.put("message", "气胀轴库设置成功!"); res.put("message", "气胀轴库设置成功!");
@ -1309,7 +1308,10 @@ public class SlitterServiceImpl implements SlitterService {
String containerName = param.getString("container_name"); String containerName = param.getString("container_name");
String pointCode1 = param.getString("point_code"); String pointCode1 = param.getString("point_code");
if (ObjectUtil.isEmpty(containerName)) { if (ObjectUtil.isEmpty(containerName)) {
throw new BadRequestException("子卷号不能为空!"); throw new BadRequestException("待分切的子卷号不能为空!");
}
if (ObjectUtil.isEmpty(pointCode1)) {
throw new BadRequestException("分切暂存位不能为空!");
} }
List<String> collect = Arrays.stream(containerName.split(",")).collect(Collectors.toList()); List<String> collect = Arrays.stream(containerName.split(",")).collect(Collectors.toList());
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByContainerNames(collect); List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByContainerNames(collect);
@ -1322,6 +1324,12 @@ public class SlitterServiceImpl implements SlitterService {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!"); throw new BadRequestException("操作失败,点位[" + pointCode1 + "]存在未完成的任务!");
} }
BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false); BstIvtCutpointivt pointCode = bcutpointivtService.getPintByTrussCode(pointCode1, false);
if (ObjectUtil.isEmpty(pointCode)) {
throw new BadRequestException("操作失败,点位[" + pointCode1 + "]未找到对应的分切暂存架!");
}
if (StrUtil.equals(pointCode.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode1 + "] 未启用,不允许操作!");
}
PdmBiSlittingproductionplan demoPlan = plans.get(0); PdmBiSlittingproductionplan demoPlan = plans.get(0);
String resourceName = demoPlan.getResource_name(); String resourceName = demoPlan.getResource_name();
// 创建新的气胀轴编码 // 创建新的气胀轴编码
@ -1748,6 +1756,12 @@ public class SlitterServiceImpl implements SlitterService {
// param: point_code // param: point_code
String pointCode = param.getString("point_code"); String pointCode = param.getString("point_code");
BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false);
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("点位 [" + pointCode + "] 不存在!");
}
if (StrUtil.equals(point.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode + "] 未启用,不允许操作!");
}
if (!"3".equals(point.getPoint_type())) { if (!"3".equals(point.getPoint_type())) {
throw new BadRequestException("该点位不是分切对接位,无法创建任务!"); throw new BadRequestException("该点位不是分切对接位,无法创建任务!");
} }
@ -2021,9 +2035,6 @@ public class SlitterServiceImpl implements SlitterService {
int uRightLen = 0; int uRightLen = 0;
int dLeftLen = 0; int dLeftLen = 0;
int dRightLen = 0; int dRightLen = 0;
if (!area.startsWith("B")) {
throw new BadRequestException("该功能只对二期有用!");
}
// mes的设备号 // mes的设备号
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
// lms的设备号 // lms的设备号
@ -2394,8 +2405,19 @@ public class SlitterServiceImpl implements SlitterService {
String size1 = param.getString("size1"); String size1 = param.getString("size1");
//缓存B气胀轴规格 //缓存B气胀轴规格
String size2 = param.getString("size2"); String size2 = param.getString("size2");
if (ObjectUtil.isEmpty(pointCode)) {
throw new BadRequestException("点位信息不能为空!");
}
if (ObjectUtil.isEmpty(size1) && ObjectUtil.isEmpty(size2)) {
throw new BadRequestException("A点、B点气胀轴规格不能同时为空!");
}
BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false); BstIvtCutpointivt point = bcutpointivtService.getPintByAgvCode(pointCode, false);
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("点位 [" + pointCode + "] 不存在!");
}
if (StrUtil.equals(point.getIs_used(), SlitterConstant.SLITTER_NO)) {
throw new BadRequestException("点位 [" + pointCode + "] 未启用,不允许操作!");
}
// 校验是否存在行架任务 // 校验是否存在行架任务
Boolean haveTaskByZcPoint = taskService.checkHaveTaskByZcPoint(point); Boolean haveTaskByZcPoint = taskService.checkHaveTaskByZcPoint(point);
if (haveTaskByZcPoint) { if (haveTaskByZcPoint) {
@ -2409,14 +2431,15 @@ public class SlitterServiceImpl implements SlitterService {
if (ObjectUtil.equals(point.getPoint_status(), "2")) { if (ObjectUtil.equals(point.getPoint_status(), "2")) {
// 如果是没货 // 如果是没货
throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请先清空点位信息再触发!!"); throw new BadRequestException("点位:" + point.getPoint_code() + "检测空气胀轴,请先清空点位信息再触发!!");
} }
if (ObjectUtil.equals(point.getPoint_status(), "3")) { if (ObjectUtil.equals(point.getPoint_status(), "3")) {
throw new BadRequestException("点位:" + point.getPoint_code() + "检测子卷,请先清空点位信息再触发!!"); throw new BadRequestException("点位:" + point.getPoint_code() + "检测子卷,请先清空点位信息再触发!!");
} }
if (ObjectUtil.isNotEmpty(point.getQzz_no1()) || ObjectUtil.isNotEmpty(point.getQzz_no2())) { if (ObjectUtil.isNotEmpty(point.getQzz_no1()) || ObjectUtil.isNotEmpty(point.getQzz_no2())) {
throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码不为空,请先清空点位信息再触发!!"); throw new BadRequestException("点位:" + point.getPoint_code() + " 的气胀轴编码不为空,请先清空点位信息再触发!!");
} }
//如果AB点都无气胀轴信息,且点位状态是无货状态,则自动设置点位为空轴退回状态
if (Objects.equals(point.getPoint_status(), "1") && ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) { if (Objects.equals(point.getPoint_status(), "1") && ObjectUtil.isEmpty(point.getQzz_no1()) && ObjectUtil.isEmpty(point.getQzz_no2())) {
// 如果是没货 绑定为空轴状态 // 如果是没货 绑定为空轴状态
point.setPoint_status("4"); point.setPoint_status("4");
@ -2425,7 +2448,7 @@ public class SlitterServiceImpl implements SlitterService {
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
// 获取内包间缓存位 // 获取内包间缓存位
List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", "0", "2"); List<BstIvtCutpointivt> areaEmptyNotTaskPoint = bcutpointivtService.getNBJCanUsePoint("1", "1", point.getPoint_location(), "2");
if (areaEmptyNotTaskPoint.size() <= 1) { if (areaEmptyNotTaskPoint.size() <= 1) {
throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); throw new BadRequestException("请求搬运失败,内包间没有可存放位置!");
} }
@ -2460,7 +2483,6 @@ public class SlitterServiceImpl implements SlitterService {
} }
return res; return res;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JSONObject downBait(JSONObject param) { public JSONObject downBait(JSONObject param) {

Loading…
Cancel
Save