#
Junjie
2025-05-10 2a7fd275313003968fc186ee4617aec4eca90266
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.zy.asrs.service.impl;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.GenerateAgvTaskParam;
import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.*;
 
@Service
public class OpenServiceImpl implements OpenService {
 
    @Autowired
    private TaskWrkService taskWrkService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private LocMastService locMastService;
 
    @Override
    public HashMap<String, Object> taskCreate(TaskCreateParam param) {
        HashMap<String,Object> map=new HashMap<>();
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo());
        if (taskWrk != null) {
            map.put("Code","0");
            map.put("Msg",param.getTaskNo()+"任务已经生成!");
            return map;
        }
 
        Date now = new Date();
        taskWrk = new TaskWrk();
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getStartPoint()));
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKOUT.type);//获取入库工作号
        taskWrk.setTaskNo(param.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        try {
            if (param.getIoType() > 1) {
                if (Utils.locNoRowBoolean(locMast.getRow1())) {
                    param.setTaskPriority(11);
                }
            }
        } catch (Exception e) {
        }
        taskWrk.setIoType(param.getIoType());//任务类型
        taskWrk.setIoPri(param.getTaskPriority());//优先级
        taskWrk.setBarcode(param.getBarcode());//条码
        taskWrk.setCrnNo(locMast.getCrnNo());
        if (param.getIoType() == 1) {
            taskWrk.setWrkSts(1);
            if (!Cools.isEmpty(param.getTargetPoint())) {
                taskWrk.setTargetPoint(Utils.getWcsLocNo(param.getTargetPoint()));//终点
                taskWrk.setOriginTargetPoint(param.getTargetPoint());
            }
 
        } else if (param.getIoType() == 2) {
            taskWrk.setWrkSts(11);
            if (!Cools.isEmpty(param.getStartPoint())) {
                taskWrk.setStartPoint(param.getStartPoint());//起点
                taskWrk.setTargetPoint(param.getTargetPoint());
            }
            taskWrk.setTargetPoint(param.getTargetPoint());
        } else if (param.getIoType() == 3) {
            taskWrk.setWrkSts(11);
            if (!Cools.isEmpty(param.getStartPoint())) {
                taskWrk.setStartPoint(param.getStartPoint());//起点
                taskWrk.setTargetPoint(param.getTargetPoint());
            }
        }
 
 
        if (!Cools.isEmpty(param.getMemo())) {
            taskWrk.setMemo(param.getMemo());//备注
        }
 
        if (!taskWrkService.insert(taskWrk)) {
            map.put("Code","0");
            map.put("Msg",param.getTaskNo()+"创建任务失败!");
            return map;
        }
        map.put("Code","1");
        map.put("Msg","ok");
        return map;
    }
 
    @Override
    public boolean generateAgvTask(GenerateAgvTaskParam param) {
        Date now = new Date();
        String originPoint = param.getOriginPoint();
        String targetPoint = param.getTargetPoint();
        LocMast startLocMast = locMastService.selectByLocNo(originPoint);
        if(startLocMast == null){
            throw new CoolException("取货点库位不存在");
        }
 
        if (!startLocMast.getLocSts().equals("F")) {
            throw new CoolException("取货点不处于在库");
        }
 
        LocMast targetLocMast = locMastService.selectByLocNo(targetPoint);
        if(targetLocMast == null){
            throw new CoolException("放货点库位不存在");
        }
 
        if (!targetLocMast.getLocSts().equals("O")) {
            throw new CoolException("放货点不处于空库");
        }
 
        TaskWrk taskWrk = new TaskWrk();
        int workNo1 = commonService.getWorkNo(WorkNoType.AGV.type);//获取AGV工作号
 
        taskWrk.setTaskNo(String.valueOf(workNo1));//任务号
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        taskWrk.setWrkSts(11);
        taskWrk.setIoType(4);//AGV搬运
        taskWrk.setStartPoint(param.getOriginPoint());//取货点
        taskWrk.setTargetPoint(param.getTargetPoint());//放货点
 
        boolean insert = taskWrkService.insert(taskWrk);
        if (!insert) {
            throw new CoolException("任务生成失败");
        }
 
        startLocMast.setLocSts("R");
        startLocMast.setModiTime(now);
        locMastService.updateById(startLocMast);
 
        targetLocMast.setLocSts("S");
        targetLocMast.setModiTime(now);
        locMastService.updateById(targetLocMast);
 
        return true;
    }
}