自动化立体仓库 - WMS系统
zwl
3 天以前 6efef82561e2cf14f09871d63e1581c6174cfe10
第二版本
8个文件已修改
172 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/newWay/AssignTasksToRCSScheduler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/newWay/handler/AssignTasksToRCSHandler.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -32,6 +32,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.xml.crypto.Data;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -350,11 +351,12 @@
    public R AGVSite(@RequestParam(required = false) String locNo){
        HashMap<Integer,String> map=new HashMap<>();
        map.put(100,"100-入库口");
        map.put(1000,"1000-补空板口");
        map.put(1001,"1000-补空板口");
        map.put(2001,"2001-出库口1");
        map.put(2002,"2002-出库口2");
        map.put(3001,"3001-作业口1");
        map.put(3002,"3002-作业口2");
        map.put(4001,"4001-不合格");
        map.remove(Integer.parseInt(locNo));
        return R.ok(map);
    }
@@ -368,37 +370,28 @@
    @RequestMapping("/AGVMove")
    public R AGVMove(@RequestParam(required = false) String sourceStaNo
    ,@RequestParam(required = false) String staNo){
        RCSParam rcsParam = new RCSParam();
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String noww=new Date().getTime()+"";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = now.format(formatter); // 格式化日期时间
        //网络流水号
        rcsParam.setReqId(now.toString());
        //应用标识
        rcsParam.setClientId("WMS");
        //通知时间
        rcsParam.setReqTime(formattedDate);
        RCSParam.DataBody dataBody=new RCSParam.DataBody();
        //任务号
        dataBody.setId(formattedDate);
        List<RCSParam.TaskBody> taskBodyList=new ArrayList<>();
        RCSParam.TaskBody taskBody=new RCSParam.TaskBody();
        //取货类型
        taskBody.setType("load");
        taskBody.setStation(sourceStaNo);
        taskBodyList.add(taskBody);
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        rcsParam.put("task_id",noww);
        rcsParam.put("start_location",sourceStaNo);
        rcsParam.put("start_site_level",1);
        rcsParam.put("start_command",1);
        rcsParam.put("target_location",staNo);
        rcsParam.put("target_site_level",1);
        rcsParam.put("target_command",2);
        rcsParam.put("priority",1);
        rcsParam.put("robot_type",3);//车 辆 类 型 0:XC 1:XCD 2:XP_T 3:XP_L
        rcsParam.put("MoverID","XS1");
        RCSParam.TaskBody taskBody1=new RCSParam.TaskBody();
        //放货类型
        taskBody1.setType("unload");
        taskBody1.setStation(staNo);
        taskBodyList.add(taskBody1);
        dataBody.setTasks(taskBodyList);
        rcsParam.setData(dataBody);
        LinkedHashMap<String,Object> map=new LinkedHashMap<>();
        map.put("data",rcsParam);
        String response ="";
        Boolean bool =false;
        String msg = "";
        try {
            log.info("wms派发搬运任务给AGV搬运={}", rcsParam);
@@ -406,12 +399,16 @@
                    // .setHeaders(headParam)
                    .setUri(url)
                    .setPath(attrcs)
                    .setJson(JSON.toJSONString(rcsParam))
                    .setJson(JSON.toJSONString(map))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getBoolean("IsSuccess")){
            JSONObject data = jsonObject.getJSONObject("data");
            JSONObject errInfo = jsonObject.getJSONObject("err_info");
            if(data.getInteger("result")==0){
                bool = true;
            }else{
                msg=errInfo.getString("err_msg");
            }
        } catch (Exception e) {
            log.error("wms派发搬运任务给AGV搬运失败返回值={}", response);
@@ -420,7 +417,7 @@
                    , url + attrcs
                    , null
                    , "127.0.0.1"
                    , JSON.toJSONString(rcsParam)
                    , JSON.toJSONString(map)
                    , response
                    , bool
            );
@@ -428,7 +425,7 @@
        if(bool){
            return R.ok();
        }else {
            return R.error("下发任务失败");
            return R.error(msg);
        }
    }
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -213,33 +213,10 @@
    /*********************************RCS任务结束接口****************************************************/
    /**
     * 库存统计
     * RCS 任务反馈
     */
    @RequestMapping("/taskOver")
    public HashMap taskOver(@RequestBody HashMap<String,Object> param) {
        HashMap map = new HashMap();
        Map<String ,Object > map1 = (Map<String, Object>)param.get("Data");
        String id = (String) map1.get("Id");
        String status = (String) map1.get("Status");
        if (!status.equals("finished_manual")){
            map.put("IsSuccess", true);
            return map;
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(id)));
        if (wrkMast == null) {
            map.put("IsSuccess", false);
            map.put("ErrorCode","1");
            map.put("Message","没有找到该任务号:"+id);
            return map;
        }
        if(wrkMast.getIoType()==101||wrkMast.getIoType()==110){
            wrkMast.setWrkSts(15L);//搬运完成,任务转历史档
        }else if(wrkMast.getIoType()==103||wrkMast.getIoType()==107){
            wrkMast.setWrkSts(14L);//搬运完成,任务状态回到14
        }
        wrkMastService.updateById(wrkMast);
        map.put("IsSuccess", true);
        return map;
    public void taskOver(@RequestBody HashMap<String,Object> param) {
        log.info("RCS任务反馈={}",param);
    }
}
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -243,7 +243,7 @@
    @TableField("appe_time")
    private Date appeTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value= "RCS任务号")
    @TableField("pause_mk")
    private String pauseMk;
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -247,8 +247,8 @@
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiTime(now);
            if(outSta==2000){
                wrkMast.setMemo("2000");
            if(outSta>199){
                wrkMast.setMemo(outSta+"");
            }
            if (!wrkMastService.insert(wrkMast)) {
                throw new CoolException("保存工作档失败,出库库位号:"+dto.getLocNo());
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -35,8 +35,16 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute() {
        //拣料盘点任务下发
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().in("io_type",107,103).eq("wrk_sts",14).isNull("error_memo"));
        if (!Cools.isEmpty(wrkMast1)) {
            wrkMast1.setWrkSts(30L);
            wrkMastService.updateById(wrkMast1);
        }
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return;
        }
        for (WrkMast wrkMast : wrkMasts) {
            ReturnT<String> returnT = workMastHandler.start(wrkMast);
            if (!returnT.isSuccess()) {
src/main/java/com/zy/asrs/task/newWay/AssignTasksToRCSScheduler.java
@@ -42,7 +42,6 @@
            ReturnT<String> returnT = assignTasksToRCSHandler.start(wrkMast);
            if (!returnT.isSuccess()) {
                wrkMast.setUpdMk("X");
                wrkMast.setErrorMemo(returnT.getMsg());
                wrkMast.setErrorTime(new Date());
                if (!wrkMastService.updateById(wrkMast)) {
                    log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo());
src/main/java/com/zy/asrs/task/newWay/handler/AssignTasksToRCSHandler.java
@@ -19,6 +19,7 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
@Slf4j
@@ -35,61 +36,63 @@
    private String attrcs;
    public ReturnT<String> start(WrkMast wrkMast) {
        RCSParam rcsParam = new RCSParam();
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        String noww="bb" + new Date().getTime();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = now.format(formatter); // 格式化日期时间
        //网络流水号
        rcsParam.setReqId(now.toString());
        //应用标识
        rcsParam.setClientId("WMS");
        //通知时间
        rcsParam.setReqTime(formattedDate);
        RCSParam.DataBody dataBody=new RCSParam.DataBody();
        //任务号
        dataBody.setId(wrkMast.getWrkNo()+"");
        List<RCSParam.TaskBody> taskBodyList=new ArrayList<>();
        RCSParam.TaskBody taskBody=new RCSParam.TaskBody();
        //取货类型
        taskBody.setType("load");
        taskBody.setStation(wrkMast.getStaNo()+"");
        taskBodyList.add(taskBody);
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        rcsParam.put("task_id",noww);
        rcsParam.put("start_location","102");
        rcsParam.put("start_site_level",1);
        rcsParam.put("start_command",1);
        rcsParam.put("target_location",wrkMast.getMemo());
        rcsParam.put("target_site_level",1);
        rcsParam.put("target_command",2);
        rcsParam.put("priority",1);
        rcsParam.put("robot_type",3);//车 辆 类 型 0:XC 1:XCD 2:XP_T 3:XP_L
        rcsParam.put("MoverID","XS1");
        RCSParam.TaskBody taskBody1=new RCSParam.TaskBody();
        //放货类型
        taskBody1.setType("unload");
        taskBody1.setStation(wrkMast.getMemo());
        taskBodyList.add(taskBody1);
        dataBody.setTasks(taskBodyList);
        rcsParam.setData(dataBody);
        LinkedHashMap<String,Object> map=new LinkedHashMap<>();
        map.put("data",rcsParam);
        String response ="";
        Boolean bool =false;
        String msg = "";
        wrkMast.setPauseMk(noww);
        try {
            log.info("wms派发搬运任务给AGV搬运={}", rcsParam);
            response = new HttpHandler.Builder()
                    // .setHeaders(headParam)
                    .setUri(url)
                    .setPath(attrcs)
                    .setJson(JSON.toJSONString(rcsParam))
                    .setJson(JSON.toJSONString(map))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getBoolean("IsSuccess")){
                wrkMast.setWrkSts(15L);//WMS下发搬运任务给RCS成功,转历史档
            JSONObject data = jsonObject.getJSONObject("data");
            JSONObject errInfo = jsonObject.getJSONObject("err_info");
            if(data.getInteger("result")==0){
                if(wrkMast.getIoType()==103||wrkMast.getIoType()==107){
                    wrkMast.setWrkSts(16L);//待回库
                }else{
                    wrkMast.setWrkSts(15L);//下发RCS-成功
                }
                wrkMast.setErrorMemo(noww);
                wrkMastService.updateById(wrkMast);
                bool = true;
            }else{
                msg=errInfo.getString("err_msg");
            }
        } catch (Exception e) {
            log.error("wms派发搬运任务给AGV搬运失败{},返回值={}", wrkMast, response);
            log.error("wms派发搬运任务给AGV搬运失败返回值={}", response);
        } finally {
            apiLogService.save("wms派发搬运任务给AGV搬运"
                    , url + attrcs
                    , null
                    , "127.0.0.1"
                    , JSON.toJSONString(rcsParam)
                    , JSON.toJSONString(map)
                    , response
                    , bool
            );
src/main/resources/application.yml
@@ -10,7 +10,7 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:50948;databasename=dlzasrs
    url: jdbc:sqlserver://178.18.1.200:1433;databasename=jxtlfasrs-yclk
    username: sa
    password: sa@123
  mvc:
@@ -71,6 +71,6 @@
#RCS
rcs:
  address:
    url: http://192.168.3.102:16001
    url: http://178.18.1.220:50001
    #任务下发地址
    attrcs: 3CLOUD/Kingdee.BOS.WebApi.ServicesStub.
    attrcs: rbrainrobot/create_task