1.ACS与LMS公共交互接口调整
2.满架下料实现及自测 3.固化室放满通知自动门 4.自动门反馈更改点位状态
This commit is contained in:
@@ -52,8 +52,16 @@ public class AcsToWmsController {
|
||||
@ApiOperation("设备状态同步")
|
||||
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> status(@RequestBody Map param) {
|
||||
schBasePointService.updateStatus(JSONObject.parseObject(JSON.toJSONString(param)));
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
public ResponseEntity<Object> status(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.status(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/notify")
|
||||
@Log("acs通知wms")
|
||||
@ApiOperation("acs通知wms")
|
||||
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> notify(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.notify(param), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ public interface AcsToWmsService {
|
||||
BaseResponse acsApply(JSONObject param);
|
||||
|
||||
/** 任务反馈 */
|
||||
BaseResponse feedbackTaskStatus(JSONObject param);
|
||||
BaseResponse status(JSONObject param);
|
||||
|
||||
/** 任务反馈 */
|
||||
BaseResponse notify(JSONObject param);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.wms.ext.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.wms.ext.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: Wms请求Acs,统一管理与ACS对接的接口
|
||||
* @Date: 2023/6/30
|
||||
*/
|
||||
public interface WmsToAcsService {
|
||||
|
||||
/**
|
||||
* 下发指令通知
|
||||
* 统一在这里维护
|
||||
* @param map: 任务链表
|
||||
* @return
|
||||
*/
|
||||
AcsResponse notifyAcs(JSONObject map);
|
||||
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -38,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -64,6 +66,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private TaskFactory taskFactory;
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
@Autowired
|
||||
private PointMapper pointMapper;
|
||||
|
||||
// 初始化反射方法
|
||||
@PostConstruct
|
||||
@@ -78,15 +82,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
public BaseResponse acsApply(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
||||
String requestMethodName = param.getString("request_medthod_name");
|
||||
BaseResponse result = BaseResponse.build(requestNo);
|
||||
String device_code = param.getString("device_code");
|
||||
param.put("config_code",requestMethodCode);
|
||||
try {
|
||||
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
||||
Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode));
|
||||
if (method == null) {
|
||||
throw new BadRequestException("请求方法不存在");
|
||||
if(ObjectUtil.isEmpty(requestMethodCode)){
|
||||
throw new BadRequestException("任务类型不正确!requestMethodCode:"+requestMethodName+",device_code:"+device_code);
|
||||
}
|
||||
result = (BaseResponse) method.invoke(this, param);
|
||||
AbstractTask task = taskFactory.getTask(requestMethodCode);
|
||||
// 执行创建任务
|
||||
task.apply(param);
|
||||
} catch (Exception e) {
|
||||
String message = ObjectUtil.isEmpty(e.getMessage())
|
||||
? ((InvocationTargetException) e).getTargetException().getMessage()
|
||||
@@ -106,7 +113,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
* 任务反馈
|
||||
*/
|
||||
@Override
|
||||
public BaseResponse feedbackTaskStatus(JSONObject param) {
|
||||
public BaseResponse status(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
|
||||
String taskId = taskStatusRequest.getTask_id();
|
||||
@@ -148,4 +155,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* acs反馈wms单独场景
|
||||
*/
|
||||
@Override
|
||||
public BaseResponse notify(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
log.info("notifyAcs - 请求参数 {}", param);
|
||||
Integer type=param.getInteger("type");
|
||||
switch(type) {
|
||||
case 1:
|
||||
//自动门反馈设备状态,将对应十个固化室工位的状态修改为传入状态
|
||||
String device_code = param.getString("device_code");
|
||||
String ghs_device_code="GHS"+device_code.substring(device_code.length()-2);
|
||||
String state = param.getString("state");
|
||||
pointMapper.updatePointStatus(ghs_device_code,state);
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return BaseResponse.responseOk(requestNo, "反馈成功!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.nl.wms.ext.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: WMS请求ACS - 业务开发
|
||||
* @Date: 2023/6/30
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
|
||||
|
||||
@Override
|
||||
public AcsResponse notifyAcs(JSONObject map) {
|
||||
String api = "api/wms/notify";
|
||||
AcsResponse resultForAcs = AcsUtil.notifyAcs2(api, map);
|
||||
// 记录日志
|
||||
// interactRecordService.saveRecord("下发任务", list, resultForAcs, GeneralDefinition.LMS_ACS);
|
||||
return resultForAcs;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -137,6 +137,9 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
@ApiModelProperty(value = "移动途径")
|
||||
private String move_way;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
|
||||
@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -39,6 +41,8 @@ public abstract class AbstractTask {
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private IMdBaseMaterialService materialService;
|
||||
|
||||
/**
|
||||
* 任务创建
|
||||
@@ -189,6 +193,9 @@ public abstract class AbstractTask {
|
||||
if (ObjectUtil.isEmpty(workorder)) {
|
||||
throw new BadRequestException("设备" + one.getPoint_code() + "工单未生产!");
|
||||
}
|
||||
MdBaseMaterial mdBaseMaterial=materialService.getOne(new LambdaQueryWrapper<MdBaseMaterial>()
|
||||
.eq(MdBaseMaterial::getMaterial_id,workorder.getMaterial_id()));
|
||||
param.put("material_type",mdBaseMaterial.getMaterial_code());
|
||||
param.put("workorder_code", workorder.getWorkorder_code()); // 静置时间
|
||||
// 设置任务数据
|
||||
task.setVehicle_type(workorder.getVehicle_type());
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 通用定义类型数据
|
||||
* @Date: 2023/7/13
|
||||
*/
|
||||
public class GeneralDefinition {
|
||||
/** 未知 */
|
||||
public static final String UNKNOWN = "-";
|
||||
// 统一编码定义
|
||||
/** 窑自动任务开启 */
|
||||
public static final String AUTO_KILN_CALL = "auto_kiln_call";
|
||||
// 是否
|
||||
/**是/正确/可用... */
|
||||
public static final String YES = "1";
|
||||
/** 否/错误/不可用... */
|
||||
public static final String NO = "0";
|
||||
// 载具类型
|
||||
/** 料盅 */
|
||||
public static final String MATERIAL_CUP = "LZ";
|
||||
/** 钢托盘 */
|
||||
public static final String STEEL_TRAY = "GTP";
|
||||
// 账号定义
|
||||
/** acs系统 */
|
||||
public static final String ACS_ID = "2";
|
||||
/** acs系统 */
|
||||
public static final String ACS_NAME = "ACS系统";
|
||||
/** mes系统 */
|
||||
public static final String MES_ID = "3";
|
||||
/** mes系统 */
|
||||
public static final String MES_NAME = "MES系统";
|
||||
// 点位类型
|
||||
/** 设备位 */
|
||||
public static final String DEVICE_POINT = "1";
|
||||
/** 对接位 */
|
||||
public static final String DOCKING_POINT = "2";
|
||||
// 出入口
|
||||
/**入口**/
|
||||
public static final String ENTRANCE = "1";
|
||||
/**出口**/
|
||||
public static final String EXIT = "2";
|
||||
// 任务生产方式
|
||||
/**自动创建**/
|
||||
public static final String AUTO_CREATION = "1";
|
||||
/**ACS创建**/
|
||||
public static final String ACS_CREATION = "2";
|
||||
// 请求方向
|
||||
/**ACS->LMS**/
|
||||
public static final String ACS_LMS = "1";
|
||||
/**LMS->ACS**/
|
||||
public static final String LMS_ACS = "2";
|
||||
/**MES->LMS**/
|
||||
public static final String MES_LMS = "3";
|
||||
/**LMS->MES**/
|
||||
public static final String LMS_MES = "4";
|
||||
// 区域定义
|
||||
/** 料盅睏料线区域 */
|
||||
public static final String LZKLX = "LZKLX";
|
||||
/** 干燥窑区域 */
|
||||
public static final String GZY = "GZY";
|
||||
// 特殊: 1-缓存输送线入口,2-缓存输送线出口,3-上输送线,4-下输送线
|
||||
/** 上输送线 */
|
||||
public static final String UPPER_CONVEYOR_LINE = "3";
|
||||
/** 下输送线 */
|
||||
public static final String LOWER_CONVEYOR_LINE = "4";
|
||||
// 参数名称
|
||||
/** 是否连接 */
|
||||
public static final String IS_CONNECT_ACS = "is_connect_acs";
|
||||
/** ACS路径 */
|
||||
public static final String ACS_URL = "acs_url";
|
||||
/** 是否连接 */
|
||||
public static final String IS_CONNECT_MES = "is_connect_mes";
|
||||
/** MES路径 */
|
||||
public static final String MES_URL = "mes_url";
|
||||
// 完成/取消
|
||||
/** 任务完成 */
|
||||
public static final String TASK_FINISH = "任务完成";
|
||||
/** 任务取消 */
|
||||
public static final String TASK_CANCEL = "任务取消";
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@@ -8,8 +9,11 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import java.util.List;
|
||||
@@ -55,4 +59,47 @@ public class AcsUtil {
|
||||
throw new BadRequestException(result.getString("message"));*/
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新的请求方式:对象中包含数组
|
||||
* @param api
|
||||
* @param object
|
||||
* @return
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> AcsResponse notifyAcs2(String api, T object) {
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
//判断是否连接ACS系统
|
||||
Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_ACS);
|
||||
if (ObjectUtil.isEmpty(isConnectAcs)) {
|
||||
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.IS_CONNECT_ACS + "不存在");
|
||||
}
|
||||
String isConnect = isConnectAcs.getValue();
|
||||
//ACS地址:127.0.0.1:8010
|
||||
Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.ACS_URL);
|
||||
if (ObjectUtil.isEmpty(acsUrlObj)) {
|
||||
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.ACS_URL + "不存在");
|
||||
}
|
||||
String acsUrl = acsUrlObj.getValue();
|
||||
JSONObject result;
|
||||
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) {
|
||||
return AcsResponse.requestRefuse("未连接ACS!");
|
||||
}
|
||||
String url = acsUrl + api;
|
||||
log.info("下发acs任务的参数为:{}", object.toString());
|
||||
AcsResponse resultForAcs;
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(JSON.toJSONString(object))
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
resultForAcs = JSONObject.toJavaObject(result, AcsResponse.class);
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//网络不通
|
||||
log.error("连接失败:{}", msg);
|
||||
return AcsResponse.requestRefuse("网络不通,操作失败!");
|
||||
}
|
||||
return resultForAcs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
@@ -67,16 +68,17 @@ public class MJXLTask extends AbstractTask {
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
// 找终点
|
||||
SchBasePoint startPoint= pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
String materialType=jsonObject.getString("material_type");
|
||||
String materialType = jsonObject.getString("material_type");
|
||||
SchBasePoint point = findNextPoint(startPoint, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
log.info("未找到当前符合条件的点位materialType:{},",materialType);
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
@@ -86,7 +88,8 @@ public class MJXLTask extends AbstractTask {
|
||||
taskService.update(task);
|
||||
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setVehicle_qty(point.getVehicle_qty()+1);
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
point.setVehicle_qty(point.getVehicle_qty() + 1);
|
||||
point.setVehicle_type(materialType);
|
||||
pointService.update(point);
|
||||
|
||||
@@ -107,29 +110,31 @@ public class MJXLTask extends AbstractTask {
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint, JSONObject extGroupData) {
|
||||
String regionCode=null;
|
||||
String materialType=extGroupData.getString("material_type");
|
||||
if("TBX1".equals(startPoint.getRegion_code())){
|
||||
String regionCode = null;
|
||||
String materialType = extGroupData.getString("material_type");
|
||||
if ("TBX1".equals(startPoint.getRegion_code())) {
|
||||
//TBX1找A区
|
||||
regionCode="GHS1";
|
||||
regionCode = "GHS1";
|
||||
|
||||
}else if ("TBX2".equals(startPoint.getRegion_code())){
|
||||
} else if ("TBX2".equals(startPoint.getRegion_code())) {
|
||||
//TBX2找B区
|
||||
regionCode="GHS2";
|
||||
regionCode = "GHS2";
|
||||
}
|
||||
List<SchBasePoint> schBasePointList=pointMapper.findPointByRegion(regionCode);
|
||||
for (SchBasePoint schBasePoint:schBasePointList){
|
||||
if(!schBasePoint.getPoint_code().endsWith("01")&&
|
||||
!schBasePoint.getPoint_code().endsWith("06")){
|
||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode,"2");
|
||||
for (SchBasePoint schBasePoint : schBasePointList) {
|
||||
if (!schBasePoint.getPoint_code().endsWith("01") &&
|
||||
!schBasePoint.getPoint_code().endsWith("06")) {
|
||||
continue;
|
||||
}
|
||||
if((schBasePoint.getVehicle_type()==null||
|
||||
if ((ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||
|
||||
materialType.equals(schBasePoint.getVehicle_type()))
|
||||
&&schBasePoint.getVehicle_qty()<3){
|
||||
&& "2".equals(schBasePoint.getPoint_status())
|
||||
&& schBasePoint.getVehicle_qty() < 3) {
|
||||
log.info("找到当前符合条件的点位{}",schBasePoint.getPoint_code());
|
||||
return schBasePoint;
|
||||
}
|
||||
}
|
||||
return new SchBasePoint();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -152,9 +157,9 @@ public class MJXLTask extends AbstractTask {
|
||||
? taskObj.getVehicle_code()
|
||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -171,11 +176,11 @@ public class MJXLTask extends AbstractTask {
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(endPointObj.getVehicle_code()==null?"":endPointObj.getVehicle_code()+vehicle_code+",");
|
||||
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
@@ -195,7 +200,7 @@ public class MJXLTask extends AbstractTask {
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
@@ -213,6 +218,11 @@ public class MJXLTask extends AbstractTask {
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
//任务取消把原先占用的位置释放
|
||||
endPointObj.setVehicle_qty(endPointObj.getVehicle_qty()-1);
|
||||
if(endPointObj.getVehicle_qty()<=0){
|
||||
endPointObj.setVehicle_type(null);
|
||||
}
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -19,12 +22,16 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -58,83 +65,141 @@ public class GHSFMTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
/**
|
||||
* 1.扫描每个允许放货的固化室01和06位置是否满足三列均已放满,开始下一层判断
|
||||
* 2.如果当列1-5或6-10总15个位置已经放满,则进行下一层判断
|
||||
* 3.如果该固化室30个位置全部放满,则通知acs告知固化室开始固化
|
||||
* 4.如果内部2-5或7-10仍有空列,则生成1-(2-5),6-(7-10)的任务,优先级为8最高
|
||||
*/
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion("GHS","2");
|
||||
for (SchBasePoint schBasePoint : schBasePointList) {
|
||||
if (!schBasePoint.getPoint_code().endsWith("01") &&
|
||||
!schBasePoint.getPoint_code().endsWith("06")) {
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
if (schBasePoint.getVehicle_qty()==3&&ObjectUtil.isEmpty(schBasePoint.getIng_task_code())) {
|
||||
log.info("固化室对接位{}已经放满,开始进行后续判断",schBasePoint.getPoint_code());
|
||||
String first=schBasePoint.getPoint_code().substring(0,schBasePoint.getPoint_code().length()-2);
|
||||
String last=schBasePoint.getPoint_code().substring(schBasePoint.getPoint_code().length()-1);
|
||||
String middle=schBasePoint.getPoint_code().substring(schBasePoint.getPoint_code().length()-4,schBasePoint.getPoint_code().length()-2);
|
||||
boolean flag=false;
|
||||
String pointCode=null;
|
||||
//倒叙检查是否有符合要求的终点
|
||||
for(int i=4;i>0;i--){
|
||||
pointCode=first+ String.format("%02d",Integer.valueOf(last)+i);
|
||||
for(SchBasePoint schBasePoint1 : schBasePointList){
|
||||
if (schBasePoint1.getPoint_code().equals(pointCode)
|
||||
&&schBasePoint1.getVehicle_qty()==0&&ObjectUtil.isEmpty(schBasePoint1.getIng_task_code())){
|
||||
log.info("找到当前列内部存在空位{}",pointCode);
|
||||
flag=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(flag){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (flag){
|
||||
//生成任务并下发
|
||||
this.createTask(schBasePoint,pointCode);
|
||||
}else{
|
||||
//如果当列均已放满,检查隔壁列是否已全部放满
|
||||
if("1".equals(last)){
|
||||
last="6";
|
||||
}
|
||||
for(int i=0;i<=4;i++){
|
||||
pointCode=first+ String.format("%02d",Integer.valueOf(last)+i);
|
||||
for(SchBasePoint schBasePoint1 : schBasePointList){
|
||||
if (schBasePoint1.getPoint_code().equals(pointCode)
|
||||
&&(schBasePoint1.getVehicle_qty()!=3||ObjectUtil.isNotEmpty(schBasePoint1.getIng_task_code()))){
|
||||
log.info("检查当前固化室{}隔壁列,找到当前列内部存在空位{},不发送固化请求",schBasePoint.getPoint_code(),pointCode);
|
||||
flag=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
if(!flag){
|
||||
//通知acs已经放满,固化室可以进行固化
|
||||
String device_code="ZDM"+middle;
|
||||
log.info("当前固化室已经全部放满,通知固化室的自动门{}开始固化",device_code);
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("device_code",device_code);
|
||||
map.put("type","1");
|
||||
wmsToAcsService.notifyAcs(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
* 创建任务并下发
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @param schBasePoint
|
||||
* @param endPoint
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
private void createTask(SchBasePoint schBasePoint,String endPoint) {
|
||||
// 申请任务
|
||||
SchBaseTask task = new SchBaseTask(); // 任务实体
|
||||
String apply_point_code =schBasePoint.getPoint_code(); // 请求点
|
||||
String config_code = "GHSFMTask";
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!");
|
||||
// 最大任务数
|
||||
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||
// 获取执行中的任务
|
||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
|
||||
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
|
||||
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
|
||||
"该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
// 获取对接位点位对象
|
||||
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, apply_point_code));
|
||||
// 校验是否需要自动agv
|
||||
if (!pointObj.getIs_auto()) {
|
||||
// 如果不需要自动,则不创建任务
|
||||
return;
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
// 2、创建申请任务
|
||||
task.setConfig_code(config_code);
|
||||
task.setCreate_mode(GeneralDefinition.ACS_CREATION);
|
||||
task.setVehicle_code(schBasePoint.getVehicle_code());
|
||||
task.setVehicle_qty(schBasePoint.getVehicle_qty());
|
||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||
task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码
|
||||
task.setPoint_code2(endPoint);
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
// 设置起/终点
|
||||
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
taskService.create(task);
|
||||
|
||||
//下发
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改任务状态
|
||||
* 1.任务完成时,无需再次组盘,将点位表起点货位三个组盘信息移动到终点
|
||||
* 2.组盘表中三个点位增加移动动作,并且修改当前点位到目标地点
|
||||
* 3.
|
||||
*
|
||||
* @param task_code
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
@@ -146,18 +211,6 @@ public class GHSFMTask extends AbstractTask {
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||
: null;
|
||||
// 载具编码:没有就创建一个
|
||||
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
||||
? taskObj.getVehicle_code()
|
||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -168,46 +221,41 @@ public class GHSFMTask extends AbstractTask {
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
StringBuilder group_id= new StringBuilder();
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_type(startPointObj.getVehicle_type());
|
||||
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_qty(startPointObj.getVehicle_qty());
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
List<String> vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList());
|
||||
for(String vehicleCode:vehicleCodeList) {
|
||||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到");
|
||||
}
|
||||
one.setTask_code(taskObj.getTask_code());
|
||||
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
|
||||
one.setPoint_name(endPointObj.getPoint_name());
|
||||
one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
one.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
one.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
one.setUpdate_time(DateUtil.now());
|
||||
vehiclematerialgroupService.updateById(one);
|
||||
group_id.append(one.getGroup_id()).append(',');
|
||||
}
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setGroup_id(group_id.toString());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
|
||||
@@ -11,6 +11,9 @@ import java.util.List;
|
||||
* @Date: 2023/10/9
|
||||
*/
|
||||
public interface PointMapper {
|
||||
List<SchBasePoint> findPointByRegion(String regionCode);
|
||||
List<SchBasePoint> findPointByRegion(String regionCode,String point_state);
|
||||
List<SchBasePoint> findPointByPoint(String pointCode);
|
||||
|
||||
void updatePointStatus(String device_code,String state);
|
||||
List<SchBasePoint> findPointForYZSL(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,22 @@
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.region_code = #{regionCode}
|
||||
WHERE p.region_code like CONCAT('%', #{regionCode}, '%')
|
||||
and p.point_state = #{point_state}
|
||||
ORDER BY region_code
|
||||
</select>
|
||||
|
||||
<select id="findPointByRegion" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.point_code like CONCAT('%', #{pointCode}, '%')
|
||||
ORDER BY point_code
|
||||
</select>
|
||||
|
||||
<update id="updatePointStatus">
|
||||
update sch_base_point set point_status = #{state}
|
||||
where point_code like CONCAT('%', #{device_code}, '%')
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
@@ -37,11 +37,12 @@ public class PointUtils {
|
||||
*/
|
||||
public static void clearPoint(SchBasePoint point) {
|
||||
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
// point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
point.setVehicle_type("");
|
||||
point.setVehicle_code("");
|
||||
point.setIng_task_code("");
|
||||
point.setVehicle_qty(0);
|
||||
point.setVehicle_type("");
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(point);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user