ACS基线接口改造
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.ext;
|
||||
package org.nl.wms.ext.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@@ -7,6 +7,8 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.ext.service.AcsToWmsService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -29,16 +31,29 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class AcsToWmsController {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService schBaseTaskService;
|
||||
private ISchBasePointService schBasePointService;
|
||||
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
@PostMapping("/apply")
|
||||
@Log("新增任务管理")
|
||||
@ApiOperation("新增任务管理")
|
||||
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> apply(@RequestBody Map param) {
|
||||
schBaseTaskService.apply(JSONObject.parseObject(JSON.toJSONString(param)));
|
||||
public ResponseEntity<Object> apply(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.acsApply(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/status")
|
||||
@Log("设备状态同步")
|
||||
@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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.nl.wms.ext.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: acs请求wms
|
||||
* @Date: 2023/6/26
|
||||
*/
|
||||
public interface AcsToWmsService {
|
||||
/** ACS请求接口 */
|
||||
BaseResponse acsApply(JSONObject param);
|
||||
|
||||
/** 任务反馈 */
|
||||
BaseResponse feedbackTaskStatus(JSONObject param);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package org.nl.wms.ext.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 垛型参数
|
||||
* @Date: 2023/7/18
|
||||
*/
|
||||
@Data
|
||||
public class PalletizeDto {
|
||||
/** 产品编号 */
|
||||
private String product_code;
|
||||
/** A长边 */
|
||||
private String AlongSide;
|
||||
/** B短边 */
|
||||
private String BshortSide;
|
||||
/** H梯形高 */
|
||||
private String Htrapezoidal;
|
||||
/** W厚度 */
|
||||
private String Wthickness;
|
||||
/** 当前垛盘数 */
|
||||
private String tray_qty;
|
||||
/** 垛盘高度 */
|
||||
private String tray_high;
|
||||
/** 垛型类别 */
|
||||
private String crib_category;
|
||||
/** 码垛X1行 */
|
||||
private String palletX1_line;
|
||||
/** 码垛Y1列 */
|
||||
private String palletY1_row;
|
||||
/** 码垛A1角度 */
|
||||
private String palletA1_angle;
|
||||
/** 码垛X2行 */
|
||||
private String palletX2_line;
|
||||
/** 码垛Y2列 */
|
||||
private String palletY2_row;
|
||||
/** 码垛A2角度 */
|
||||
private String palletA2_angle;
|
||||
/** 码垛X3行 */
|
||||
private String palletX3_line;
|
||||
/** 码垛Y3列 */
|
||||
private String palletY3_row;
|
||||
/** 码垛A3角度 */
|
||||
private String palletA3_angle;
|
||||
/** 压垛X1行 */
|
||||
private String pressCribX1_line;
|
||||
/** 压垛Y1列 */
|
||||
private String pressCribY1_row;
|
||||
/** 压垛A1角度 */
|
||||
private String pressCribA1_angle;
|
||||
/** 压垛X2行 */
|
||||
private String pressCribX2_line;
|
||||
/** 压垛Y2列 */
|
||||
private String pressCribY2_row;
|
||||
/** 压垛A2角度 */
|
||||
private String pressCribA2_angle;
|
||||
/** 压垛X3行 */
|
||||
private String pressCribX3_line;
|
||||
/** 压垛Y3列 */
|
||||
private String pressCribY3_row;
|
||||
/** 压垛A3角度 */
|
||||
private String pressCribA3_angle;
|
||||
/** Z轴偏移 */
|
||||
private String Zoffset;
|
||||
/** 码垛层数 */
|
||||
private String pallet_layerQty;
|
||||
/** 压垛层数 */
|
||||
private String pressCrib_layerQty;
|
||||
/** 码层X1间隔 */
|
||||
private String codeLayerX1_interval;
|
||||
/** 码层Y1间隔 */
|
||||
private String codeLayerY1_interval;
|
||||
/** 码层X2间隔 */
|
||||
private String codeLayerX2_interval;
|
||||
/** 码层Y2间隔 */
|
||||
private String codeLayerY2_interval;
|
||||
/** 码层X3间隔 */
|
||||
private String codeLayerX3_interval;
|
||||
/** 码层Y3间隔 */
|
||||
private String codeLayerY3_interval;
|
||||
/** 码层X1偏移 */
|
||||
private String codeLayerX1_offset;
|
||||
/** 码层Y1偏移 */
|
||||
private String codeLayerY1_offset;
|
||||
/** 码层X2偏移 */
|
||||
private String codeLayerX2_offset;
|
||||
/** 码层Y2偏移 */
|
||||
private String codeLayerY2_offset;
|
||||
/** 码层X3偏移 */
|
||||
private String codeLayerX3_offset;
|
||||
/** 码层Y3偏移 */
|
||||
private String codeLayerY3_offset;
|
||||
/** 压层X1间隔 */
|
||||
private String pressLayerX1_interval;
|
||||
/** 压层Y1间隔 */
|
||||
private String pressLayerY1_interval;
|
||||
/** 压层X2间隔 */
|
||||
private String pressLayerX2_interval;
|
||||
/** 压层Y2间隔 */
|
||||
private String pressLayerY2_interval;
|
||||
/** 压层X3间隔 */
|
||||
private String pressLayerX3_interval;
|
||||
/** 压层Y3间隔 */
|
||||
private String pressLayerY3_interval;
|
||||
/** 压层X1偏移 */
|
||||
private String pressLayerX1_offset;
|
||||
/** 压层Y1偏移 */
|
||||
private String pressLayerY1_offset;
|
||||
/** 压层X2偏移 */
|
||||
private String pressLayerX2_offset;
|
||||
/** 压层Y2偏移 */
|
||||
private String pressLayerY2_offset;
|
||||
/** 压层X3偏移 */
|
||||
private String pressLayerX3_offset;
|
||||
/** 压层Y3偏移 */
|
||||
private String pressLayerY3_offset;
|
||||
/** 工具坐标 */
|
||||
private String tool_coordinate;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.nl.wms.ext.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 调用立库接口统一返回参数类
|
||||
*
|
||||
* @author: geng by
|
||||
* @createDate: 2022/11/24
|
||||
*/
|
||||
@Data
|
||||
public class Resp<T> {
|
||||
/**
|
||||
* 成功返回true,失败返回false
|
||||
*/
|
||||
public String result;
|
||||
|
||||
/**
|
||||
* 错误码(0表示成功)1代表入库目的位置有货,其他更多情况待定
|
||||
*/
|
||||
public String code;
|
||||
|
||||
/**
|
||||
* 错误信息,如果成功则为null
|
||||
*/
|
||||
public String comment;
|
||||
|
||||
/**
|
||||
* 报文携带的数据
|
||||
*/
|
||||
public T data;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package org.nl.wms.ext.service.dto;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 统一接口返回 - 请求ACS返回的数据类型 - 以前不做处理的类型
|
||||
* @Date: 2023/7/28
|
||||
*/
|
||||
@Data
|
||||
public class ResultForAcs {
|
||||
private int status;
|
||||
private String message;
|
||||
private String timestamp;
|
||||
private JSONObject data;
|
||||
private JSONArray errArr;
|
||||
|
||||
public static ResultForAcs requestRefuse(String message) {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_BAD_REQUEST);
|
||||
result.setMessage(message);
|
||||
result.setTimestamp(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResultForAcs requestOk() {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_OK);
|
||||
result.setMessage("请求成功");
|
||||
result.setTimestamp(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResultForAcs requestOk(String message, JSONObject data) {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_OK);
|
||||
result.setMessage(message);
|
||||
result.setTimestamp(DateUtil.now());
|
||||
result.setData(data);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package org.nl.wms.ext.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 信号:mode:'1', move:'0'之类
|
||||
* @Date: 2023/7/26
|
||||
*/
|
||||
@Data
|
||||
public class SignalData {
|
||||
|
||||
private String code; // to_command
|
||||
|
||||
private String value; // 1
|
||||
|
||||
public static SignalData buildSignalData(String code, String value) {
|
||||
SignalData signalData = new SignalData();
|
||||
signalData.setCode(code);
|
||||
signalData.setValue(value);
|
||||
return signalData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.nl.wms.ext.service.dto.to;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ACS请求基础实体
|
||||
*/
|
||||
@Data
|
||||
public class BaseRequest {
|
||||
|
||||
/**
|
||||
* 请求号:uuid 唯一,LMS需要返回对应值
|
||||
*/
|
||||
private String requestNo;
|
||||
|
||||
/**
|
||||
* 请求时间
|
||||
*/
|
||||
private String requestDate;
|
||||
|
||||
/**
|
||||
* 请求方法编号
|
||||
*/
|
||||
private String request_medthod_code;
|
||||
|
||||
/**
|
||||
* 请求方法名称
|
||||
*/
|
||||
private String request_medthod_name;
|
||||
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String device_code;
|
||||
|
||||
|
||||
/**
|
||||
* 系统编号
|
||||
*/
|
||||
private String systemCode;
|
||||
|
||||
/**
|
||||
* 扩展参数:砖型等
|
||||
*/
|
||||
private Map<String, String> parameters = new HashMap();
|
||||
|
||||
public static BaseRequest createRequest() {
|
||||
BaseRequest baseRequest = new BaseRequest();
|
||||
baseRequest.setRequestNo(IdUtil.simpleUUID());
|
||||
baseRequest.setRequestDate(DateUtil.now());
|
||||
return baseRequest;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package org.nl.wms.ext.service.dto.to;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseResponse implements Serializable {
|
||||
|
||||
/**
|
||||
* 请求号
|
||||
*/
|
||||
private String requestNo;
|
||||
|
||||
/**
|
||||
* 响应时间
|
||||
*/
|
||||
private String responseDate;
|
||||
|
||||
/**
|
||||
* 结果 200成功
|
||||
*/
|
||||
private int code;
|
||||
|
||||
/**
|
||||
* 信息
|
||||
*/
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 扩展信息
|
||||
*/
|
||||
private Map<String, String> parameters = new HashMap();
|
||||
|
||||
public static BaseResponse build(String requestNo) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
response.setMessage("请求成功");
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
|
||||
public static BaseResponse responseOk(String requestNo) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
response.setMessage("请求成功");
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
public static BaseResponse responseOk(String requestNo, String message) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
response.setMessage(message);
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
public static BaseResponse responseOk(String requestNo, HashMap<String, String> parameters) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
response.setMessage("请求成功");
|
||||
response.setResponseDate(DateUtil.now());
|
||||
response.setParameters(parameters);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static BaseResponse responseError(String requestNo, String message) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
response.setMessage(message);
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
public static BaseResponse responseError(String requestNo, int code, String message) {
|
||||
BaseResponse response = new BaseResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(code);
|
||||
response.setMessage(message);
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package org.nl.wms.ext.service.dto.to.acs;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
|
||||
@Data
|
||||
public class ApplyTaskResponse extends BaseResponse {
|
||||
/**
|
||||
* 是否静置完成 1完成
|
||||
*/
|
||||
private String is_standing_finish;
|
||||
|
||||
/**
|
||||
* 是否优先包装
|
||||
*/
|
||||
private String is_package;
|
||||
private String mix_number;
|
||||
private String weight;
|
||||
private String label_message;
|
||||
|
||||
public static ApplyTaskResponse responseOk(String requestNo) {
|
||||
ApplyTaskResponse response = new ApplyTaskResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setMessage("任务申请成功");
|
||||
response.setResponseDate(DateUtil.now());
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
return response;
|
||||
}
|
||||
|
||||
public static ApplyTaskResponse responseOk(String requestNo, String message) {
|
||||
ApplyTaskResponse response = new ApplyTaskResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setMessage("任务申请成功");
|
||||
response.setResponseDate(DateUtil.now());
|
||||
response.setCode(HttpStatus.HTTP_OK);
|
||||
response.setLabel_message(message);
|
||||
return response;
|
||||
}
|
||||
public static ApplyTaskResponse responseError(String requestNo, String message) {
|
||||
ApplyTaskResponse response = new ApplyTaskResponse();
|
||||
response.setRequestNo(requestNo);
|
||||
response.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
response.setMessage(message);
|
||||
response.setResponseDate(DateUtil.now());
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.nl.wms.ext.service.dto.to.acs;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseRequest;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 取消任务请求
|
||||
* @Date: 2023/7/26
|
||||
*/
|
||||
@Data
|
||||
public class CancelTaskRequest extends BaseRequest {
|
||||
|
||||
/**
|
||||
* 任务标识
|
||||
*/
|
||||
private String ext_task_id;
|
||||
|
||||
/**
|
||||
* 任务编号
|
||||
*/
|
||||
private String task_code;
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
String vehicle_code;
|
||||
|
||||
/**
|
||||
* 扩展属性
|
||||
*/
|
||||
Map<String,String> params;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.nl.wms.ext.service.dto.to.acs;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/8/4
|
||||
*/
|
||||
@Data
|
||||
public class DeviceInfoDto {
|
||||
private String device_code;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 下发acs的反馈数据*new
|
||||
* @Date: 2023/7/26
|
||||
*/
|
||||
@Data
|
||||
public class AcsResponse extends BaseResponse {
|
||||
private JSONArray errArr = new JSONArray();
|
||||
|
||||
public static AcsResponse requestRefuse(String message) {
|
||||
AcsResponse result = new AcsResponse();
|
||||
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
result.setMessage(message);
|
||||
result.setResponseDate(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static AcsResponse requestOk() {
|
||||
AcsResponse result = new AcsResponse();
|
||||
result.setCode(HttpStatus.HTTP_OK);
|
||||
result.setMessage("请求成功");
|
||||
result.setResponseDate(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/8/14
|
||||
*/
|
||||
@Data
|
||||
public class ApplyDeviceDto {
|
||||
|
||||
/**
|
||||
* 设备编码
|
||||
*/
|
||||
private String device_code;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private String qty;
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
private String vehicle_code;
|
||||
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
private String vehicle_type;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseRequest;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 光电信号实时反馈
|
||||
* @Date: 2023/8/10
|
||||
*/
|
||||
@Data
|
||||
public class ApplySignalStatusRequest extends BaseRequest {
|
||||
/**
|
||||
* 光电信号 0无货 1有货
|
||||
*/
|
||||
private String move;
|
||||
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
private String vehicle_type;
|
||||
|
||||
/**
|
||||
* 是否允许 0不允许 1允许
|
||||
*/
|
||||
private String action;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ACS 任务申请请求实体
|
||||
*/
|
||||
@Data
|
||||
public class ApplyTaskRequest extends BaseRequest {
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
private String vehicle_code;
|
||||
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
private String vehicle_type;
|
||||
|
||||
/**
|
||||
* 重量
|
||||
*/
|
||||
private String weight;
|
||||
|
||||
/**
|
||||
* 工单号
|
||||
*/
|
||||
private String order_code;
|
||||
|
||||
/**
|
||||
* 物料
|
||||
*/
|
||||
private String material_code;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private String qty;
|
||||
/**
|
||||
* 关联设备属性
|
||||
*/
|
||||
private List<ApplyDeviceDto> list;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 取消任务
|
||||
* @Date: 2023/7/26
|
||||
*/
|
||||
@Data
|
||||
public class CancelTaskResponse extends BaseResponse {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package org.nl.wms.ext.service.dto.to.wms;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.dto.to.BaseRequest;
|
||||
|
||||
/**
|
||||
* ACS任务反馈请求实体
|
||||
*/
|
||||
@Data
|
||||
public class FeedBackTaskStatusRequest extends BaseRequest {
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
private String task_id;
|
||||
|
||||
/**
|
||||
* 任务code
|
||||
*/
|
||||
private String task_code;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private String task_status;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private String task_type;
|
||||
|
||||
/**
|
||||
* 车号
|
||||
*/
|
||||
private String car_no;
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
private String vehicle_code;
|
||||
|
||||
/**
|
||||
* 动作 1请求取货 2取货完成 3请求放货 4放货完成
|
||||
*/
|
||||
private String action;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
package org.nl.wms.ext.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.ext.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.service.dto.to.wms.FeedBackTaskStatusRequest;
|
||||
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;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
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.NoticeTypeEnum;
|
||||
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.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: acs请求wms的实现类
|
||||
* @Date: 2023/6/26
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
// 反射类方法的缓存
|
||||
private Map<String, Method> methodCache = new ConcurrentHashMap<>();
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
|
||||
// 初始化反射方法
|
||||
@PostConstruct
|
||||
public void initCacheMethod() {
|
||||
for (Method method : this.getClass().getMethods()) {
|
||||
if (method.getParameterCount() == 1 && method.getParameterTypes()[0] == JSONObject.class) {
|
||||
methodCache.put(method.getName(), method);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseResponse acsApply(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
String requestMethodName = param.getString("request_medthod_name");
|
||||
BaseResponse result = BaseResponse.build(requestNo);
|
||||
try {
|
||||
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
||||
Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode));
|
||||
if (method == null) {
|
||||
throw new BadRequestException("请求方法不存在");
|
||||
}
|
||||
result = (BaseResponse) method.invoke(this, param);
|
||||
} catch (Exception e) {
|
||||
String message = ObjectUtil.isEmpty(e.getMessage())
|
||||
? ((InvocationTargetException) e).getTargetException().getMessage()
|
||||
: e.getMessage();
|
||||
log.error("ACS请求LMS出现错误: {}", message);
|
||||
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
result.setMessage(message);
|
||||
result.setRequestNo(requestNo);
|
||||
// 消息通知
|
||||
noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("request_medthod_code"),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务反馈
|
||||
*/
|
||||
@Override
|
||||
public BaseResponse feedbackTaskStatus(JSONObject param) {
|
||||
String requestNo = param.getString("requestNo");
|
||||
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
|
||||
String taskId = taskStatusRequest.getTask_id();
|
||||
if (ObjectUtil.isEmpty(taskId)) {
|
||||
throw new BadRequestException("任务编码不能为空!");
|
||||
}
|
||||
SchBaseTask taskObj = taskService.getById(taskId);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("未找到任务编码为 [" + taskId + "] 的任务");
|
||||
}
|
||||
// 任务处理类
|
||||
String processingClass = taskObj.getConfig_code();
|
||||
//1:执行中,2:完成 ,3:acs取消
|
||||
String acsTaskStatus = param.getString("task_status");
|
||||
String message = "";
|
||||
TaskStatus status = TaskStatus.APPLY;
|
||||
switch (acsTaskStatus) {
|
||||
case "1":
|
||||
status = TaskStatus.EXECUTING;
|
||||
break;
|
||||
case "2":
|
||||
status = TaskStatus.FINISHED;
|
||||
break;
|
||||
case "3":
|
||||
status = TaskStatus.CANCELED;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// 根据配置去工厂类获得类对象
|
||||
AbstractTask abstractTask = taskFactory.getTask(processingClass);
|
||||
// 更新任务
|
||||
try {
|
||||
abstractTask.updateTaskStatus(taskId, status);
|
||||
} catch (Exception e) {
|
||||
log.error("任务状态更新失败: {}", message);
|
||||
return BaseResponse.responseError(requestNo, "任务:[" + taskId + "]状态更新失败," + message);
|
||||
}
|
||||
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -56,4 +56,10 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
*/
|
||||
List<SchBasePoint> getPointList(SchBasePoint region);
|
||||
|
||||
/**
|
||||
* 更改固化室点位状态
|
||||
* @param jsonObject
|
||||
*/
|
||||
void updateStatus(JSONObject jsonObject);
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -141,17 +142,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);
|
||||
}
|
||||
|
||||
@@ -184,4 +185,19 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
.eq(SchBasePoint::getIs_has_workder, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatus(JSONObject jsonObject) {
|
||||
|
||||
String device_code = jsonObject.getString("device_code");
|
||||
Integer state = jsonObject.getInteger("state");
|
||||
if(device_code.startsWith("ZDM")){
|
||||
//todo 根据传入的自动门设备号,将对应自动门的十个点位设置为传入的状态
|
||||
//1-设备禁用 2-取货完毕,允许放货 3-固化完毕,允许取货
|
||||
UpdateWrapper<SchBasePoint> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.like("point_code","GHS"+device_code.substring(device_code.length()-2));
|
||||
updateWrapper.set("point_status",state);
|
||||
pointMapper.update(null,updateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,11 @@ public class SchBaseTask implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "task_code", type = IdType.NONE)
|
||||
@TableId(value = "task_id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "任务标识")
|
||||
private String task_id;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "任务编码")
|
||||
private String task_code;
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
|
||||
@Override
|
||||
public void update(SchBaseTask entity) {
|
||||
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_code());
|
||||
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_id());
|
||||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
@@ -154,6 +154,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String now = DateUtil.now();
|
||||
Assert.notNull(entity.getTask_status(), "任务状态不能为空!");
|
||||
|
||||
entity.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setCreate_id(currentUserId);
|
||||
entity.setCreate_name(nickName);
|
||||
@@ -172,27 +173,34 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
* hint: 根据任务类型来判断校验
|
||||
*/
|
||||
String device_code = ObjectUtil.isNotEmpty(param.getString("device_code")) ? param.getString("device_code") : null;
|
||||
String type = ObjectUtil.isNotEmpty(param.getString("type")) ? param.getString("type") : null;
|
||||
String type = ObjectUtil.isNotEmpty(param.getString("task_type")) ? param.getString("task_type") : null;
|
||||
String vehicle_code = ObjectUtil.isNotEmpty(param.getString("vehicle_code")) ? param.getString("vehicle_code") : null;
|
||||
String vehicle_qty = ObjectUtil.isNotEmpty(param.getString("vehicle_qty")) ? param.getString("vehicle_qty") : null;
|
||||
String configCode = param.getString("config_code");
|
||||
// 校验设备编码
|
||||
if (ObjectUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备编码不能为空!");
|
||||
}
|
||||
//1、如果是送料,检测载具状态
|
||||
if (type.equals("1") && ObjectUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具编码不能为空!");
|
||||
}
|
||||
//2、送空载具
|
||||
//...
|
||||
//3、叫料
|
||||
//...
|
||||
//4、叫空载具
|
||||
//...
|
||||
AbstractTask task = taskFactory.getTask(configCode);
|
||||
// 执行创建任务
|
||||
task.apply(param);
|
||||
String config_code = param.getString("config_code");
|
||||
|
||||
if("4".equals(type)){
|
||||
//4-叫料
|
||||
|
||||
}else if("5".equals(type)){
|
||||
//5-满料出库
|
||||
if(device_code.startsWith("TBX")){
|
||||
config_code="MJXLTask";
|
||||
param.put("config_code",config_code);
|
||||
}
|
||||
|
||||
}else if("6".equals(type)){
|
||||
//6-申请空盘
|
||||
|
||||
}else if("7".equals(type)){
|
||||
//7-空托盘出库
|
||||
|
||||
}
|
||||
|
||||
if(ObjectUtil.isEmpty(config_code)){
|
||||
throw new BadRequestException("任务类型不正确!device_code:"+device_code+",type:"+type);
|
||||
}
|
||||
AbstractTask task = taskFactory.getTask(config_code);
|
||||
// 执行创建任务
|
||||
task.apply(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -210,14 +218,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
|
||||
@Override
|
||||
public void operation(Map<String, Object> param) {
|
||||
String task_code = ObjectUtil.isNotEmpty(param.get("task_code")) ? param.get("task_code").toString() : null;
|
||||
String task_id = ObjectUtil.isNotEmpty(param.get("task_id")) ? param.get("task_id").toString() : null;
|
||||
String method_name = ObjectUtil.isNotEmpty(param.get("method_name")) ? param.get("method_name").toString() : null;
|
||||
String config_code = ObjectUtil.isNotEmpty(param.get("config_code")) ? param.get("config_code").toString() : null;
|
||||
if (ObjectUtil.isEmpty(task_code) || ObjectUtil.isEmpty(method_name) || ObjectUtil.isEmpty(config_code)) {
|
||||
if (ObjectUtil.isEmpty(task_id) || ObjectUtil.isEmpty(method_name) || ObjectUtil.isEmpty(config_code)) {
|
||||
throw new BadRequestException("操作失败");
|
||||
}
|
||||
// 根据标识找到任务
|
||||
SchBaseTask taskOne = schBaseTaskMapper.selectById(task_code);
|
||||
SchBaseTask taskOne = schBaseTaskMapper.selectById(task_id);
|
||||
if (Integer.parseInt(taskOne.getTask_status()) >= Integer.parseInt(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("任务已完成或已取消!");
|
||||
}
|
||||
@@ -233,10 +241,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
//
|
||||
break;
|
||||
case "forceFinish": // 强制完成
|
||||
abstractTask.forceFinish(task_code);
|
||||
abstractTask.forceFinish(task_id);
|
||||
break;
|
||||
case "cancel":
|
||||
abstractTask.cancel(task_code);
|
||||
abstractTask.cancel(task_id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -73,7 +73,7 @@ public abstract class AbstractTask {
|
||||
List<AcsTaskDto> list = new ArrayList<>();
|
||||
for (SchBaseTask task : taskList) {
|
||||
AcsTaskDto taskDto = new AcsTaskDto();
|
||||
taskDto.setExt_task_uuid(task.getTask_code());
|
||||
taskDto.setTask_id(task.getTask_id());
|
||||
taskDto.setTask_code(task.getTask_code());
|
||||
|
||||
taskDto.setRoute_plan_code("normal");
|
||||
@@ -217,4 +217,8 @@ public abstract class AbstractTask {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateTaskStatus(String task_code, TaskStatus status) {
|
||||
this.updateStatus(task_code, status);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
@Data
|
||||
public class AcsTaskDto {
|
||||
//任务标识
|
||||
private String ext_task_uuid;
|
||||
private String task_id;
|
||||
//任务编码
|
||||
private String task_code;
|
||||
//任务类型
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -20,7 +21,9 @@ import java.util.List;
|
||||
public class AcsUtil {
|
||||
public static JSONObject notifyAcs(String api, List<AcsTaskDto> list) {
|
||||
//判断是否连接ACS系统
|
||||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
|
||||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
|
||||
// list转JSONArray
|
||||
String s = JSON.toJSONString(list);
|
||||
JSONObject result = new JSONObject();
|
||||
if (StrUtil.equals("0", isConnect)) {
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
@@ -29,13 +32,13 @@ public class AcsUtil {
|
||||
return result;
|
||||
}
|
||||
//ACS地址:127.0.0.1:8010
|
||||
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL").getValue();
|
||||
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue();
|
||||
|
||||
String url = acsUrl + api;
|
||||
log.info("下发acs任务的参数为:{}", list.toString());
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(list))
|
||||
.body(s)
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -23,11 +23,10 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
@@ -59,11 +58,11 @@ public class BPSLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
@@ -137,8 +136,8 @@ public class BPSLTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
|
||||
@@ -23,11 +23,10 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
@@ -59,11 +58,11 @@ public class KGHJRKTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
@@ -137,8 +136,8 @@ public class KGHJRKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONObject;
|
||||
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.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -23,16 +22,13 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: psh
|
||||
@@ -59,22 +55,24 @@ public class MJXLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @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());
|
||||
// 找终点
|
||||
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);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
String materialType=jsonObject.getString("material_type");
|
||||
SchBasePoint point = findNextPoint(startPoint, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
@@ -87,58 +85,56 @@ public class MJXLTask extends AbstractTask {
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setVehicle_qty(point.getVehicle_qty()+1);
|
||||
point.setVehicle_type(materialType);
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
* 判断目标点位
|
||||
* 1.A区的去A区缓存点,B区的去B区
|
||||
* 2.优先找未放满的固化室的起始位置01和06,且物料必须一致
|
||||
* 4.固化室不满足条件时按顺序取下一个固化室
|
||||
* 5.都不满足则抛出异常暂时等待
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param startPoint
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint, JSONObject extGroupData) {
|
||||
String regionCode=null;
|
||||
String materialType=extGroupData.getString("material_type");
|
||||
if("TBX1".equals(startPoint.getRegion_code())){
|
||||
//TBX1找A区
|
||||
regionCode="GHS1";
|
||||
|
||||
}else if ("TBX2".equals(startPoint.getRegion_code())){
|
||||
//TBX2找B区
|
||||
regionCode="GHS2";
|
||||
}
|
||||
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("压制机的工单不能为空!");
|
||||
List<SchBasePoint> schBasePointList=pointMapper.findPointByRegion(regionCode);
|
||||
for (SchBasePoint schBasePoint:schBasePointList){
|
||||
if(!schBasePoint.getPoint_code().endsWith("01")&&
|
||||
!schBasePoint.getPoint_code().endsWith("06")){
|
||||
continue;
|
||||
}
|
||||
if((schBasePoint.getVehicle_type()==null||
|
||||
materialType.equals(schBasePoint.getVehicle_type()))
|
||||
&&schBasePoint.getVehicle_qty()<3){
|
||||
return schBasePoint;
|
||||
}
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
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;
|
||||
return new SchBasePoint();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
@@ -175,6 +171,7 @@ public class MJXLTask extends AbstractTask {
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(endPointObj.getVehicle_code()==null?"":endPointObj.getVehicle_code()+vehicle_code+",");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
@@ -206,6 +203,7 @@ public class MJXLTask extends AbstractTask {
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
|
||||
@@ -23,11 +23,10 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
@@ -59,11 +58,11 @@ public class TBXBKJTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
@@ -137,8 +136,8 @@ public class TBXBKJTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
|
||||
@@ -23,11 +23,10 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
@@ -59,11 +58,11 @@ public class XSCKTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
@@ -137,8 +136,8 @@ public class XSCKTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
|
||||
@@ -23,11 +23,10 @@ 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.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
@@ -59,11 +58,11 @@ public class ZJBZKDDTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
@@ -137,8 +136,8 @@ public class ZJBZKDDTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStatus(String task_code, TaskStatus status) {
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
|
||||
@@ -0,0 +1,234 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
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.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
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;
|
||||
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.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: psh
|
||||
* @Description: 固化室起始站点放满后自动生成搬运到内部的任务,优先级为8
|
||||
* @Date: 2023/9/28
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@TaskType("GHSFMTask")
|
||||
public class GHSFMTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "GHSFMTask";
|
||||
/**
|
||||
* 入口
|
||||
*/
|
||||
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 yzMapper;
|
||||
|
||||
@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);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
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.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
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.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
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;
|
||||
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.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: psh
|
||||
* @Description: 固化室通知取货后将十个点位增加到取货队列,固化室发起自动取货任务,当前固化室十个点位取货完毕后通知固化室取货完毕
|
||||
* @Date: 2023/9/28
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@TaskType("GHSQHTask")
|
||||
public class GHSQHTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "GHSQHTask";
|
||||
/**
|
||||
* 入口
|
||||
*/
|
||||
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 yzMapper;
|
||||
|
||||
@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);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
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.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -6,11 +6,11 @@ import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Author: psh
|
||||
* @Description:
|
||||
* @Date: 2023/6/19
|
||||
* @Date: 2023/10/9
|
||||
*/
|
||||
public interface YZMapper {
|
||||
List<SchBasePoint> findPointForYZQL(List<String> regionCode, String materialId);
|
||||
public interface PointMapper {
|
||||
List<SchBasePoint> findPointByRegion(String regionCode);
|
||||
List<SchBasePoint> findPointForYZSL(JSONObject param);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?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.task_manage.task.tasks.mapper.PointMapper">
|
||||
<select id="findPointByRegion" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.region_code = #{regionCode}
|
||||
ORDER BY region_code
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -1,34 +0,0 @@
|
||||
<?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.task_manage.task.tasks.mapper.YZMapper">
|
||||
<select id="findPointForYZQL" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
LEFT JOIN pdm_bd_workorder w ON w.material_id = #{materialId} AND w.workorder_status = '3'
|
||||
AND w.region_code = 'HN'
|
||||
WHERE p.point_code = w.point_code
|
||||
AND (p.ing_task_code = '' OR p.ing_task_code IS NULL)
|
||||
AND p.is_used = 1
|
||||
AND p.region_code IN
|
||||
<foreach collection="regionCode" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</select>
|
||||
<select id="findPointForYZSL" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
LEFT JOIN sch_base_task t ON ( t.point_code1 = p.point_code OR t.point_code2 = p.point_code )
|
||||
AND t.task_status != '5'
|
||||
AND t.task_status != '6'
|
||||
WHERE
|
||||
( p.ing_task_code IS NULL OR p.ing_task_code = '' )
|
||||
AND p.region_code = #{regionCode}
|
||||
AND p.point_type = #{pointType}
|
||||
AND p.is_used = TRUE
|
||||
AND ( t.task_code IS NULL OR t.task_code = '')
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -1,4 +1,4 @@
|
||||
server:
|
||||
deserver:
|
||||
port: 8010
|
||||
#配置数据源
|
||||
spring:
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.system.service.user.ISysUserService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.YZMapper;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ApplicationTest {
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
@Autowired
|
||||
private YZMapper yzMapper;
|
||||
private PointMapper yzMapper;
|
||||
@Test
|
||||
void contextLoads() {
|
||||
System.out.println(userService.list());
|
||||
|
||||
Reference in New Issue
Block a user