opt: 修复点位提前释放的问题,添加日志

This commit is contained in:
yanps
2024-11-11 14:00:33 +08:00
parent d62f4e1ce5
commit 3937ed3a3b
25 changed files with 146 additions and 74 deletions

View File

@@ -390,9 +390,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
//TODO:空料容放货完成反馈给Connector
if ("1".equals(is_connector)) {
if (!is_empty) {
finishTask(schBaseTask.getTask_code(), schBaseTask.getPoint_code2());
} else {
finishTask(schBaseTask.getTask_code(), schBaseTask.getPoint_code1());
JSONObject json = new JSONObject();
json.put("vehicle_code", schBaseTask.getVehicle_code());
json.put("status", status);
@@ -400,9 +398,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
json.put("task_code", schBaseTask.getTask_code());
AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json);
}
/*List<String> list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(schBaseTask.getVehicle_code());
//同步fab工序流程
FabServiceImpl.syncFab(list);*/
} else if ("2".equals(is_connector)) {
JSONObject json = new JSONObject();
json.put("vehicle_code", schBaseTask.getVehicle_code());
@@ -451,7 +446,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
param.put("vehicle_type", mdBaseVehicle.getVehicle_type());
connectorTask.apply(param);
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, schBaseTask.getPoint_code1()).set(SchBasePoint::getIs_lock, true));
.eq(SchBasePoint::getPoint_code, schBaseTask.getPoint_code1())
.set(SchBasePoint::getIs_lock, true));
}
JSONObject json = new JSONObject();
json.put("vehicle_code", vehicle_code);
@@ -494,6 +490,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
json.put("task_code", schBaseTask.getTask_code());
boolean flag = true;
String jobName = null;
iSchBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, schBaseTask.getVehicle_code()));
AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json);
if (acsResponse.getStatus() == 200 && StrUtil.isNotEmpty(acsResponse.getData())) {
JSONArray objects = JSONObject.parseArray(acsResponse.getData());

View File

@@ -55,16 +55,17 @@ public class WmsToConnectorServiceImpl implements WmsToConnectorService {
} else if (ObjectUtil.isNotEmpty(isInvokeConnector) && GeneralDefinition.NO.equals(isInvokeConnector.getValue())) {
JSONObject jsonObject = new JSONObject();
JSONArray objects = new JSONArray();
jsonObject.put("status",200);
jsonObject.put("status", 200);
JSONArray materials = json.getJSONArray("materials");
materials.forEach(material -> {
String replace = StrUtil.replace(StrUtil.toString(material), "=", ":");
JSONObject jsonObject1 = JSONObject.parseObject(replace);
jsonObject1.put("due_date","2000-10-01 00:00:00 ");
jsonObject1.put("next_region_code","");
jsonObject1.put("due_date", "2000-10-01 00:00:00 ");
jsonObject1.put("next_region_code", "");
jsonObject1.put("priority", "5");
objects.add(jsonObject1);
});
jsonObject.put("data",objects);
jsonObject.put("data", objects);
return jsonObject;
}
return null;

View File

@@ -246,6 +246,7 @@ public class FabController {
if (material1.getOrder_code().equals(jsonObject1.getString("order_code"))) {
material1.setDue_date(jsonObject1.getString("due_date"));
material1.setRegion_code(jsonObject1.getString("next_region_code"));
material1.setPriority(jsonObject1.getString("priority"));
}
});
});

View File

@@ -42,4 +42,6 @@ public class OrderMater {
public String custom;
public String create_time;
public String priority;
}

View File

@@ -53,4 +53,6 @@ public class SendMaterVo {
public String point_code;
private String priority;
}

View File

@@ -31,6 +31,10 @@ public class SendVehicleVo {
* 载具号
*/
private String vehicle_code;
/**
* 优先级
*/
private String priority;
/**
* 物料信息
*/

View File

@@ -19,7 +19,6 @@ import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task_manage.task.tasks.handheld.CallEmptyTask;
import org.nl.wms.sch.task_manage.task.tasks.pcoperation.PcOperationCMTask;
import org.nl.wms.sch.task_manage.task.tasks.pcoperation.PcOperationSMTTask;
import org.nl.wms.sch.task_manage.task.tasks.pcoperation.PcOperationSNTTask;
@@ -52,8 +51,6 @@ public class FabServiceImpl {
@Autowired
private PcOperationSNTTask pcOperationSNTTask;
@Autowired
private CallEmptyTask callEmptyTask;
@Autowired
private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService;
@@ -113,7 +110,7 @@ public class FabServiceImpl {
param.put("region_code", callEmpVo.getRegion_code());
param.put("vehicle_type", callEmpVo.getVehicle_type());
param.put("ext_data", callEmpVo);
callEmptyTask.apply(param);
pcOperationSNTTask.apply(param);
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, callEmpVo.getDevice_code())
.set(SchBasePoint::getIs_lock, true));
@@ -137,9 +134,7 @@ public class FabServiceImpl {
param.put("vehicle_type", vehicle.getVehicle_type());
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, sendMaterVo.getDevice_code())
.set(SchBasePoint::getPoint_status, GoodsEnum.OUT_OF_STOCK.getValue())
.set(SchBasePoint::getIs_lock, true)
.set(SchBasePoint::getVehicle_code, null));
.set(SchBasePoint::getIs_lock, true));
pcOperationSMTTask.apply(param);
break;
case "snt":

View File

@@ -354,6 +354,7 @@ public class HandheldServiceImpl implements HandheldService {
if (jsonObject.get("order_code").equals(json2.getString("order_code"))) {
jsonObject.putOpt("due_date", json2.getString("due_date"));
jsonObject.putOpt("region_code", json2.getString("next_region_code"));
jsonObject.putOpt("priority", json2.getString("priority"));
return jsonObject; // 更新的对象
} else {
return jsonObject; // 其他对象保持不变
@@ -392,6 +393,7 @@ public class HandheldServiceImpl implements HandheldService {
schBaseVehiclematerialgroup.setOrder_code(jsonObject.getStr("order_code"));
schBaseVehiclematerialgroup.setDue_date(jsonObject.getStr("due_date"));
schBaseVehiclematerialgroup.setCreate_name(SecurityUtils.getCurrentNickName());
schBaseVehiclematerialgroup.setPriority(jsonObject.getStr("priority"));
schBaseVehiclematerialgroup.setRegion_code(StrUtil.isBlank(finalRegion_code) ? jsonObject.getStr("region_code") : finalRegion_code);
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});

View File

@@ -111,8 +111,8 @@ public class SchBaseVehiclematerialgroup implements Serializable {
@ApiModelProperty(value = "业务链路标识")
private String buss_move_id;
@ApiModelProperty(value = "是否首个流程任务")
private Boolean is_first_flow_task;
@ApiModelProperty(value = "优先级")
private String priority;
@ApiModelProperty(value = "流程编码")
private String flow_code;

View File

@@ -86,7 +86,7 @@
AND vg.workshop_code = #{query.workshop_code}
</if>
<if test="query.job_name != null">
AND vg.job_name = #{query.job_name}
AND vg.job_name like CONCAT('%', #{query.job_name}, '%')
</if>
<if test="query.region_code != null">
AND vg.region_code = #{query.region_code}

View File

@@ -170,6 +170,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
if (CollUtil.isNotEmpty(order_code)) {
orderList.put("region_code", order_code.get(0).getRegion_code());
orderList.put("due_date", order_code.get(0).getDue_date());
orderList.put("priority",order_code.get(0).getPriority());
}
});
maps = maps.stream().sorted(Comparator.comparingLong(order -> {

View File

@@ -29,7 +29,8 @@
sch_base_vehiclematerialgroup.order_code,
sch_base_vehiclematerialgroup.due_date,
sch_base_vehiclematerialgroup.has_work,
sch_base_vehiclematerialgroup.create_time
sch_base_vehiclematerialgroup.create_time,
sch_base_vehiclematerialgroup.priority
FROM
sch_base_point
inner JOIN sch_base_vehiclematerialgroup ON sch_base_point.vehicle_code =

View File

@@ -401,6 +401,18 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
.isNull(seq == 1, SchBasePoint::getVehicle_code)
.eq(StrUtil.isNotBlank(region_code), SchBasePoint::getRegion_code, region_code)
.orderByAsc(seq == 2, SchBasePoint::getIn_order_seq));
if (CollUtil.isEmpty(schBasePoints)) {
schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getIs_lock, false)
.eq(SchBasePoint::getIs_used, true)
.eq(SchBasePoint::getPoint_status, pointStatus)
.eq(!vehicle_type.equals("G01"), SchBasePoint::getPoint_type, "1")
.eq(vehicle_type.equals("G01"), SchBasePoint::getPoint_type, point_type)
.eq(StrUtil.isNotBlank(vehicle_type), SchBasePoint::getCan_vehicle_type, vehicle_type)
.isNull(seq == 2, SchBasePoint::getVehicles)
.isNull(seq == 1, SchBasePoint::getVehicle_code)
.orderByAsc(seq == 2, SchBasePoint::getIn_order_seq));
}
return (CollUtil.isNotEmpty(schBasePoints) && schBasePoints.size() > 0) ? schBasePoints.get(0) : null;
}
@@ -586,7 +598,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
}
@Override
public List<OrderMater> getStructList(String region_code, String vehicle_type) {
public List<OrderMater> getStructList(String pointCode, String vehicle_type) {
//1.查询的结果一个托盘有多个800PC需要怎么展示
Param dueDate = iSysParamService.findByCode("due_date");
String s = null;
@@ -594,7 +606,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
s = DateUtil.offsetDay(new Date(), Integer.parseInt(dueDate.getValue())).toDateStr();
}
SchBasePoint schBasePoint = this.getOne(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getPoint_code, region_code));
.eq(SchBasePoint::getPoint_code, pointCode));
List<OrderMater> structList = pointMapper.getStructList(schBasePoint.getRegion_code(), "G01", s);
List<OrderMater> collect = structList.stream().collect(Collectors.groupingBy(
OrderMater::getVehicle_code,
@@ -621,14 +633,16 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
public SchBasePoint selectEmpVehicleByRegionCode(String region_code, String vehicleType) {
synchronized (lock3) {
//查询满足条件的站点
List<SchBasePoint> schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getIs_lock, false).
isNotNull(SchBasePoint::getVehicle_code)
List<SchBasePoint> schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getIs_lock, false)
.isNotNull(SchBasePoint::getVehicle_code)
.eq(StrUtil.isNotEmpty(region_code), SchBasePoint::getRegion_code, region_code)
.eq(SchBasePoint::getPoint_status, GoodsEnum.EMPTY_PALLETS.getValue())
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
.eq(SchBasePoint::getIs_used, true));
if (CollectionUtils.isEmpty(schBasePoints)) {
schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getIs_lock, false)
schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class)
.eq(SchBasePoint::getIs_lock, false)
.isNotNull(SchBasePoint::getVehicle_code)
.eq(SchBasePoint::getPoint_status, GoodsEnum.EMPTY_PALLETS.getValue())
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)

View File

@@ -31,6 +31,9 @@ import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* Connector下料
*/
@Slf4j
@Component(value = "CNTTask")
public class CNTTask extends AbstractTask {

View File

@@ -31,7 +31,6 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* @author LENOVO
* connector补空托任务
*/
@Slf4j

View File

@@ -32,8 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author LENOVO
* 空托盘送回
* 空料架送到内部加工过道区
*/
@Slf4j
@Component(value = "ATTask")

View File

@@ -1,6 +1,7 @@
package org.nl.wms.sch.task_manage.task.tasks.handheld;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.nl.common.enums.GoodsEnum;
@@ -10,6 +11,7 @@ import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
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;
@@ -28,7 +30,6 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author LENOVO
* 工序下料
*/
@Component("BLANKINGTask")
@@ -67,10 +68,10 @@ public class BlankingTask extends AbstractTask {
SchBasePoint schBasePoint = null;
if (ObjectUtil.isEmpty(task.getRegion_code())) {
schBasePoint = schBasePointService.selectByGroundPoint(null,
GoodsEnum.OUT_OF_STOCK.getValue(), mdBaseVehicle.getVehicle_type(), 1,1);
GoodsEnum.OUT_OF_STOCK.getValue(), mdBaseVehicle.getVehicle_type(), 1, 1);
} else {
schBasePoint = schBasePointService.selectByGroundPoint(task.getRegion_code(),
GoodsEnum.OUT_OF_STOCK.getValue(), mdBaseVehicle.getVehicle_type(), 1,1);
GoodsEnum.OUT_OF_STOCK.getValue(), mdBaseVehicle.getVehicle_type(), 1, 1);
}
if (ObjectUtil.isEmpty(schBasePoint)) {
task.setRemark("未找到所需点位!");
@@ -170,6 +171,10 @@ public class BlankingTask extends AbstractTask {
PointUtils.setUpdateByAcs(schBasePoint);
schBasePointService.updateById(schBasePoint);
}
if (StrUtil.isNotEmpty(taskObj.getVehicle_code())) {
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()));
}
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
taskObj.setTask_status(TaskStatus.CANCELED.getCode());

View File

@@ -1,3 +1,4 @@
/*
package org.nl.wms.sch.task_manage.task.tasks.handheld;
import cn.hutool.core.util.ObjectUtil;
@@ -27,10 +28,12 @@ import org.springframework.stereotype.Component;
import java.util.List;
*/
/**
* @author LENOVO
* 手持呼叫空料笼
*/
*//*
@Component("CALLEMPTYTask")
public class CallEmptyTask extends AbstractTask {
@@ -170,3 +173,4 @@ public class CallEmptyTask extends AbstractTask {
taskService.updateById(taskObj);
}
}
*/

View File

@@ -33,7 +33,6 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author LENOVO
* 手持创建空料笼入库
*/
@Component("EMPTYCAGETask")

View File

@@ -28,8 +28,7 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author LENOVO
* 手持创建空料笼入库
* 物料转运
*/
@Component("MTTask")
public class MtTask extends AbstractTask {

View File

@@ -15,6 +15,7 @@ import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
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;
@@ -33,8 +34,7 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author LENOVO
* 手持创建空料笼入库
* 手持创建空载具入库
*/
@Component("RACKTask")
public class RackTask extends AbstractTask {
@@ -68,7 +68,7 @@ public class RackTask extends AbstractTask {
regionCode = RegionEnum.LAG_ROBOT_BEANDING_CELL.getRegion_code();
}
SchBasePoint schBasePoint = schBasePointService.selectByGroundPoint(regionCode,
GoodsEnum.OUT_OF_STOCK.getValue(), vehicle_type, 1,0);
GoodsEnum.OUT_OF_STOCK.getValue(), vehicle_type, 1, 0);
if (ObjectUtil.isEmpty(schBasePoint)) {
task.setRemark("未找到所需点位!");
taskService.updateById(task);
@@ -145,6 +145,10 @@ public class RackTask extends AbstractTask {
.set(SchBasePoint::getPoint_status, GoodsEnum.EMPTY_PALLETS.getValue())
.set(SchBasePoint::getIs_lock, false));
}
if (StrUtil.isNotEmpty(taskObj.getVehicle_code())) {
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()));
}
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark(GeneralDefinition.TASK_FINISH);

View File

@@ -30,7 +30,6 @@ import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author LENOVO
* 补空框任务
*/
@Component("TOSTOREHOUSETask")

View File

@@ -95,6 +95,7 @@ public class PcOperationSMTTask extends AbstractTask {
sendMaterVo1.setOrder_code(jsonObject.getString("order_code"));
sendMaterVo1.setDue_date(jsonObject.getString("due_date"));
sendMaterVo1.setRegion_code(jsonObject.getString("region_code"));
sendMaterVo1.setPriority(jsonObject.getString("priority"));
sendMaterVos.add(sendMaterVo1);
});
}
@@ -112,6 +113,7 @@ public class PcOperationSMTTask extends AbstractTask {
schBaseVehiclematerialgroup.setOrder_code(smv.getOrder_code());
schBaseVehiclematerialgroup.setDue_date(smv.getDue_date());
schBaseVehiclematerialgroup.setHas_work(sendMaterVo.getHas_work());
schBaseVehiclematerialgroup.setPriority(smv.getPriority());
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});
}

View File

@@ -1,6 +1,7 @@
package org.nl.wms.sch.task_manage.task.tasks.pcoperation;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -184,6 +185,10 @@ public class ProcessingSMTTask extends AbstractTask {
PointUtils.setUpdateByAcs(schBasePoint);
schBasePointService.updateById(schBasePoint);
}
if (StrUtil.isNotEmpty(taskObj.getVehicle_code())) {
schBaseVehiclematerialgroupService.remove(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code()));
}
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
taskObj.setTask_status(TaskStatus.CANCELED.getCode());