feat: 套轴业务透明化

This commit is contained in:
2025-04-19 16:38:04 +08:00
parent 228a587421
commit 8db9059c5f
2 changed files with 69 additions and 44 deletions

View File

@@ -31,6 +31,7 @@ import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.common.enums.NoticeTypeEnum; import org.nl.common.enums.NoticeTypeEnum;
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.common.utils.RedisUtils;
import org.nl.system.service.notice.ISysNoticeService; 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;
@@ -86,10 +87,13 @@ public class AutoCallAirShaftTask {
private IschBaseTaskService taskService; private IschBaseTaskService taskService;
@Autowired @Autowired
private ISysParamService paramService; private ISysParamService paramService;
@Autowired
private RedisUtils redisUtils;
public final static String PARAM_CODE_PLAN_AREA = "PARAM_CODE_PLAN_AREA"; public final static String PARAM_CODE_PLAN_AREA = "PARAM_CODE_PLAN_AREA";
public final static String IS_ONLY_PULLING = "IS_ONLY_PULLING"; public final static String IS_ONLY_PULLING = "IS_ONLY_PULLING";
public final static String TZ_DAY = "TZ_DAY"; public final static String TZ_DAY = "TZ_DAY";
public String stepStr = "";
private static final DateTimeFormatter TIME_FORMATTER = private static final DateTimeFormatter TIME_FORMATTER =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -112,7 +116,12 @@ public class AutoCallAirShaftTask {
// 1、获取空的插拔轴位(无任务) // 1、获取空的插拔轴位(无任务)
List<BstIvtShafttubeivt> emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2", List<BstIvtShafttubeivt> emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2",
"0", "0"); "0", "0");
emptyPoints.forEach(empty -> doCallShaft(empty, isOnlyPulling, tzDay, paramObj)); // emptyPoints.forEach(empty -> doCallShaft(empty, isOnlyPulling, tzDay, paramObj));
for (BstIvtShafttubeivt empty : emptyPoints) {
stepStr = "";
doCallShaft(empty, isOnlyPulling, tzDay, paramObj);
redisUtils.set(empty.getPoint_code(), stepStr);
}
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -120,11 +129,13 @@ public class AutoCallAirShaftTask {
// 标箔1锂电2 改大小4代5代 // 标箔1锂电2 改大小4代5代
String specification = empty.getQzz_generation(); String specification = empty.getQzz_generation();
String location = empty.getPoint_location(); String location = empty.getPoint_location();
stepStr += "1";
if (ObjectUtil.isNotEmpty(isOnlyPulling) && SlitterConstant.SLITTER_YES.equals(isOnlyPulling.getValue())) { if (ObjectUtil.isNotEmpty(isOnlyPulling) && SlitterConstant.SLITTER_YES.equals(isOnlyPulling.getValue())) {
// 只做拔轴 // 只做拔轴
makePullShaft(empty, specification); makePullShaft(empty, specification);
return; return;
} }
stepStr += ",2";
Integer integer = Integer.valueOf(ObjectUtil.isEmpty(tzDay.getValue()) ? "0" : tzDay.getValue()); Integer integer = Integer.valueOf(ObjectUtil.isEmpty(tzDay.getValue()) ? "0" : tzDay.getValue());
// 2、获取分切计划数据 校验代数 todo 顺序可能需要考虑 // 2、获取分切计划数据 校验代数 todo 顺序可能需要考虑
// List<SlitterPlanDistinctDto> planAll = slittingproductionplanService.getAllCutPlan(integer); // List<SlitterPlanDistinctDto> planAll = slittingproductionplanService.getAllCutPlan(integer);
@@ -153,11 +164,13 @@ public class AutoCallAirShaftTask {
// todo: 这里需要注意不要去校验071的任务不然提前释放货位没意义。 // todo: 这里需要注意不要去校验071的任务不然提前释放货位没意义。
List<BstIvtCutpointivt> emptyShaftPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1", List<BstIvtCutpointivt> emptyShaftPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1",
"1", location, "0"); "1", location, "0");
stepStr += ",6";
// 如果满了就只做拔轴 预留一个货位?,防止套轴直接站满 // 如果满了就只做拔轴 预留一个货位?,防止套轴直接站满
if (emptyShaftPoint.size() <= 1) { if (emptyShaftPoint.size() <= 1) {
log.info("暂存位没有空位!正在检测是否存在半个点位!"); log.info("暂存位没有空位!正在检测是否存在半个点位!");
// 校验是否存在半个位置,且有分切计划 // 校验是否存在半个位置,且有分切计划
// 获取只有一个位置的点位 // 获取只有一个位置的点位
stepStr += ",7";
List<BstIvtCutpointivt> halfPlacePoint = bcutpointivtService.getAllHalfPlacePoints("1", List<BstIvtCutpointivt> halfPlacePoint = bcutpointivtService.getAllHalfPlacePoints("1",
"1", location); "1", location);
List<String> qzzs = halfPlacePoint.stream() List<String> qzzs = halfPlacePoint.stream()
@@ -169,9 +182,11 @@ public class AutoCallAirShaftTask {
makePullShaft(empty, specification); makePullShaft(empty, specification);
return; return;
} }
stepStr += ",12";
// 从寻查找分切计划并放在plans, 没有考虑区域问题, 里面会考虑代数 // 从寻查找分切计划并放在plans, 没有考虑区域问题, 里面会考虑代数
List<PdmBiSlittingproductionplan> tzOKPlans = slittingproductionplanService.getByQzzNos(qzzs, "01"); List<PdmBiSlittingproductionplan> tzOKPlans = slittingproductionplanService.getByQzzNos(qzzs, "01");
if (ObjectUtil.isEmpty(tzOKPlans)) { if (ObjectUtil.isEmpty(tzOKPlans)) {
stepStr += ",13";
log.info("计划找不到"); log.info("计划找不到");
return; return;
} }
@@ -190,6 +205,7 @@ public class AutoCallAirShaftTask {
} }
log.info("找到对应的另一半的计划 - {}", plans); log.info("找到对应的另一半的计划 - {}", plans);
} }
stepStr += ",14";
// 获取一个分切计划的Dto。如果是6寸可以直接使用、如果是3寸需要判断当前位置是否满足 // 获取一个分切计划的Dto。如果是6寸可以直接使用、如果是3寸需要判断当前位置是否满足
// todo: 需要校验分切设备是在对应的区域中 // todo: 需要校验分切设备是在对应的区域中
SlitterPlanDistinctDto planDto = plans.stream() SlitterPlanDistinctDto planDto = plans.stream()
@@ -229,9 +245,11 @@ public class AutoCallAirShaftTask {
// 从套轴对接位获取相同气涨轴大小 // 从套轴对接位获取相同气涨轴大小
// update: 不需要(同标箔或者锂电分开) // update: 不需要(同标箔或者锂电分开)
// todo: 需要校验区域0/1 // todo: 需要校验区域0/1
stepStr += ",15";
List<BstIvtCutpointivt> qzzPoint = bcutpointivtService.getPointByTypeAndShaftSize("1", qzzSize, specification); List<BstIvtCutpointivt> qzzPoint = bcutpointivtService.getPointByTypeAndShaftSize("1", qzzSize, specification);
log.info("查找到满足到对应尺寸的点位-{}", qzzPoint); log.info("查找到满足到对应尺寸的点位-{}", qzzPoint);
if (qzzPoint.size() == 0) { if (qzzPoint.size() == 0) {
stepStr += ",16";
//若套轴暂存位没有相同规格的气胀轴,直接去气胀轴库找即可 //若套轴暂存位没有相同规格的气胀轴,直接去气胀轴库找即可
// 要先判断AGV任务才能去呼叫出轴 // 要先判断AGV任务才能去呼叫出轴
if (!toCallAgvMovePaperTube(needPlans, location, empty)) { if (!toCallAgvMovePaperTube(needPlans, location, empty)) {
@@ -245,6 +263,7 @@ public class AutoCallAirShaftTask {
} }
// 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划 // 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划
saveCutPlanMessage(empty, needPlans, qzzSize); saveCutPlanMessage(empty, needPlans, qzzSize);
stepStr += ",97";
return; return;
} }
// 查找一条没任务的点位 // 查找一条没任务的点位
@@ -252,16 +271,20 @@ public class AutoCallAirShaftTask {
// 当前纸管的规格信息 // 当前纸管的规格信息
String oldQzzNo = ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) String oldQzzNo = ObjectUtil.isNotEmpty(startPoint.getQzz_no1())
? startPoint.getQzz_no1() : startPoint.getQzz_no2(); ? startPoint.getQzz_no1() : startPoint.getQzz_no2();
stepStr += ",33";
if (oldQzzNo == null) { if (oldQzzNo == null) {
log.error("当前气胀轴的编码为空!"); log.error("当前气胀轴的编码为空!");
stepStr += ",96";
return; return;
} }
String startPointCode = ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) String startPointCode = ObjectUtil.isNotEmpty(startPoint.getQzz_no1())
? startPoint.getTruss_point_code1() : startPoint.getTruss_point_code2(); ? startPoint.getTruss_point_code1() : startPoint.getTruss_point_code2();
if (startPointCode == null) { if (startPointCode == null) {
log.error("当前点位的编码为空!"); log.error("当前点位的编码为空!");
stepStr += ",96";
return; return;
} }
stepStr += ",34";
// 如果A6寸 B3寸则需要过滤到精确点位 // 如果A6寸 B3寸则需要过滤到精确点位
if (ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) && ObjectUtil.isNotEmpty(startPoint.getQzz_no2())) { if (ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) && ObjectUtil.isNotEmpty(startPoint.getQzz_no2())) {
// 获取需要的数据 // 获取需要的数据
@@ -284,6 +307,7 @@ public class AutoCallAirShaftTask {
} }
} }
} }
stepStr += ",35";
// 创建任务 // 创建任务
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("point_code1", startPointCode); param.put("point_code1", startPointCode);
@@ -306,6 +330,7 @@ public class AutoCallAirShaftTask {
// 最多两条 // 最多两条
List<PdmBiSlittingproductionplan> oldPlans = slittingproductionplanService.getByQzzNo(oldQzzNo); List<PdmBiSlittingproductionplan> oldPlans = slittingproductionplanService.getByQzzNo(oldQzzNo);
if (oldPlans.size() == 0) { if (oldPlans.size() == 0) {
stepStr += ",96";
log.warn("当前气胀轴编码{},找不到对应的计划", oldQzzNo); log.warn("当前气胀轴编码{},找不到对应的计划", oldQzzNo);
return; return;
} }
@@ -319,13 +344,16 @@ public class AutoCallAirShaftTask {
log.error("呼叫AGV失败-穿拔轴{}不进行套轴,跳过!", empty.getPoint_code()); log.error("呼叫AGV失败-穿拔轴{}不进行套轴,跳过!", empty.getPoint_code());
return; return;
} }
stepStr += ",36";
trussCallAirShaftTask.createTask(param); trussCallAirShaftTask.createTask(param);
stepStr += ",37";
// 将分切计划is_paper_ok 1(纸管已经准备好) -> 2(已经套轴) // 将分切计划is_paper_ok 1(纸管已经准备好) -> 2(已经套轴)
needPlans.forEach(p -> { needPlans.forEach(p -> {
p.setIs_paper_ok("2"); p.setIs_paper_ok("2");
TaskUtils.updateOptMessageBySlitterPlan(p); TaskUtils.updateOptMessageBySlitterPlan(p);
}); });
slittingproductionplanService.updateBatchById(needPlans); slittingproductionplanService.updateBatchById(needPlans);
stepStr += ",97";
} }
/** /**
@@ -356,6 +384,7 @@ public class AutoCallAirShaftTask {
* @param location 位置 * @param location 位置
*/ */
public Boolean toCallAgvMovePaperTube(List<PdmBiSlittingproductionplan> needPlans, String location, BstIvtShafttubeivt empty) { public Boolean toCallAgvMovePaperTube(List<PdmBiSlittingproductionplan> needPlans, String location, BstIvtShafttubeivt empty) {
stepStr += ",17";
// 最多两根 // 最多两根
List<String> tubes = needPlans.stream().map(plan -> { List<String> tubes = needPlans.stream().map(plan -> {
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
@@ -371,6 +400,7 @@ public class AutoCallAirShaftTask {
.eq(BstIvtShafttubeivt::getPoint_type, empty.getPoint_type()) .eq(BstIvtShafttubeivt::getPoint_type, empty.getPoint_type())
.eq(BstIvtShafttubeivt::getIs_used, "1")); .eq(BstIvtShafttubeivt::getIs_used, "1"));
log.info("同位置的另一台穿拔轴机构:{}", one); log.info("同位置的另一台穿拔轴机构:{}", one);
stepStr += ",18";
// 另一台所需要的数量 // 另一台所需要的数量
int otherDeviceTubeSize = 0; int otherDeviceTubeSize = 0;
// 缺省的数量 // 缺省的数量
@@ -388,6 +418,7 @@ public class AutoCallAirShaftTask {
} }
// 说明三个位置中有包含此纸管的数据。 // 说明三个位置中有包含此纸管的数据。
if (sum >= tubes.size() + otherDeviceTubeSize) { if (sum >= tubes.size() + otherDeviceTubeSize) {
stepStr += ",19";
return true; return true;
} }
// 如果不够,就计算还缺多少个 // 如果不够,就计算还缺多少个
@@ -395,6 +426,7 @@ public class AutoCallAirShaftTask {
// 兜底 // 兜底
needQuantity = needTemp > 0 ? needTemp : 1; needQuantity = needTemp > 0 ? needTemp : 1;
} }
stepStr += ",20";
// 查找type=0的位置(待命的托盘)中是否存在(需要判断的是单独一个托盘) 校验了不在搬运中 // 查找type=0的位置(待命的托盘)中是否存在(需要判断的是单独一个托盘) 校验了不在搬运中
List<BhTubePointDto> stockingivtList = stockingivtService.getNeedPaperTubePoint("0", tubes.get(0), location); List<BhTubePointDto> stockingivtList = stockingivtService.getNeedPaperTubePoint("0", tubes.get(0), location);
// 找一个点位: 目的需要的点位 // 找一个点位: 目的需要的点位
@@ -407,6 +439,7 @@ public class AutoCallAirShaftTask {
} }
} }
if (needPoint == null) { if (needPoint == null) {
stepStr += ",21";
// 不存在则站内通知 // 不存在则站内通知
noticeService.createNotice("备货区找不到[" + tubes.get(0) + "]的纸管信息", noticeService.createNotice("备货区找不到[" + tubes.get(0) + "]的纸管信息",
"点位[" + empty.getPoint_name() + "]无法从备货区找到纸管信息", "点位[" + empty.getPoint_name() + "]无法从备货区找到纸管信息",
@@ -418,6 +451,7 @@ public class AutoCallAirShaftTask {
List<BhTubeMovePointDto> needMovePointList = stockingivtService.getCanMovePointList(location, "1"); List<BhTubeMovePointDto> needMovePointList = stockingivtService.getCanMovePointList(location, "1");
// 空位就直接创建搬过来的任务 // 空位就直接创建搬过来的任务
BhTubeMovePointDto needMovePoint = needMovePointList.size() > 0 ? needMovePointList.get(0) : null; BhTubeMovePointDto needMovePoint = needMovePointList.size() > 0 ? needMovePointList.get(0) : null;
stepStr += ",22";
if (ObjectUtil.isEmpty(needMovePoint) || "0".equals(needMovePoint.getIvt_status())) { if (ObjectUtil.isEmpty(needMovePoint) || "0".equals(needMovePoint.getIvt_status())) {
// 直接搬过来即可 // 直接搬过来即可
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
@@ -431,11 +465,14 @@ public class AutoCallAirShaftTask {
.eq(MdPbPapervehicle::getVehicle_code, needPoint.getVehicle_code())); .eq(MdPbPapervehicle::getVehicle_code, needPoint.getVehicle_code()));
doSavePaperInfos(paperList, param); doSavePaperInfos(paperList, param);
stockAreaCallTubeTask.createTask(param); stockAreaCallTubeTask.createTask(param);
stepStr += ",23";
return true; return true;
} }
stepStr += ",24";
// 查找一个没有任务的空位 // 查找一个没有任务的空位
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask(location, "0"); List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask(location, "0");
if (list.size() == 0) { if (list.size() == 0) {
stepStr += ",25";
noticeService.createNotice("备货区找不到空位置搬运", noticeService.createNotice("备货区找不到空位置搬运",
"点位[" + empty.getPoint_name() + "]无法从备货区找到空位", "点位[" + empty.getPoint_name() + "]无法从备货区找到空位",
NoticeTypeEnum.EXCEPTION.getCode()); NoticeTypeEnum.EXCEPTION.getCode());
@@ -452,6 +489,7 @@ public class AutoCallAirShaftTask {
param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送载具")); param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送载具"));
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA); param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
stockAreaSendVehicleTask.createTask(param); stockAreaSendVehicleTask.createTask(param);
stepStr += ",26";
return true; return true;
} }
@@ -464,14 +502,18 @@ public class AutoCallAirShaftTask {
* @param empty 套拔轴点位 * @param empty 套拔轴点位
*/ */
private Boolean toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) { private Boolean toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) {
stepStr += ",27";
// 需要区分上下 // 需要区分上下
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize ,empty.getPoint_code(), location); List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize ,empty.getPoint_code(), location);
stepStr += ",28";
if (shafttubeivts.size() == 0) { if (shafttubeivts.size() == 0) {
log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位"); log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位");
stepStr += ",98";
return false; return false;
} }
// 气涨轴库 // 气涨轴库
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
stepStr += ",29";
// 判断气胀轴是否有轴 // 判断气胀轴是否有轴
JSONArray device_rows = new JSONArray(); JSONArray device_rows = new JSONArray();
JSONObject device_obj = new JSONObject(); JSONObject device_obj = new JSONObject();
@@ -481,6 +523,7 @@ public class AutoCallAirShaftTask {
device_obj.put("product_area", "B1"); device_obj.put("product_area", "B1");
JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows); JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows);
if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) { if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) {
stepStr += ",98";
log.error("获取气胀轴库信息失败"); log.error("获取气胀轴库信息失败");
return false; return false;
} }
@@ -498,8 +541,10 @@ public class AutoCallAirShaftTask {
log.warn("未找到气胀轴密集库气涨轴规格「" + qzzSize + "」的暂存位"); log.warn("未找到气胀轴密集库气涨轴规格「" + qzzSize + "」的暂存位");
judgment2 = false; judgment2 = false;
} }
stepStr += ",30";
if (!judgment1 && !judgment2) { if (!judgment1 && !judgment2) {
log.warn("没有气胀轴不给ACS写出轴信息"); log.warn("没有气胀轴不给ACS写出轴信息");
stepStr += ",98";
return false; return false;
} }
// 判断气胀轴密集库是否有数据 // 判断气胀轴密集库是否有数据
@@ -511,6 +556,7 @@ public class AutoCallAirShaftTask {
acsQzz.put("value", "1"); acsQzz.put("value", "1");
acsQzz.put("product_area", SlitterConstant.SLITTER_TASK_AREA); acsQzz.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
acsParam.add(acsQzz); acsParam.add(acsQzz);
stepStr += ",31";
log.info("开始给ACS写信号出气胀轴 - {}", acsQzz); log.info("开始给ACS写信号出气胀轴 - {}", acsQzz);
JSONObject action = wmsToAcsService.action(acsParam); JSONObject action = wmsToAcsService.action(acsParam);
log.info("下发给ACS写信号出气涨轴返回参数{}", action); log.info("下发给ACS写信号出气涨轴返回参数{}", action);
@@ -549,6 +595,7 @@ public class AutoCallAirShaftTask {
* @param qzzSize 气涨轴尺寸 * @param qzzSize 气涨轴尺寸
*/ */
private void saveCutPlanMessage(BstIvtShafttubeivt empty, List<PdmBiSlittingproductionplan> needPlans, String qzzSize) { private void saveCutPlanMessage(BstIvtShafttubeivt empty, List<PdmBiSlittingproductionplan> needPlans, String qzzSize) {
stepStr += ",32";
log.info("正在保存套轴信息 - {} , 尺寸 - {} 到点位 - {}", needPlans, qzzSize, empty); log.info("正在保存套轴信息 - {} , 尺寸 - {} 到点位 - {}", needPlans, qzzSize, empty);
empty.setHave_qzz(SlitterConstant.SLITTER_YES); empty.setHave_qzz(SlitterConstant.SLITTER_YES);
empty.setQzz_size(qzzSize); empty.setQzz_size(qzzSize);
@@ -595,12 +642,16 @@ public class AutoCallAirShaftTask {
* @param specification 代数4、5 * @param specification 代数4、5
*/ */
private void makePullShaft(BstIvtShafttubeivt empty, String specification) { private void makePullShaft(BstIvtShafttubeivt empty, String specification) {
stepStr += ",3";
stepStr += ",8";
log.info("不需要套轴,只做拔轴!"); log.info("不需要套轴,只做拔轴!");
//查询套轴缓存位哦:point_type=1 //查询套轴缓存位哦:point_type=1
List<BstIvtCutpointivt> notTaskPoints = bcutpointivtService.getAreaNotTaskPointByLocationAreaAndStatus(empty.getPoint_location()); List<BstIvtCutpointivt> notTaskPoints = bcutpointivtService.getAreaNotTaskPointByLocationAreaAndStatus(empty.getPoint_location());
if (notTaskPoints.size() == 0) { if (notTaskPoints.size() == 0) {
stepStr += ",99";
return; return;
} }
stepStr += ",9";
// 筛选一个满足的位置3寸看代数4/56寸直接 // 筛选一个满足的位置3寸看代数4/56寸直接
//判断气胀轴代 //判断气胀轴代
BstIvtCutpointivt cutpointivt = notTaskPoints.stream() BstIvtCutpointivt cutpointivt = notTaskPoints.stream()
@@ -609,8 +660,10 @@ public class AutoCallAirShaftTask {
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (cutpointivt == null) { if (cutpointivt == null) {
stepStr += ",99";
return; return;
} }
stepStr += ",10";
String pointCode1 = ObjectUtil.isNotEmpty(cutpointivt.getQzz_no1()) ? cutpointivt.getTruss_point_code1() : cutpointivt.getTruss_point_code2(); String pointCode1 = ObjectUtil.isNotEmpty(cutpointivt.getQzz_no1()) ? cutpointivt.getTruss_point_code1() : cutpointivt.getTruss_point_code2();
String qzzNo = ObjectUtil.isNotEmpty(cutpointivt.getQzz_no1()) ? cutpointivt.getQzz_no1() : cutpointivt.getQzz_no2(); String qzzNo = ObjectUtil.isNotEmpty(cutpointivt.getQzz_no1()) ? cutpointivt.getQzz_no1() : cutpointivt.getQzz_no2();
// 获取对应的分切计划 // 获取对应的分切计划
@@ -618,6 +671,7 @@ public class AutoCallAirShaftTask {
.eq(PdmBiSlittingproductionplan::getQzzno, qzzNo) .eq(PdmBiSlittingproductionplan::getQzzno, qzzNo)
.eq(PdmBiSlittingproductionplan::getIs_delete, "0")); .eq(PdmBiSlittingproductionplan::getIs_delete, "0"));
if (list.size() == 0) { if (list.size() == 0) {
stepStr += ",99";
log.warn("气涨轴[{}]对应的分切计划不存在!", qzzNo); log.warn("气涨轴[{}]对应的分切计划不存在!", qzzNo);
throw new BadRequestException("气涨轴[" + qzzNo + "]对应的分切计划不存在!"); throw new BadRequestException("气涨轴[" + qzzNo + "]对应的分切计划不存在!");
} }
@@ -642,6 +696,7 @@ public class AutoCallAirShaftTask {
param.put("is_bushing", SlitterConstant.SLITTER_NO); param.put("is_bushing", SlitterConstant.SLITTER_NO);
param.put("is_pulling", SlitterConstant.SLITTER_YES); param.put("is_pulling", SlitterConstant.SLITTER_YES);
trussCallAirShaftTask.createTask(param); trussCallAirShaftTask.createTask(param);
stepStr += ",11";
} }
/** /**
@@ -657,6 +712,7 @@ public class AutoCallAirShaftTask {
return true; return true;
} }
log.info("存在任务,不允许套轴{}", dto); log.info("存在任务,不允许套轴{}", dto);
stepStr += ",5";
return false; return false;
} }
@@ -684,11 +740,13 @@ public class AutoCallAirShaftTask {
if ("1".equals(byContainerName.getOrder_type())) { if ("1".equals(byContainerName.getOrder_type())) {
// 判断母卷 // 判断母卷
if (byContainerName.getParent_container_name().equals(dto.getParent_container_name())) { if (byContainerName.getParent_container_name().equals(dto.getParent_container_name())) {
stepStr += ",4";
return false; return false;
} }
} else { } else {
// 判断改切 // 判断改切
if (byContainerName.getRestruct_container_name().equals(dto.getParent_container_name())) { if (byContainerName.getRestruct_container_name().equals(dto.getParent_container_name())) {
stepStr += ",4";
return false; return false;
} }
} }
@@ -701,6 +759,7 @@ public class AutoCallAirShaftTask {
} }
} }
log.info("检查有同母卷不允许套轴:{}", dto); log.info("检查有同母卷不允许套轴:{}", dto);
stepStr += ",4";
// 有就返回true // 有就返回true
return false; return false;
} }

View File

@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
import org.nl.common.utils.TaskUtils; import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.logging.annotation.Log; import org.nl.modules.logging.annotation.Log;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@@ -32,53 +33,18 @@ import java.util.stream.Stream;
public class SlitterController { public class SlitterController {
@Autowired @Autowired
private SlitterService slitterService; private SlitterService slitterService;
@Autowired
@PostMapping("/test1") private RedisUtils redisUtils;
@Log("1111")
public ResponseEntity<Object> create(@RequestBody JSONObject entity){
if ("1".equals(entity.getString("type"))) {
return new ResponseEntity<>(slitterService.acsRequestShaftLoadTube(entity), HttpStatus.OK);
} else if ("2".equals(entity.getString("type"))) {
return new ResponseEntity<>(slitterService.acsFinishLoadShaft(entity), HttpStatus.OK);
} else if ("3".equals(entity.getString("type"))) {
return new ResponseEntity<>(slitterService.acsFinishShaftPluckTube(entity), HttpStatus.OK);
} else if ("5".equals(entity.getString("type"))) {
return new ResponseEntity<>(slitterService.acsSendShaftToCache(entity), HttpStatus.OK);
}
return new ResponseEntity<>(slitterService.acsRequestShaftLoadTube(entity), HttpStatus.OK);
}
@PostMapping("/test2")
@Log("1111")
public ResponseEntity<Object> create2(@RequestBody JSONObject entity){
return new ResponseEntity<>(slitterService.acsFinishLoadShaft(entity), HttpStatus.OK);
}
@PostMapping("/test3")
@Log("1111")
public ResponseEntity<Object> create3(@RequestBody JSONObject entity){
List<String> collect = Stream.of("B1182312040201A1").collect(Collectors.toList());
entity.put("container", collect);
return new ResponseEntity<>(slitterService.mesSlittingMachineSendMaterial(entity), HttpStatus.CREATED);
}
@PostMapping("/test4")
@Log("1111")
public ResponseEntity<Object> create4(@RequestBody JSONObject entity){
return new ResponseEntity<>(slitterService.acsFinishShaftPluckTube(entity), HttpStatus.CREATED);
}
@PostMapping("/test5")
@Log("1111")
@SaIgnore
public ResponseEntity<Object> create5(@RequestBody JSONObject entity){
return new ResponseEntity<>(slitterService.mesGetWeighingOfWasteFoil(entity), HttpStatus.CREATED);
}
@PostMapping("/test6")
@Log("1111")
public ResponseEntity<Object> create6(@RequestBody JSONObject entity){
return new ResponseEntity<>(slitterService.mesGetFinishWeighingOfWasteFoil(entity), HttpStatus.CREATED);
}
@PostMapping("/calPaperNum") @PostMapping("/calPaperNum")
@Log("扣除纸管库存") @Log("扣除纸管库存")
@SaIgnore @SaIgnore
public ResponseEntity<Object> calPaperNum(@RequestBody JSONObject entity){ public ResponseEntity<Object> calPaperNum(@RequestBody JSONObject entity){
return new ResponseEntity<>(slitterService.acsToReduceTube(entity), HttpStatus.CREATED); return new ResponseEntity<>(slitterService.acsToReduceTube(entity), HttpStatus.CREATED);
} }
@PostMapping("/tzInfo")
@Log("套轴BCP透明链路")
@SaIgnore
public ResponseEntity<Object> tzInfo(@RequestBody JSONObject entity){
return new ResponseEntity<>(redisUtils.get(entity.getString("device_code")), HttpStatus.CREATED);
}
} }