add:增加订单表和物料组盘绑定表对应类
update:更新冲压下料任务代码
This commit is contained in:
@@ -10,6 +10,7 @@ import org.nl.wms.ext.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.service.IotToWmsService;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -52,4 +53,11 @@ public class IotToWmsController {
|
||||
return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/fjMaterialInfo")
|
||||
@Log("sorting系统查询库存")
|
||||
@ApiOperation("sorting系统查询库存")
|
||||
public ResponseEntity<Object> fjMaterialInfo(@RequestBody SortingReq sortingReq) {
|
||||
return new ResponseEntity<>(iotToWmsService.fjMaterialInfo(sortingReq), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: sxp
|
||||
@@ -17,4 +21,5 @@ public interface IotToWmsService {
|
||||
|
||||
BaseResponse orders(IotOrdersReq iotOrdersReq);
|
||||
|
||||
List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.nl.wms.ext.service.dto.to.iot;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@Data
|
||||
public class SortingReq {
|
||||
private String order;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.ext.service.dto.to.iot;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
||||
*/
|
||||
@Data
|
||||
public class SortingStock {
|
||||
private String vehicleCode;
|
||||
private String materialCode;
|
||||
private String materialName;
|
||||
private String orderCode;
|
||||
}
|
||||
@@ -7,10 +7,15 @@ import org.nl.wms.ext.service.IotToWmsService;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||
import org.nl.wms.ext.service.dto.to.iot.SortingReq;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author sxp
|
||||
*/
|
||||
@@ -21,6 +26,9 @@ public class IotToWmsServiceImpl implements IotToWmsService {
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@Autowired
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
|
||||
@Override
|
||||
public BaseResponse acsApply(JSONObject param) {
|
||||
return acsToWmsService.acsApply(param);
|
||||
@@ -38,4 +46,10 @@ public class IotToWmsServiceImpl implements IotToWmsService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MaterialVehicleBind> fjMaterialInfo(SortingReq sortingReq) {
|
||||
String order = sortingReq.getOrder();
|
||||
return materialVehicleBindService.selectByOrder(order);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -71,6 +71,13 @@ public class PdaController {
|
||||
// return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
|
||||
// }
|
||||
|
||||
@PostMapping("/cyjk")
|
||||
@Log("冲压下料位叫空")
|
||||
@ApiOperation("冲压下料位叫空")
|
||||
public ResponseEntity<Object> cyjk(@RequestBody JSONObject param){
|
||||
return new ResponseEntity<>(pdaService.cyjk(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/dzwck")
|
||||
@Log("待折弯件出库")
|
||||
@ApiOperation("待折弯件出库")
|
||||
@@ -119,4 +126,5 @@ public class PdaController {
|
||||
public ResponseEntity<Object> getVehicleType(){
|
||||
return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
|
||||
}
|
||||
//todo 指令查询 指令取消、指令完成、任务完成、取消、人工组盘、解绑
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ public interface PdaService {
|
||||
|
||||
PdaResponseVo zpjb(JSONObject param);
|
||||
|
||||
PdaResponseVo cyjk(JSONObject param);
|
||||
|
||||
PdaResponseVo dzwck(JSONObject param);
|
||||
|
||||
PdaResponseVo zwjk(JSONObject param);
|
||||
|
||||
@@ -138,6 +138,14 @@ public class PdaServiceImpl implements PdaService {
|
||||
return PdaResponseVo.pdaResultOk("组盘解绑成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponseVo cyjk(JSONObject param) {
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
param.put("taskType", "CYJKTask");
|
||||
acsToWmsService.acsApply(param);
|
||||
return PdaResponseVo.pdaResultOk("待折弯件出库成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponseVo dzwck(JSONObject param) {
|
||||
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
|
||||
@@ -143,17 +143,17 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
// 获取region_name
|
||||
SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code());
|
||||
entity.setRegion_name(baseRegion.getRegion_name());
|
||||
// if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
// String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
// entity.setCan_vehicle_type(can_vehicle_type);
|
||||
// }
|
||||
// String pointStatus = entity.getPoint_status();
|
||||
// // 根据点位状态来判断更新内容
|
||||
// if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
// entity.setVehicle_type("");
|
||||
// entity.setVehicle_code("");
|
||||
// entity.setVehicle_qty(0);
|
||||
// }
|
||||
if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
entity.setCan_vehicle_type(can_vehicle_type);
|
||||
}
|
||||
String pointStatus = entity.getPoint_status();
|
||||
// 根据点位状态来判断更新内容
|
||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
entity.setVehicle_type("");
|
||||
entity.setVehicle_code("");
|
||||
entity.setVehicle_qty(0);
|
||||
}
|
||||
pointMapper.updateById(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package org.nl.wms.sch.process.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.sch.process.service.IOrderProcessService;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Api(tags = "订单工艺信息管理")
|
||||
@RequestMapping("/api/orderProcess")
|
||||
public class OrderProcessController {
|
||||
|
||||
@Autowired
|
||||
private IOrderProcessService orderProcessService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询订单工艺信息")
|
||||
@ApiOperation("查询订单工艺信息")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(orderProcessService.queryAll(whereJson,page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增订单工艺信息")
|
||||
@ApiOperation("新增订单工艺信息")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody OrderProcess entity){
|
||||
orderProcessService.create(entity);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改订单工艺信息")
|
||||
@ApiOperation("修改订单工艺信息")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody OrderProcess entity){
|
||||
orderProcessService.update(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除订单工艺信息")
|
||||
@ApiOperation("删除订单工艺信息")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
orderProcessService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.nl.wms.sch.process.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @description 服务接口
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public interface IOrderProcessService extends IService<OrderProcess> {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param whereJson 条件
|
||||
* @param pageable 分页参数
|
||||
* @return IPage<OrderProcess>
|
||||
*/
|
||||
IPage<OrderProcess> queryAll(Map whereJson, PageQuery pageable);
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param entity /
|
||||
*/
|
||||
void create(OrderProcess entity);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param entity /
|
||||
*/
|
||||
void update(OrderProcess entity);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(Set<String> ids);
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package org.nl.wms.sch.process.service.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("order_process")
|
||||
public class OrderProcess implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "order_id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "ID")
|
||||
private String order_id;
|
||||
|
||||
@ApiModelProperty(value = "订单号")
|
||||
private String order;
|
||||
|
||||
@ApiModelProperty(value = "工序")
|
||||
private String process;
|
||||
|
||||
@ApiModelProperty(value = "额定最后期限")
|
||||
private String last_time;
|
||||
|
||||
@ApiModelProperty(value = "创建人标识")
|
||||
private String create_id;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String create_name;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String create_time;
|
||||
|
||||
@ApiModelProperty(value = "修改人标识")
|
||||
private String update_id;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String update_name;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private String is_delete;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.process.service.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public interface OrderProcessMapper extends BaseMapper<OrderProcess> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,46 @@
|
||||
package org.nl.wms.sch.process.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Data
|
||||
public class OrderProcessDto implements Serializable {
|
||||
|
||||
/** ID */
|
||||
private String order_id;
|
||||
|
||||
/** 订单号 */
|
||||
private String order;
|
||||
|
||||
/** 工序 */
|
||||
private String process;
|
||||
|
||||
/** 额定最后期限 */
|
||||
private String last_time;
|
||||
|
||||
/** 创建人标识 */
|
||||
private String create_id;
|
||||
|
||||
/** 创建人 */
|
||||
private String create_name;
|
||||
|
||||
/** 创建时间 */
|
||||
private String create_time;
|
||||
|
||||
/** 修改人标识 */
|
||||
private String update_id;
|
||||
|
||||
/** 修改人 */
|
||||
private String update_name;
|
||||
|
||||
/** 修改时间 */
|
||||
private String update_time;
|
||||
|
||||
/** 是否删除 */
|
||||
private String is_delete;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.wms.sch.process.service.dto;
|
||||
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
|
||||
/**
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
public class OrderProcessQuery extends BaseQuery<OrderProcess> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package org.nl.wms.sch.process.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.process.service.IOrderProcessService;
|
||||
import org.nl.wms.sch.process.service.dao.mapper.OrderProcessMapper;
|
||||
import org.nl.wms.sch.process.service.dao.OrderProcess;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @description 服务实现
|
||||
* @author order_process
|
||||
* @date 2024-05-09
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class OrderProcessServiceImpl extends ServiceImpl<OrderProcessMapper, OrderProcess> implements IOrderProcessService {
|
||||
|
||||
@Autowired
|
||||
private OrderProcessMapper orderProcessMapper;
|
||||
|
||||
@Override
|
||||
public IPage<OrderProcess> queryAll(Map whereJson, PageQuery page){
|
||||
LambdaQueryWrapper<OrderProcess> lam = new LambdaQueryWrapper<>();
|
||||
IPage<OrderProcess> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
orderProcessMapper.selectPage(pages, lam);
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(OrderProcess entity) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
entity.setOrder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setCreate_id(currentUserId);
|
||||
entity.setCreate_name(nickName);
|
||||
entity.setCreate_time(now);
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
orderProcessMapper.insert(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(OrderProcess entity) {
|
||||
OrderProcess dto = orderProcessMapper.selectById(entity.getOrder_id());
|
||||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
|
||||
orderProcessMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAll(Set<String> ids) {
|
||||
// 真删除
|
||||
orderProcessMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -257,6 +257,6 @@ public abstract class AbstractTask {
|
||||
this.feedbackTaskState(param, schBaseTask, result);
|
||||
}
|
||||
|
||||
protected abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result);
|
||||
public abstract void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
@@ -79,7 +81,7 @@ public class CYJKTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -106,18 +108,37 @@ public class CYJKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
//查找空托盘
|
||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||
private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) {
|
||||
if (StringUtils.isEmpty(startRegionStr)) {
|
||||
return null;
|
||||
}
|
||||
String[] reginList = startRegionStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getPoint_type, "1")
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.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;
|
||||
if (ObjectUtil.isNotEmpty(schBasePoints)) {
|
||||
return schBasePoints.get(0);
|
||||
}
|
||||
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
|
||||
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
|
||||
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
|
||||
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
|
||||
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -144,14 +165,15 @@ public class CYJKTask extends AbstractTask {
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
|
||||
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_code2("");
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
// 任务完成
|
||||
@@ -186,7 +208,7 @@ public class CYJKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
|
||||
@@ -19,6 +19,8 @@ import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.materialBind.service.IMaterialVehicleBindService;
|
||||
import org.nl.wms.sch.materialBind.service.dao.MaterialVehicleBind;
|
||||
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;
|
||||
@@ -29,6 +31,7 @@ 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.enums.VehicleTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
@@ -37,6 +40,7 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@@ -58,10 +62,9 @@ public class CYXLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Autowired
|
||||
private IMaterialVehicleBindService materialVehicleBindService;
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@@ -71,7 +74,7 @@ public class CYXLTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
|
||||
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str(), task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -94,12 +97,13 @@ public class CYXLTask extends AbstractTask {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||
//todo 区域优先级,暂时按照创建任务配置时,区域选择顺序
|
||||
private SchBasePoint findNextPoint(String nextReginStr, String vehicleType) {
|
||||
//todo 需要和外部系统确认载具类型vehicleType参数值,暂时使用PointStatusEnum
|
||||
String[] reginList = nextReginStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, VehicleTypeEnum.GTP.getCode())
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
@@ -122,13 +126,6 @@ public class CYXLTask extends AbstractTask {
|
||||
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();
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -145,41 +142,13 @@ public class CYXLTask extends AbstractTask {
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
// endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code : endPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
//todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型
|
||||
// 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.setMove_way(startPoint);
|
||||
// groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
// groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
// groupEntity.setIs_delete(false);
|
||||
// groupEntity.setMove_way(startPoint);
|
||||
// vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
// taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
@@ -187,7 +156,7 @@ public class CYXLTask extends AbstractTask {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
jsonObject.put("taskType", "CYJKTask");
|
||||
jsonObject.put("next_device_code",taskObj.getPoint_code1());
|
||||
jsonObject.put("next_device_code", taskObj.getPoint_code1());
|
||||
acsToWmsService.acsApply(jsonObject);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
@@ -215,7 +184,8 @@ public class CYXLTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
@Transactional
|
||||
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
@@ -228,7 +198,37 @@ public class CYXLTask extends AbstractTask {
|
||||
agvStateParam.setStatus("1");
|
||||
//叉车到位 请求取货
|
||||
String url = iotUrl + "iot/agvarrive";
|
||||
applyIot(url, agvStateParam, result);
|
||||
JSONObject jsonObject = applyIot(url, agvStateParam, result);
|
||||
if (jsonObject != null) {
|
||||
//todo 校验返回的物料信息和订单工艺信息
|
||||
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.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
groupEntity.setVehicle_type(schBaseTask.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint.getPoint_code());
|
||||
groupEntity.setPoint_name(startPoint.getPoint_name());
|
||||
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(schBaseTask.getTask_code());
|
||||
groupEntity.setMove_way(startPoint.getPoint_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
//todo 多个物料信息绑定
|
||||
MaterialVehicleBind materialVehicleBind = new MaterialVehicleBind();
|
||||
materialVehicleBind.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
materialVehicleBind.setCreate_time(DateUtil.now());
|
||||
materialVehicleBind.setVehicle_code(jsonObject.getString("vehicle_code"));
|
||||
materialVehicleBind.setGroup_id(groupEntity.getGroup_id());
|
||||
materialVehicleBind.setMaterial_code(jsonObject.getString("material_code"));
|
||||
materialVehicleBind.setMaterial_name(jsonObject.getString("material_name"));
|
||||
materialVehicleBind.setOrder_code(jsonObject.getString("order_code"));
|
||||
materialVehicleBindService.save(materialVehicleBind);
|
||||
}
|
||||
//锁住起点
|
||||
startPoint.setIng_task_code(schBaseTask.getTask_code());
|
||||
pointService.update(startPoint);
|
||||
@@ -244,12 +244,13 @@ public class CYXLTask extends AbstractTask {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("task_code", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
jsonObject.put("taskType", "CYJKTask");
|
||||
jsonObject.put("next_device_code",schBaseTask.getPoint_code1());
|
||||
jsonObject.put("vehicleType", schBaseTask.getVehicle_type());
|
||||
jsonObject.put("next_device_code", schBaseTask.getPoint_code1());
|
||||
acsToWmsService.acsApply(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
private JSONObject applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
try {
|
||||
@@ -261,10 +262,12 @@ public class CYXLTask extends AbstractTask {
|
||||
log.info("请求iot成功,返回结果为:{}", res);
|
||||
result.setCode(HttpStatus.OK.value());
|
||||
result.setMessage("请求iot成功!");
|
||||
return res.getJSONObject("data");
|
||||
} else {
|
||||
log.error("请求iot失败:{}", res);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
@@ -272,6 +275,7 @@ public class CYXLTask extends AbstractTask {
|
||||
log.error("请求iot失败:{}", msg);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,263 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.fj;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
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;
|
||||
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.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.VehicleTypeEnum;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: sxp
|
||||
* @Description: 分拣叫空盘
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@TaskType("FJJKTask")
|
||||
@Lazy
|
||||
public class FJJKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJJKTask";
|
||||
/**
|
||||
* 入口
|
||||
*/
|
||||
private static String ENTRANCE = "1";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@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) {
|
||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str(),task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
log.info("冲压机叫空盘未找到所需点位!");
|
||||
continue;
|
||||
}
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("创建完成");
|
||||
task.setVehicle_code(point.getVehicle_code());
|
||||
task.setVehicle_type(point.getVehicle_type());
|
||||
taskService.update(task);
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
point.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
point.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.update(point);
|
||||
//下发
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
//查找空托盘
|
||||
private SchBasePoint findStartPoint(String startRegionStr,String vehicleType) {
|
||||
if (StringUtils.isEmpty(startRegionStr)) {
|
||||
return null;
|
||||
}
|
||||
String[] reginList = startRegionStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoints)) {
|
||||
return schBasePoints.get(0);
|
||||
}
|
||||
if (VehicleTypeEnum.LK_RO1.getCode().equals(vehicleType) || VehicleTypeEnum.LK_RO2.getCode().equals(vehicleType)) {
|
||||
//空托盘从空托盘货架位就近获取,补空料笼从货架及料笼暂存区获取
|
||||
LambdaQueryWrapper<SchBasePoint> tempAreaLam = new LambdaQueryWrapper<>();
|
||||
tempAreaLam.eq(SchBasePoint::getRegion_code, "CDLKZC")
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.eq(SchBasePoint::getCan_vehicle_type, vehicleType)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
List<SchBasePoint> tempAreaList = pointService.list(tempAreaLam);
|
||||
return ObjectUtil.isNotEmpty(tempAreaList) ? tempAreaList.get(0) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
// endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
// 起点解锁
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
startPointObj.setIng_task_code("");
|
||||
pointService.update(startPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
agvStateParam.setDevice_code(schBaseTask.getPoint_code2());
|
||||
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
|
||||
String phase = param.getString("phase");
|
||||
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
|
||||
SchBasePoint endPoint = pointService.getById(schBaseTask.getPoint_code2());
|
||||
if ("7".equals(phase)) {
|
||||
//todo 请求放货状态需要修改
|
||||
agvStateParam.setStatus("3");
|
||||
//叉车到位 请求放货
|
||||
String url = iotUrl + "iot/agvarrive";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//锁住终点
|
||||
endPoint.setIng_task_code(schBaseTask.getTask_code());
|
||||
pointService.update(endPoint);
|
||||
}
|
||||
if ("9".equals(phase)) {
|
||||
//todo 请求放货状态需要修改
|
||||
agvStateParam.setStatus("4");
|
||||
//取货完成,请求离开
|
||||
String url = iotUrl + "iot/agvfinish";
|
||||
applyIot(url, agvStateParam, result);
|
||||
//终点解锁 设置载具类型和编码
|
||||
endPoint.setIng_task_code("");
|
||||
// endPoint.setVehicle_code(schBaseTask.getVehicle_code());
|
||||
// endPoint.setVehicle_type(schBaseTask.getVehicle_type());
|
||||
pointService.update(endPoint);
|
||||
}
|
||||
}
|
||||
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||
log.info("请求iot参数为:{}", jsonParam);
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(jsonParam)
|
||||
.execute().body();
|
||||
JSONObject res = JSONObject.parseObject(resultMsg);
|
||||
if ("200".equals(res.getString("code"))) {
|
||||
log.info("请求iot成功,返回结果为:{}", res);
|
||||
result.setCode(HttpStatus.OK.value());
|
||||
result.setMessage("请求iot成功!");
|
||||
} else {
|
||||
log.error("请求iot失败:{}", res);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//请求iot失败
|
||||
log.error("请求iot失败:{}", msg);
|
||||
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||
result.setMessage("请求iot失败!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -88,6 +88,8 @@ public class FJSLTask extends AbstractTask {
|
||||
}
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setVehicle_code(point.getVehicle_code());
|
||||
task.setVehicle_type(point.getVehicle_type());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
@@ -146,14 +148,15 @@ public class FJSLTask extends AbstractTask {
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
// 起点清空
|
||||
startPointObj.setVehicle_code("");
|
||||
startPointObj.setVehicle_code2("");
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setVehicle_type("");
|
||||
startPointObj.setVehicle_qty(0);
|
||||
startPointObj.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
//todo 分拣上料完成后 组盘信息解绑
|
||||
@@ -199,7 +202,7 @@ public class FJSLTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
public void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||
AgvStateParam agvStateParam = new AgvStateParam();
|
||||
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||
|
||||
@@ -94,6 +94,7 @@ public class FJXLTask extends AbstractTask {
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||
//todo 添加点位类型为对应载具
|
||||
String[] reginList = nextReginStr.split(",");
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||
|
||||
Reference in New Issue
Block a user