1
6 天以前 ba85ad92c793164beb4087366a18101d14061626
lsh#空板流程
7个文件已修改
1个文件已添加
147 ■■■■■ 已修改文件
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/resources/application-dev.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsWcsOrOtherType.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
@@ -40,7 +40,11 @@
        if (Objects.isNull(params)) {
            throw new CoolException("参数不能为空!!");
        }
       return wmsRcsService.pubTasks(params);
        if (params.getSign().equals("RCS")){
            return wmsRcsService.pubTasks(params);
        }  else {
            return wmsRcsService.pubTasksWcs(params);
        }
    }
    /**
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
@@ -13,6 +13,9 @@
@ApiModel(value = "RcsPubTaskParams", description = "下发任务参数")
public class RcsPubTaskParams implements Serializable {
    @ApiModelProperty("标记类型{HKRCS: 海康, WCS: 立库WCS, OTHER: 其它}")
    private String sign;
    @ApiModelProperty("批次")
    private String batch;
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
@@ -16,6 +16,7 @@
public interface WmsRcsService extends IService<Loc> {
    CommonResponse pubTasks(RcsPubTaskParams params);
    CommonResponse pubTasksWcs(RcsPubTaskParams params);
    CommonResponse cancelTasks(Map<String, Object> params);
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -11,6 +11,7 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.openApi.config.PlatformProperties;
import com.vincent.rsf.openApi.entity.Loc;
import com.vincent.rsf.openApi.entity.constant.WcsConstant;
import com.vincent.rsf.openApi.entity.constant.WmsConstant;
import com.vincent.rsf.openApi.entity.dto.CommonResponse;
import com.vincent.rsf.openApi.entity.constant.RcsConstant;
@@ -46,6 +47,9 @@
    private PlatformProperties.WmsApi wmsApi;
    @Autowired
    private PlatformProperties.WcsApi wcsApi;
    @Autowired
    private RestTemplate restTemplate;
@@ -60,15 +64,52 @@
    public CommonResponse pubTasks(RcsPubTaskParams params)  {
        /**RCS基础配置链接*/
        String rcsUrl =  rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask;
        log.info("任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params));
        log.info("RCS任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params));
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        headers.add("api-version", "v2.0");
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
        log.info("任务下发后,响应结果: {}", exchange);
        log.info("RCS任务下发后,响应结果: {}", exchange);
        if (Objects.isNull(exchange.getBody())) {
            throw new CoolException("任务下发失败!!");
            throw new CoolException("RCS任务下发失败!!");
        } else {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.coercionConfigDefaults()
                    .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty);
            try {
                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                if (result.getCode() == 200) {
                    return result;
                } else {
                    return result;
                }
            } catch (JsonProcessingException e) {
                throw new CoolException(e.getMessage());
            }
        }
    }
    /**
     * @author Munch D. Luffy
     * @date 2026/01/19
     * @description: WCS任务下发
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public CommonResponse pubTasksWcs(RcsPubTaskParams params)  {
        /**WCS基础配置链接*/
        String rcsUrl =  wcsApi.getHost() + ":" + wcsApi.getPort() + WcsConstant.pubTask;
        log.info("WCS任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params));
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        headers.add("api-version", "v2.0");
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class);
        log.info("WCS任务下发后,响应结果: {}", exchange);
        if (Objects.isNull(exchange.getBody())) {
            throw new CoolException("WCS任务下发失败!!");
        } else {
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.coercionConfigDefaults()
rsf-open-api/src/main/resources/application-dev.yml
@@ -14,10 +14,12 @@
#    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    username: rsf
    username: root
    url: jdbc:mysql://192.168.4.15:3306/rsf_20250106?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    password: 1234
#    url: jdbc:mysql://192.168.4.15:3306/rsf_20250106?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    password: 1234
#    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    password: xltys1995
    url: jdbc:mysql://192.168.4.199:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java
@@ -14,6 +14,9 @@
@ApiModel(value = "WcsTaskParams", description = "任务下发参数")
public class WcsTaskParams implements Serializable {
    @ApiModelProperty("标记类型{HKRCS: 海康, WCS: 立库WCS, OTHER: 其它}")
    private String sign;
    @ApiModelProperty("批次")
    private String batch;
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsWcsOrOtherType.java
New file
@@ -0,0 +1,65 @@
package com.vincent.rsf.server.manager.enums;
public enum LocStsWcsOrOtherType {
    //WCS
    LOC_STS_TYPE_WCS("WCS", "WCS"),
    //RCS
    LOC_STS_TYPE_RCS("RCS", "RCS"),
    //OTHER
    LOC_STS_TYPE_OTHER("OTHER", "OTHER")
    ;
    public String type;
    public String desc;
    LocStsWcsOrOtherType(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
    public static LocStsWcsOrOtherType get(String el) {
        for (LocStsWcsOrOtherType value : LocStsWcsOrOtherType.values()) {
            if (el.equals(value.toString())) {
                return value;
            }
        }
        return null;
    }
    public static String getApiType(String val) {
        switch (val) {
            case "3#立体库区":
                return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type;
//            case "RCS":
//                return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type;
            default:
                return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type;
        }
    }
//    public static String getLocSts(String val) {
//        if (val.equals("WCS")) {
//            return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type;
//        } else if (val.equals("RCS")) {
//            return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type;
//        } else {
//            return LocStsWcsOrOtherType.LOC_STS_TYPE_OTHER.type;
//        }
//    }
//    public static String getLocSts(Integer areaId) {
//        switch (areaId) {
//            case 22:
//                return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type;
//            case 100:
//                return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type;
//            default:
//                return LocStsWcsOrOtherType.LOC_STS_TYPE_OTHER.type;
//        }
//    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -380,6 +380,22 @@
        }
        /**判断是否起点系统类型  非标准程序*/
        Loc loc = null;
        if (task.getTaskType()>=TaskType.TASK_TYPE_OUT.type) {
            loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc()));
            if (Objects.isNull(loc)) {
                throw new CoolException("源库位不存在!!");
            }
        }
        if (!Objects.isNull(loc)) {
            taskParams.setSign(LocStsWcsOrOtherType.getApiType(loc.getAreaId$()));
        } else {
            taskParams.setSign(LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type);
        }
        /**判断是否光电站点,非光店站点需管控站点状态*/
        if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
            if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {