add:烘箱暂存位开发、废箔修改

This commit is contained in:
ls
2025-03-07 16:24:13 +08:00
parent bd625244b6
commit 320edd7ccc
13 changed files with 128 additions and 29 deletions

View File

@@ -42,4 +42,10 @@ public class BakingPdaController {
public ResponseEntity<Object> doModifyRawInfos(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bakingPdaService.doModifyRawInfos(whereJson), HttpStatus.OK);
}
@PostMapping("/temporaryStorage")
@Log("烘箱暂存")
public ResponseEntity<Object> temporaryStorage(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bakingPdaService.temporaryStorage(whereJson), HttpStatus.OK);
}
}

View File

@@ -28,4 +28,6 @@ public interface BakingPdaService {
* @return /
*/
JSONObject doModifyRawInfos(JSONObject param);
JSONObject temporaryStorage(JSONObject param);
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -16,6 +17,7 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
@@ -55,6 +57,9 @@ public class BakingPdaServiceImpl implements BakingPdaService {
private ISchBaseTaskService taskService;
@Autowired
private InHotCachingTrussTask inHotCachingTrussTask;
@Autowired
private SchBasePointMapper pointMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject bakingQuality(JSONObject param) {
@@ -248,6 +253,32 @@ public class BakingPdaServiceImpl implements BakingPdaService {
result.put("message", "操作成功!");
return result;
}
/**
* 烘箱作为缓存位,暂存位
* @param param
* @return
*/
@Override
public JSONObject temporaryStorage(JSONObject param) {
String pointCode = param.getString("point_code");
String plan = param.getString("plan");
JSONObject taskParam = new JSONObject();
taskParam.put("device_code", pointCode);
taskParam.put("plan", plan);
taskParam.put("config_code", "InHotTrussTask");
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
SchBasePoint point = pointMapper.selectOne(new QueryWrapper<SchBasePoint>().eq("point_code", pointCode));
taskParam.put("order_code", point.getMaterial_code());
//是否是烘箱暂存
taskParam.put("is_storage", "1");
inHotTrussTask.apply(taskParam);
JSONObject result = new JSONObject();
result.put("message", "操作成功!");
return result;
}
public boolean isValidInteger(String input) {
String regex = "^[+-]?\\d+$";
return input.matches(regex);

View File

@@ -22,6 +22,8 @@ import org.nl.wms.pdm.ivt.bcut.service.IBstIvtCutpointivtService;
import org.nl.wms.pdm.ivt.bcut.service.dao.BstIvtCutpointivt;
import org.nl.wms.pdm.ivt.cut.service.IstIvtCutpointivtService;
import org.nl.wms.pdm.ivt.cut.service.dao.StIvtCutpointivt;
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -76,6 +78,9 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
@Autowired
private SlitterRebakeAGVTask slitterRebakeAGVTask;
@Autowired
private IstIvtHotpointivtService hotpointivtService;
@Override
public JSONObject queryOrderInfo(JSONObject param) {
JSONObject result = new JSONObject();
@@ -104,9 +109,18 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
if (isTask) {
throw new BadRequestException("点位[" + pointCode + "" + zcPoint + "]已经创建过任务!");
}
SchBasePoint zcPointObj = pointService.getById(zcPoint);
if (ObjectUtil.isEmpty(zcPointObj.getMaterial_code())) {
throw new BadRequestException("点位不存在该母卷或者该母卷已搬运");
StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(zcPoint, false);
if (ObjectUtil.isNotEmpty(zcPointObj)) {
if (ObjectUtil.isEmpty(zcPointObj.getMaterial_code())) {
throw new BadRequestException("点位不存在该母卷或者该母卷已搬运");
}
}
if (ObjectUtil.isNotEmpty(hotpointivt)) {
if (ObjectUtil.isEmpty(hotpointivt.getContainer_name())) {
throw new BadRequestException("点位不存在该母卷或者该母卷已搬运");
}
}
StIvtCutpointivt cutPoint = cutpointivtService.getOneByCode(pointCode);
param.put("config_code", "SlitterUpTrussTask");

View File

@@ -76,14 +76,17 @@ public class OtherPdaServiceImpl implements OtherPdaService {
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
}
JSONObject taskParam = new JSONObject();
if (StrUtil.isNotEmpty(startPoint)){
taskParam.put("point_code1", startPoint);
}
taskParam.put("point_code2", pointCode);
taskParam.put("index_task", 1);
taskParam.put("config_code", "SendWasteFoilAGVTask");
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
taskParam.put("task_status", TaskStatus.SURE_END.getCode());
//起点不为空就是漏斗复位任务
if (StrUtil.isNotEmpty(startPoint)){
taskParam.put("point_code1", startPoint);
taskParam.put("task_status", TaskStatus.START_AND_POINT.getCode());
}
sendWasteFoilAGVTask.createTask(taskParam);
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());

View File

@@ -11,5 +11,12 @@
WHERE p.region_code = 'A1-HXZC'
AND p.point_status = '4'
AND IFNULL(w.workorder_id, '') <![CDATA[ <> ]]> ''
union ALL
SELECT p.point_code as zc_point,
w.*
FROM st_ivt_hotpointivt p
LEFT JOIN pdm_bi_rawfoilworkorder w ON w.workorder_id = p.workorder_id
WHERE p.point_status = '04';
</select>
</mapper>

View File

@@ -1,6 +1,7 @@
package org.nl.wms.quartz;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.sch.point.service.ISchBasePointService;
@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* 自动创建从废箔起点开始的热任务
@@ -31,10 +33,11 @@ public class AutoSendWasteFoilAGVTask {
log.info("查找废箔起点任务开始执行...");
// 获取下一条的任务
List<SchBaseTask> waitTask = taskService.getTaskByConfigAndStatus(TASK_CODE, TaskStatus.SURE_END.getCode());
if (taskService.checkAllWaiteByWasteFoil()) {
List<SchBaseTask> waitTaskFilter = waitTask.stream().filter(task -> StrUtil.isEmpty(task.getPoint_code1())).collect(Collectors.toList());
if (taskService.checkAllWaiteByWasteFoil() && CollectionUtil.isNotEmpty(waitTaskFilter)) {
log.info("没有搬运中的废箔,执行创建从废箔起点到废箔终点的任务!");
// 都是等待状态的任务
SchBaseTask task = waitTask.get(0);
SchBaseTask task = waitTaskFilter.get(0);
// 查找废箔起点
List<SchBasePoint> fbPoints = pointService.getAllBusinessNotTaskPoint("A1", "A1-FB",
"1", "2", null, null);

View File

@@ -78,7 +78,7 @@ public class SchBasePointController {
@GetMapping("/getWastePointList")
@Log("获取区域下拉框")
public ResponseEntity<Object> getWastePointList(){
return new ResponseEntity<>(schBasePointService.getWastePointList(),HttpStatus.OK);
public ResponseEntity<Object> getWastePointList(@RequestParam String point_type){
return new ResponseEntity<>(schBasePointService.getWastePointList(point_type),HttpStatus.OK);
}
}

View File

@@ -128,5 +128,5 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
List<SchBasePoint> getAllBusinessTaskPoint(String area, String region, String pointType,
String pointStatus, String vehicleType, String vehicleCode);
List<SchBasePoint> getWastePointList();
List<SchBasePoint> getWastePointList(String point_type);
}

View File

@@ -3,7 +3,6 @@ package org.nl.wms.sch.point.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -244,10 +243,18 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
}
@Override
public List<SchBasePoint> getWastePointList() {
public List<SchBasePoint> getWastePointList(String point_type) {
List<SchBasePoint> list = getAllBusinessNotTaskPoint("A1", "A1-FB", null, "1", null, null);
return list.stream().filter(item -> item.getPoint_code().contains("ZD") || item.getPoint_code().contains("QD") ).collect(Collectors.toList());
List<SchBasePoint> list = getAllBusinessNotTaskPoint("A1", "A1-FB", null, null, null, null);
List<SchBasePoint> zdList = list.stream().filter(item -> item.getPoint_code().contains("ZD")).collect(Collectors.toList());
if ("1".equals(point_type)){
List<SchBasePoint> qdList = list.stream().filter(item -> item.getPoint_code().contains("QD") && "1".equals(item.getPoint_status())).collect(Collectors.toList());
zdList.addAll(qdList);
return zdList;
}
List<SchBasePoint> qdList = list.stream().filter(item -> item.getPoint_code().contains("QD") && "2".equals(item.getPoint_status())).collect(Collectors.toList());
zdList.addAll(qdList);
return zdList;
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.tasks.hot;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -52,6 +53,7 @@ public class InHotTrussTask extends AbstractTask {
private RedisUtils redisUtils;
@Autowired
private ISchBaseTaskService taskService;
@Override
public void create() throws BadRequestException {
@@ -59,6 +61,7 @@ public class InHotTrussTask extends AbstractTask {
/**
* todo: 烘烤时间与烘烤温度是否需要下发ACS
*
* @param task /
*/
@Override
@@ -67,10 +70,12 @@ public class InHotTrussTask extends AbstractTask {
String requestParam = task.getRequest_param();
JSONObject requestObj = JSONObject.parseObject(requestParam);
String orderCode = requestObj.getString("order_code");
String isStorage = requestObj.getString("is_storage");
String plan = requestObj.getString("plan");
String flag = "0";
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
// TODO: 没有设置是否烘烤、时间、温度、不继续
if (GeneralDefinition.YES.equals(order.getIs_baking())) {
if (ObjectUtil.isNotNull(order)&&GeneralDefinition.YES.equals(order.getIs_baking())) {
String bakingTemperature = order.getBaking_temperature();
requestObj.put("baking_temperature", bakingTemperature);
@@ -101,18 +106,36 @@ public class InHotTrussTask extends AbstractTask {
SchBasePoint point = hotDjwList.get(0);
task.setPoint_code2(point.getPoint_code());
}
if (hotDjwList.size() == 0){
if (hotDjwList.size() == 0) {
throw new BadRequestException("入烘箱没有找到存放母卷位置");
}
}
// todo: 需要烘烤,且是小卷,但是没有位置,需要将最快结束的烘箱组锁住
} else {
// 不需要烘烤,则送到暂存区(无需烘烤区 - 任务做完需要将点位设置为待分切)
List<SchBasePoint> hotDjwList = pointService.getHotNotTaskPoint("A1", REGION_A1_HXZC,
"3", "1");
if (hotDjwList.size() > 0) {
SchBasePoint point = hotDjwList.get(0);
task.setPoint_code2(point.getPoint_code());
// 如果是去烘箱暂存的,找禁用的烘箱
if (GeneralDefinition.YES.equals(isStorage)) {
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(plan, "0");
for (StIvtHotpointivt hotPoint : hotList) {
String pointCode = hotPoint.getPoint_code();
String pointTemperature = (String) redisUtils.hget(pointCode, "temperature");
if (ObjectUtil.isNotEmpty(pointTemperature) && Integer.valueOf(pointTemperature) < 50 ) {
task.setPoint_code2(pointCode);
flag = "1";
break;
}
}
if (ObjectUtil.isEmpty(task.getPoint_code2())){
throw new BadRequestException("暂时没有可用的烘箱暂存位");
}
} else {
// 不需要烘烤,则送到暂存区(无需烘烤区 - 任务做完需要将点位设置为待分切)
List<SchBasePoint> hotDjwList = pointService.getHotNotTaskPoint("A1", REGION_A1_HXZC,
"3", "1");
if (hotDjwList.size() > 0) {
SchBasePoint point = hotDjwList.get(0);
task.setPoint_code2(point.getPoint_code());
}
}
}
@@ -165,8 +188,8 @@ public class InHotTrussTask extends AbstractTask {
hotpointivt.setWorkorder_id(order.getWorkorder_id());
hotpointivt.setInstorage_time(DateUtil.now());
hotpointivt.setFull_vehicle_code(taskObj.getVehicle_code());
// 02烘烤中03暂存中
hotpointivt.setPoint_status("0".equals(caching) ? "02" : "03");
// 02烘烤中04烘烤完毕暂存中
hotpointivt.setPoint_status("0".equals(caching) ? "02" : "04");
// todo: 更新温度和倒计时
setHxUpdateByType(hotpointivt, taskFinishedType);
hotpointivtService.updateById(hotpointivt);

View File

@@ -112,10 +112,10 @@ public class SendWasteFoilAGVTask extends AbstractTask {
BigDecimal weight = task.getBigDecimal("weight");
// 校验任务
SchBaseTask taskObj = taskService.getByCode(taskCode);
if (ObjectUtil.isNotEmpty(weight)) {
// 调用更新重量
otherOperationService.acsRequestWasteFoilWeight(task);
}
// if (ObjectUtil.isNotEmpty(weight)) {
// // 调用更新重量
// otherOperationService.acsRequestWasteFoilWeight(task);
// }
// 根据传来的类型去对任务进行操作
if (TaskStatus.EXECUTING.equals(status) || ObjectUtil.isNotEmpty(task.getString("car_no"))) {
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());