no message
							parent
							
								
									ff228f6f88
								
							
						
					
					
						commit
						ba4501dd6a
					
				| 
						 | 
					@ -55,6 +55,8 @@ public class AppRun {
 | 
				
			||||||
        // 或者在 application.yml 添加文件路径,方便 kill,kill `cat /home/eladmin/app.pid`
 | 
					        // 或者在 application.yml 添加文件路径,方便 kill,kill `cat /home/eladmin/app.pid`
 | 
				
			||||||
        springApplication.addListeners(new ApplicationPidFileWriter());
 | 
					        springApplication.addListeners(new ApplicationPidFileWriter());
 | 
				
			||||||
        springApplication.run(args);
 | 
					        springApplication.run(args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Bean
 | 
					    @Bean
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@
 | 
				
			||||||
 *  limitations under the License.
 | 
					 *  limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
package com.youchain.businessdata.repository;
 | 
					package com.youchain.businessdata.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.youchain.businessdata.domain.AgvTask;
 | 
					import com.youchain.businessdata.domain.AgvTask;
 | 
				
			||||||
import org.springframework.data.jpa.repository.JpaRepository;
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 | 
					import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 | 
				
			||||||
| 
						 | 
					@ -22,63 +23,18 @@ import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
* @website https://eladmin.vip
 | 
					 | 
				
			||||||
 * @author baobinglin
 | 
					 * @author baobinglin
 | 
				
			||||||
 | 
					 * @website https://eladmin.vip
 | 
				
			||||||
 * @date 2023-08-18
 | 
					 * @date 2023-08-18
 | 
				
			||||||
 **/
 | 
					 **/
 | 
				
			||||||
public interface AgvTaskRepository extends JpaRepository<AgvTask, Integer>, JpaSpecificationExecutor<AgvTask> {
 | 
					public interface AgvTaskRepository extends JpaRepository<AgvTask, Integer>, JpaSpecificationExecutor<AgvTask> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询滚筒出库任务执行中的任务
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "SELECT * FROM data_agv_task  where type='PICK' and job_type='ROLLER_MOVE' and  status not in ('FINISH','CANCEL') and stock_code=?1  ", nativeQuery = true)
 | 
					 | 
				
			||||||
    AgvTask findBycontainerCode(String containerCode);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查询前后桶正在执行的任务
 | 
					     * 查询前后桶正在执行的任务
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Query(value = "select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER','OPEN') AND a.end_slot_code like 'MA1151-QH%'" +
 | 
					    @Query(value = "select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER','OPEN') AND a.end_slot_code like 'MA1151-QH%'" +
 | 
				
			||||||
            " UNION select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER','OPEN') AND a.start_slot_code like 'MA1151-QH%' ", nativeQuery = true)
 | 
					            " UNION select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER','OPEN') AND a.start_slot_code like 'MA1151-QH%' ", nativeQuery = true)
 | 
				
			||||||
    List<AgvTask> queryAgvTaskPerformedQH();
 | 
					    List<AgvTask> queryAgvTaskPerformedQH();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * @param status-状态
 | 
					 | 
				
			||||||
     * @param type-类型
 | 
					 | 
				
			||||||
     * @param be_scan-是否扫描
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "SELECT * FROM data_agv_task  where 1=1 and  if((?1 !='' or ?1 is not null) ,stock_code=?1,1=1)  and status=?2 and type=?3 and be_scan=?4 and job_type=?5 order by update_time ", nativeQuery = true)
 | 
					 | 
				
			||||||
    List<AgvTask> queryByAgvTask(String stockCode, String status, String type, int be_scan,String jobType);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询正在执行的开始点位有没有这个点位的任务
 | 
					 | 
				
			||||||
     * @param startPoint 开始点位
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER') AND a.start_slot_code = ?1", nativeQuery = true)
 | 
					 | 
				
			||||||
    List<AgvTask> findStartTask(String startPoint);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询正在执行的结束点位有没有这个点位的任务
 | 
					 | 
				
			||||||
     * @param endPoint
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "select * FROM data_agv_task a  where a.`status` in ('ATCALL','UP_CONTAINER') AND a.end_slot_code = ?1", nativeQuery = true)
 | 
					 | 
				
			||||||
    List<AgvTask> findEndTask(String endPoint);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 根据线边分组
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "select line_slot_code from data_agv_task where type='PICK' and `status`='OPEN' and line_slot_code is not null GROUP BY line_slot_code order by line_slot_code ", nativeQuery = true)
 | 
					 | 
				
			||||||
    List<Object> queryGroupAgvTask();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询线边任务待执行的任务
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Query(value = "select * from data_agv_task where  line_slot_code=?1 and type='PICK' and `status`='OPEN' and line_slot_code is not null  ORDER BY create_time ", nativeQuery = true)
 | 
					 | 
				
			||||||
    List<AgvTask> queryLineAgvTask(String line_slot_code);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,7 +68,7 @@ public class KMReSController {
 | 
				
			||||||
        String missionStatus = missionStateCallback.getMissionStatus();//作业当前状态
 | 
					        String missionStatus = missionStateCallback.getMissionStatus();//作业当前状态
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            //料箱出库任务
 | 
					            //料箱出库任务
 | 
				
			||||||
            if(id.indexOf("XJ")!=-1){
 | 
					            if(id.indexOf("LX")!=-1){
 | 
				
			||||||
                if(missionStatus.equals("CANCELED")){
 | 
					                if(missionStatus.equals("CANCELED")){
 | 
				
			||||||
                    List<AgvTask> agvTaskList= agvTaskService.findByjobCode(id);
 | 
					                    List<AgvTask> agvTaskList= agvTaskService.findByjobCode(id);
 | 
				
			||||||
                    for(AgvTask agvTask:agvTaskList){
 | 
					                    for(AgvTask agvTask:agvTaskList){
 | 
				
			||||||
| 
						 | 
					@ -143,6 +143,7 @@ public class KMReSController {
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param task
 | 
					     * @param task
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Async
 | 
				
			||||||
    public void returnIssue(@RequestBody Task task) {
 | 
					    public void returnIssue(@RequestBody Task task) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ReturnIssueInfo returnIssueInfo = getReturnIssueInfo(task);
 | 
					        ReturnIssueInfo returnIssueInfo = getReturnIssueInfo(task);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,21 +23,23 @@ import com.youchain.businessdata.service.dto.AgvTaskDto;
 | 
				
			||||||
import com.youchain.businessdata.service.dto.AgvTaskQueryCriteria;
 | 
					import com.youchain.businessdata.service.dto.AgvTaskQueryCriteria;
 | 
				
			||||||
import io.swagger.annotations.Api;
 | 
					import io.swagger.annotations.Api;
 | 
				
			||||||
import org.springframework.data.domain.Pageable;
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import javax.servlet.http.HttpServletResponse;
 | 
					import javax.servlet.http.HttpServletResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
					 * @author baobinglin
 | 
				
			||||||
 * @website https://eladmin.vip
 | 
					 * @website https://eladmin.vip
 | 
				
			||||||
 * @description 服务接口
 | 
					 * @description 服务接口
 | 
				
			||||||
* @author baobinglin
 | 
					 | 
				
			||||||
 * @date 2023-08-18
 | 
					 * @date 2023-08-18
 | 
				
			||||||
 **/
 | 
					 **/
 | 
				
			||||||
public interface AgvTaskService {
 | 
					public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查询数据分页
 | 
					     * 查询数据分页
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param criteria 条件
 | 
					     * @param criteria 条件
 | 
				
			||||||
     * @param pageable 分页参数
 | 
					     * @param pageable 分页参数
 | 
				
			||||||
     * @return Map<String, Object>
 | 
					     * @return Map<String, Object>
 | 
				
			||||||
| 
						 | 
					@ -46,6 +48,7 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 查询所有数据不分页
 | 
					     * 查询所有数据不分页
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param criteria 条件参数
 | 
					     * @param criteria 条件参数
 | 
				
			||||||
     * @return List<AgvTaskDto>
 | 
					     * @return List<AgvTaskDto>
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -53,6 +56,7 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据ID查询
 | 
					     * 根据ID查询
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param id ID
 | 
					     * @param id ID
 | 
				
			||||||
     * @return AgvTaskDto
 | 
					     * @return AgvTaskDto
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -60,6 +64,7 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 创建
 | 
					     * 创建
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param resources /
 | 
					     * @param resources /
 | 
				
			||||||
     * @return AgvTaskDto
 | 
					     * @return AgvTaskDto
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -67,18 +72,21 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 编辑
 | 
					     * 编辑
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param resources /
 | 
					     * @param resources /
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void update(AgvTask resources);
 | 
					    void update(AgvTask resources);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 多选删除
 | 
					     * 多选删除
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param ids /
 | 
					     * @param ids /
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    void deleteAll(Integer[] ids);
 | 
					    void deleteAll(Integer[] ids);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 导出数据
 | 
					     * 导出数据
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param all      待导出的数据
 | 
					     * @param all      待导出的数据
 | 
				
			||||||
     * @param response /
 | 
					     * @param response /
 | 
				
			||||||
     * @throws IOException /
 | 
					     * @throws IOException /
 | 
				
			||||||
| 
						 | 
					@ -87,6 +95,7 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 发送货架搬运接口任务
 | 
					     * 发送货架搬运接口任务
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param agvTasks
 | 
					     * @param agvTasks
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -94,45 +103,25 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 发送料箱搬运接口任务
 | 
					     * 发送料箱搬运接口任务
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param agvTasks
 | 
					     * @param agvTasks
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String sendAgvTaskLXImpl(List<AgvTask> agvTasks);
 | 
					    String sendAgvTaskLXImpl(List<AgvTask> agvTasks);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 发送滚筒搬运接口任务
 | 
					 | 
				
			||||||
     * @param agvTasks1-满箱任务
 | 
					 | 
				
			||||||
     * @param agvTasks1-控销任务
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public String sendAgvTaskGTImpl(List<AgvTask> agvTasks1,List<AgvTask> agvTasks2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String containerIn(String containerCode, String position);
 | 
					    String containerIn(String containerCode, String position);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 容器出场
 | 
					     * 容器出场
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param containerCode-容器编号
 | 
					     * @param containerCode-容器编号
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    String containerOut(String containerCode);
 | 
					    String containerOut(String containerCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询容器状态
 | 
					 | 
				
			||||||
     * @param containerCode-容器编号
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    String containerQuery(String containerCode);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * 查询输送线上料箱总数
 | 
					 | 
				
			||||||
     * @param taskCode-输送线编号
 | 
					 | 
				
			||||||
     * @return
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    int QueryCount(String taskCode);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 读取输送线、流利式货架状态
 | 
					     * 读取输送线、流利式货架状态
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param conveyorId-输送线编号
 | 
					     * @param conveyorId-输送线编号
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
| 
						 | 
					@ -142,6 +131,7 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 任务回报更新状态
 | 
					     * 任务回报更新状态
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param agvTask
 | 
					     * @param agvTask
 | 
				
			||||||
     * @param status
 | 
					     * @param status
 | 
				
			||||||
     * @param
 | 
					     * @param
 | 
				
			||||||
| 
						 | 
					@ -151,12 +141,13 @@ public interface AgvTaskService {
 | 
				
			||||||
    void agvTaskCallback(AgvTask agvTask, String status, String containerCode);
 | 
					    void agvTaskCallback(AgvTask agvTask, String status, String containerCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    List<AgvTask>  findById(List<Integer> ids);
 | 
					//    List<AgvTask> findById(List<Integer> ids);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    double queryBillCodeSum(String billCode);
 | 
					    double queryBillCodeSum(String billCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据组号+料箱号招找到对应的AGV
 | 
					     * 根据组号+料箱号招找到对应的AGV
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param jobForce-任务组号
 | 
					     * @param jobForce-任务组号
 | 
				
			||||||
     * @param containerCode-容器号
 | 
					     * @param containerCode-容器号
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
| 
						 | 
					@ -165,9 +156,18 @@ public interface AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据组号+找到对应的AGV集合
 | 
					     * 根据组号+找到对应的AGV集合
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param jobForce-任务组号
 | 
					     * @param jobForce-任务组号
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    List<AgvTask> findByjobCode(String jobForce);
 | 
					    List<AgvTask> findByjobCode(String jobForce);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param status
 | 
				
			||||||
 | 
					     * @param type
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    List<AgvTask> queryByAgvTask(String status,String type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -235,7 +235,7 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public synchronized String sendAgvTaskLXImpl(List<AgvTask> agvTasks) {
 | 
					    public synchronized String sendAgvTaskLXImpl(List<AgvTask> agvTasks) {
 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
					        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
				
			||||||
        String agvCode = TimeNumberUtils.getXJTaskCode();
 | 
					        String agvCode = TimeNumberUtils.getLXTaskCode();
 | 
				
			||||||
        Map<String, Object> objMap = new LinkedHashMap<>();
 | 
					        Map<String, Object> objMap = new LinkedHashMap<>();
 | 
				
			||||||
        objMap.put("orgId", agvCode);//库存组织 ID(或工厂代码,供应商代码)
 | 
					        objMap.put("orgId", agvCode);//库存组织 ID(或工厂代码,供应商代码)
 | 
				
			||||||
        objMap.put("requestId", agvCode);//请求 id
 | 
					        objMap.put("requestId", agvCode);//请求 id
 | 
				
			||||||
| 
						 | 
					@ -273,10 +273,19 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        objMap.put("missionData", missionDataArray);
 | 
					        objMap.put("missionData", missionDataArray);
 | 
				
			||||||
        jsonObject.putAll(objMap);
 | 
					        jsonObject.putAll(objMap);
 | 
				
			||||||
        System.out.println(jsonObject.toString());
 | 
					        String resultJson="{\n" +
 | 
				
			||||||
        String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString());
 | 
					                " \"data\": null,\n" +
 | 
				
			||||||
 | 
					                " \"code\": \"0\",\n" +
 | 
				
			||||||
 | 
					                " \"message\": null,\n" +
 | 
				
			||||||
 | 
					                " \"success\": true\n" +
 | 
				
			||||||
 | 
					                "}";
 | 
				
			||||||
 | 
					        //String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString());
 | 
				
			||||||
 | 
					        if (resultJson == null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        JSONObject resulObject = JSON.parseObject(resultJson);
 | 
					        JSONObject resulObject = JSON.parseObject(resultJson);
 | 
				
			||||||
        String code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
					        String code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (code.equals("0")) {
 | 
					        if (code.equals("0")) {
 | 
				
			||||||
            for (int i = 0; i < agvTasks.size(); i++) {
 | 
					            for (int i = 0; i < agvTasks.size(); i++) {
 | 
				
			||||||
                AgvTask agvTask = agvTasks.get(i);
 | 
					                AgvTask agvTask = agvTasks.get(i);
 | 
				
			||||||
| 
						 | 
					@ -299,92 +308,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
        return resultJson;
 | 
					        return resultJson;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public synchronized String sendAgvTaskGTImpl(List<AgvTask> agvTasks1, List<AgvTask> agvTasks2) {
 | 
					 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
					 | 
				
			||||||
        String agvCode = TimeNumberUtils.getGTTaskCode();
 | 
					 | 
				
			||||||
        Map<String, Object> objMap = new LinkedHashMap<>();
 | 
					 | 
				
			||||||
        objMap.put("orgId", agvCode);//库存组织 ID(或工厂代码,供应商代码)
 | 
					 | 
				
			||||||
        objMap.put("requestId", agvCode);//请求 id
 | 
					 | 
				
			||||||
        objMap.put("missionCode", agvCode);//任务编号
 | 
					 | 
				
			||||||
        objMap.put("missionType", "ROLLER_MOVE");//任务类型 :滚筒
 | 
					 | 
				
			||||||
        objMap.put("viewBoardType", "");//上视识别类型:
 | 
					 | 
				
			||||||
        JSONArray missionDataArray = new JSONArray();
 | 
					 | 
				
			||||||
        for (int i = 0; i < agvTasks1.size(); i++) {
 | 
					 | 
				
			||||||
            AgvTask agvTask = agvTasks1.get(i);
 | 
					 | 
				
			||||||
            JSONObject missionDataObj = new JSONObject(new LinkedHashMap<>());
 | 
					 | 
				
			||||||
            Map<String, Object> missionDataMap = new LinkedHashMap<>();
 | 
					 | 
				
			||||||
            missionDataMap.put("sequence", (i + 1));//序号
 | 
					 | 
				
			||||||
            missionDataMap.put("binCode", agvTask.getStockCode());//料箱号
 | 
					 | 
				
			||||||
            missionDataMap.put("startDeviceCode", agvTask.getStartSlotCode());//料箱所在的起始槽位
 | 
					 | 
				
			||||||
            missionDataMap.put("endDeviceCode", agvTask.getEndSlotCode());//料箱所在的目标槽位
 | 
					 | 
				
			||||||
            missionDataMap.put("rollerLevel", 2);//层
 | 
					 | 
				
			||||||
            missionDataMap.put("rollerColumn", (i + 1));//列
 | 
					 | 
				
			||||||
            missionDataObj.putAll(missionDataMap);
 | 
					 | 
				
			||||||
            missionDataArray.add(missionDataObj);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        int sum = agvTasks1.size();
 | 
					 | 
				
			||||||
        if (agvTasks2.size() > 0) {
 | 
					 | 
				
			||||||
            for (int i = 0; i < agvTasks2.size(); i++) {
 | 
					 | 
				
			||||||
                AgvTask agvTask = agvTasks2.get(i);
 | 
					 | 
				
			||||||
                JSONObject missionDataObj = new JSONObject(new LinkedHashMap<>());
 | 
					 | 
				
			||||||
                Map<String, Object> missionDataMap = new LinkedHashMap<>();
 | 
					 | 
				
			||||||
                missionDataMap.put("sequence", (sum + (i + 1)));//序号
 | 
					 | 
				
			||||||
                missionDataMap.put("binCode", agvTask.getStockCode());//料箱号
 | 
					 | 
				
			||||||
                missionDataMap.put("startDeviceCode", agvTask.getStartSlotCode());//料箱所在的起始槽位
 | 
					 | 
				
			||||||
                missionDataMap.put("endDeviceCode", agvTask.getEndSlotCode());//料箱所在的目标槽位
 | 
					 | 
				
			||||||
                missionDataMap.put("rollerLevel", 1);//层
 | 
					 | 
				
			||||||
                missionDataMap.put("rollerColumn", (i + 1));//列
 | 
					 | 
				
			||||||
                missionDataObj.putAll(missionDataMap);
 | 
					 | 
				
			||||||
                missionDataArray.add(missionDataObj);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        objMap.put("missionData", missionDataArray);
 | 
					 | 
				
			||||||
        jsonObject.putAll(objMap);
 | 
					 | 
				
			||||||
        System.out.println(jsonObject.toString());
 | 
					 | 
				
			||||||
        String resultJson = HttpPostUtil.sendPostReq(UrlApi.submitMission, jsonObject.toString());//返回ResponseJson*/
 | 
					 | 
				
			||||||
        JSONObject resulObject = JSON.parseObject(resultJson);
 | 
					 | 
				
			||||||
        String code = resulObject.getString("code") == null ? "" : resulObject.getString("code");
 | 
					 | 
				
			||||||
        if (code.equals("0")) {
 | 
					 | 
				
			||||||
            for (int i = 0; i < agvTasks1.size(); i++) {
 | 
					 | 
				
			||||||
                AgvTask agvTask = agvTasks1.get(i);
 | 
					 | 
				
			||||||
                agvTask.setJobForce(agvCode);//任务组
 | 
					 | 
				
			||||||
                agvTask.setJobForceAsc((i + 1));
 | 
					 | 
				
			||||||
                agvTask.setStatus(BizStatus.ATCALL);
 | 
					 | 
				
			||||||
                agvTask.setJobMessage(resultJson);
 | 
					 | 
				
			||||||
                agvTask.setReqMessage(jsonObject.toString());
 | 
					 | 
				
			||||||
                agvTask.setStartTime(new Timestamp(new Date().getTime()));
 | 
					 | 
				
			||||||
                update(agvTask);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            for (int i = 0; i < agvTasks2.size(); i++) {
 | 
					 | 
				
			||||||
                AgvTask agvTask = agvTasks2.get(i);
 | 
					 | 
				
			||||||
                agvTask.setJobForce(agvCode);//任务组
 | 
					 | 
				
			||||||
                agvTask.setJobForceAsc((i + 1));
 | 
					 | 
				
			||||||
                agvTask.setStatus(BizStatus.ATCALL);
 | 
					 | 
				
			||||||
                agvTask.setJobMessage(resultJson);
 | 
					 | 
				
			||||||
                agvTask.setReqMessage(jsonObject.toString());
 | 
					 | 
				
			||||||
                agvTask.setStartTime(new Timestamp(new Date().getTime()));
 | 
					 | 
				
			||||||
                update(agvTask);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            for (int i = 0; i < agvTasks1.size(); i++) {
 | 
					 | 
				
			||||||
                AgvTask agvTask = agvTasks1.get(i);
 | 
					 | 
				
			||||||
                agvTask.setJobMessage(resultJson);
 | 
					 | 
				
			||||||
                agvTask.setReqMessage(jsonObject.toString());
 | 
					 | 
				
			||||||
                update(agvTask);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            for (int i = 0; i < agvTasks2.size(); i++) {
 | 
					 | 
				
			||||||
                AgvTask agvTask = agvTasks2.get(i);
 | 
					 | 
				
			||||||
                agvTask.setJobMessage(resultJson);
 | 
					 | 
				
			||||||
                agvTask.setReqMessage(jsonObject.toString());
 | 
					 | 
				
			||||||
                update(agvTask);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return resultJson;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public synchronized String containerIn(String containerCode, String position) {
 | 
					    public synchronized String containerIn(String containerCode, String position) {
 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
					        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
				
			||||||
| 
						 | 
					@ -406,28 +329,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
        return jsonObject.toJSONString();
 | 
					        return jsonObject.toJSONString();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public String containerQuery(String containerCode) {
 | 
					 | 
				
			||||||
        JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
 | 
					 | 
				
			||||||
        jsonObject.put("nodeCode", "");//点位编码
 | 
					 | 
				
			||||||
        jsonObject.put("containerModelCode", "");//容器模型编码
 | 
					 | 
				
			||||||
        jsonObject.put("containerCode", containerCode);//容器编号
 | 
					 | 
				
			||||||
        jsonObject.put("areaCode", "");//区域编码
 | 
					 | 
				
			||||||
        jsonObject.put("emptyFullStatus", 2);//容器的空满状态 空 0  满 1  全部 2
 | 
					 | 
				
			||||||
        return jsonObject.toJSONString();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public int QueryCount(String taskCode) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String jsonObject = "{\"taskCode\":\"" + taskCode + "\"}";//查询出库缓存输送线上满料箱总数
 | 
					 | 
				
			||||||
        String resultJson = HttpPostUtil.sendPostReq(UrlApi.QueryCount, jsonObject);
 | 
					 | 
				
			||||||
        JSONObject json = JSON.parseObject(resultJson);
 | 
					 | 
				
			||||||
        String queryCount = json.getString("queryCount");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return Integer.parseInt(queryCount);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void getConveyorState(String conveyorId) {
 | 
					    public void getConveyorState(String conveyorId) {
 | 
				
			||||||
        /*  String resultJson= HttpPostUtil.sendPostReq(UrlApi.agv_url, jsonObject.toString());//返回ResponseJson*/
 | 
					        /*  String resultJson= HttpPostUtil.sendPostReq(UrlApi.agv_url, jsonObject.toString());//返回ResponseJson*/
 | 
				
			||||||
| 
						 | 
					@ -524,16 +425,6 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public List<AgvTask> findById(List<Integer> ids) {
 | 
					 | 
				
			||||||
        String agvTaskIds = StringUtils.strip(ids.toString(), "[]");
 | 
					 | 
				
			||||||
        String hql = " from AgvTask agv where  agv.id in (" + agvTaskIds + ") ";
 | 
					 | 
				
			||||||
        Query query = entityMapper.createQuery(hql);
 | 
					 | 
				
			||||||
        List<AgvTask> agvTaskList = query.getResultList();
 | 
					 | 
				
			||||||
        return agvTaskList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public double queryBillCodeSum(String billCode) {
 | 
					    public double queryBillCodeSum(String billCode) {
 | 
				
			||||||
        String hql = "select sum(task.moveQty) from Task task where  task.billCode= :billCode";
 | 
					        String hql = "select sum(task.moveQty) from Task task where  task.billCode= :billCode";
 | 
				
			||||||
| 
						 | 
					@ -569,4 +460,14 @@ public class AgvTaskServiceImpl implements AgvTaskService {
 | 
				
			||||||
        return agvTaskList;
 | 
					        return agvTaskList;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public List<AgvTask> queryByAgvTask(String status, String type) {
 | 
				
			||||||
 | 
					        String hql = " from AgvTask agv where  agv.status= :status and agv.type= :type";
 | 
				
			||||||
 | 
					        Query query = entityMapper.createQuery(hql);
 | 
				
			||||||
 | 
					        query.setParameter("status", status);
 | 
				
			||||||
 | 
					        query.setParameter("type", type);
 | 
				
			||||||
 | 
					        List<AgvTask> agvTaskList = query.getResultList();
 | 
				
			||||||
 | 
					        return agvTaskList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -447,7 +447,7 @@ public class MlsServiceImpl implements MlsService {
 | 
				
			||||||
            pickDetailToCreate.add(pd);
 | 
					            pickDetailToCreate.add(pd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //生成搬运任务
 | 
					            //生成搬运任务
 | 
				
			||||||
            AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "01");
 | 
					            AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "PICKER_MOVE");
 | 
				
			||||||
            agvTaskToCreate.add(agvTask);
 | 
					            agvTaskToCreate.add(agvTask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //生成Task
 | 
					            //生成Task
 | 
				
			||||||
| 
						 | 
					@ -478,14 +478,17 @@ public class MlsServiceImpl implements MlsService {
 | 
				
			||||||
            batchCreateOrUpdate.batchUpdate(inventoryToUpdate);
 | 
					            batchCreateOrUpdate.batchUpdate(inventoryToUpdate);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //批量生成出库明细
 | 
				
			||||||
        if (!pickDetailToCreate.isEmpty()) {
 | 
					        if (!pickDetailToCreate.isEmpty()) {
 | 
				
			||||||
            batchCreateOrUpdate.batchCreate(pickDetailToCreate);
 | 
					            batchCreateOrUpdate.batchCreate(pickDetailToCreate);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //批量生成agv任务
 | 
				
			||||||
        if (!agvTaskToCreate.isEmpty()) {
 | 
					        if (!agvTaskToCreate.isEmpty()) {
 | 
				
			||||||
            batchCreateOrUpdate.batchCreate(agvTaskToCreate);
 | 
					            batchCreateOrUpdate.batchCreate(agvTaskToCreate);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //批量生成task任务
 | 
				
			||||||
        if (!taskToCreate.isEmpty()) {
 | 
					        if (!taskToCreate.isEmpty()) {
 | 
				
			||||||
            batchCreateOrUpdate.batchCreate(taskToCreate);
 | 
					            batchCreateOrUpdate.batchCreate(taskToCreate);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -235,7 +235,7 @@ public class MoServiceImpl implements MoService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void createTasks(Item item, Stock stock, Point srcPoint, Point endPoint, String propC1, MoDto moDto, OrderDto orderDto) {
 | 
					    public void createTasks(Item item, Stock stock, Point srcPoint, Point endPoint, String propC1, MoDto moDto, OrderDto orderDto) {
 | 
				
			||||||
        // 生成AGV任务
 | 
					        // 生成AGV任务
 | 
				
			||||||
        AgvTask agvTask = new AgvTask(BizStatus.ASN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "RACK_MOVE_FULL");
 | 
					        AgvTask agvTask = new AgvTask(BizStatus.ASN, stock.getCode(), srcPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "PICKER_MOVE");
 | 
				
			||||||
        agvTaskService.create(agvTask);
 | 
					        agvTaskService.create(agvTask);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 生成入库任务
 | 
					        // 生成入库任务
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,14 +2,12 @@ package com.youchain.modules.quartz.task;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.youchain.businessdata.inputJson.MoInfo;
 | 
					import com.youchain.businessdata.inputJson.MoInfo;
 | 
				
			||||||
import com.youchain.businessdata.inputJson.MoParams;
 | 
					import com.youchain.businessdata.inputJson.MoParams;
 | 
				
			||||||
import com.youchain.businessdata.rest.MlsController;
 | 
					 | 
				
			||||||
import com.youchain.businessdata.service.MlsService;
 | 
					import com.youchain.businessdata.service.MlsService;
 | 
				
			||||||
import com.youchain.service.LogService;
 | 
					import com.youchain.service.LogService;
 | 
				
			||||||
import com.youchain.utils.UrlApi;
 | 
					import com.youchain.utils.UrlApi;
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,77 +26,45 @@ import java.util.concurrent.CopyOnWriteArrayList;
 | 
				
			||||||
@Service
 | 
					@Service
 | 
				
			||||||
public class pickTask {
 | 
					public class pickTask {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    public AgvTaskRepository agvTaskRepository;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    public AgvTaskService agvTaskService;
 | 
					    public AgvTaskService agvTaskService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Map<String, List<Integer>> groupedTasks = new HashMap<>();
 | 
					    private static final int MAX_TASK_COUNT = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long TIMEOUT_MS = 2*60*1000;
 | 
				
			||||||
    private long lastTaskTime = System.currentTimeMillis();
 | 
					    private long lastTaskTime = System.currentTimeMillis();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void pickTask() {
 | 
					    public void pickTask() {
 | 
				
			||||||
        //按线边分组 下发出库任务
 | 
					        // 下发出库任务
 | 
				
			||||||
        List<Object> objectList = agvTaskRepository.queryGroupAgvTask();
 | 
					        List<AgvTask> agvTaskList = agvTaskService.queryByAgvTask(BizStatus.OPEN,BizStatus.PICK);
 | 
				
			||||||
        for (Object obj : objectList) {
 | 
					        if (agvTaskList.size() > 0) {
 | 
				
			||||||
            List<AgvTask> agvTaskList = agvTaskRepository.queryLineAgvTask(obj.toString());
 | 
					            if ((agvTaskList.size() == MAX_TASK_COUNT)) {
 | 
				
			||||||
            for (AgvTask agvTask : agvTaskList) {
 | 
					                Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList));
 | 
				
			||||||
                List<Integer> agvTaskList1 = groupedTasks.get(obj.toString());
 | 
					 | 
				
			||||||
                if (agvTaskList1 == null) {
 | 
					 | 
				
			||||||
                    groupedTasks.computeIfAbsent(obj.toString(), k -> new CopyOnWriteArrayList<>()).add(agvTask.getId());
 | 
					 | 
				
			||||||
                } else if (agvTaskList1.size() <= 4) {
 | 
					 | 
				
			||||||
                    boolean containsElement = agvTaskList1.contains(agvTask.getId());
 | 
					 | 
				
			||||||
                    if (!containsElement) {
 | 
					 | 
				
			||||||
                        groupedTasks.computeIfAbsent(obj.toString(), k -> new CopyOnWriteArrayList<>()).add(agvTask.getId());
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            // 检查是否满足四个为一组或者时间超过五分钟
 | 
					 | 
				
			||||||
            if ((isGroupingConditionsMet() || timeExceeded()) && isLine() ) {
 | 
					 | 
				
			||||||
                issueGroupedTasks();
 | 
					 | 
				
			||||||
                groupedTasks.clear();
 | 
					 | 
				
			||||||
                lastTaskTime = System.currentTimeMillis();
 | 
					                lastTaskTime = System.currentTimeMillis();
 | 
				
			||||||
 | 
					            }else if((System.currentTimeMillis() - lastTaskTime >=TIMEOUT_MS) ){
 | 
				
			||||||
 | 
					                if(agvTaskList.size()>MAX_TASK_COUNT){
 | 
				
			||||||
 | 
					                    List<AgvTask> newAgvTask = agvTaskList.subList(0,MAX_TASK_COUNT);
 | 
				
			||||||
 | 
					                    Result(agvTaskService.sendAgvTaskLXImpl(newAgvTask));
 | 
				
			||||||
                }else{
 | 
					                }else{
 | 
				
			||||||
                log.info("小件出库料箱任务未满足条件!");
 | 
					                    Result(agvTaskService.sendAgvTaskLXImpl(agvTaskList));
 | 
				
			||||||
 | 
					                    lastTaskTime = System.currentTimeMillis();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                throw new RuntimeException("出库料箱任务未满足条件(不满足五个料箱需等待2分钟)!");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            throw new RuntimeException("无出库料箱任务!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private boolean isLine() {
 | 
					    private void Result(String result) {
 | 
				
			||||||
        // 判断缓存输送线上的料箱总数+AGV执行中的数量 不能超过6个
 | 
					        if(result==null ||result.length()==0){
 | 
				
			||||||
        int queryCount = agvTaskService.QueryCount("6x1");
 | 
					            throw new RuntimeException("任务下发失败!");
 | 
				
			||||||
 | 
					 | 
				
			||||||
        //出库料箱AGV执行中的数量
 | 
					 | 
				
			||||||
        //List<AgvTask> agvTaskList= agvTaskService.findByAgvList(BizStatus.PICK,"PICKER_MOVE");
 | 
					 | 
				
			||||||
        if(queryCount<=6){
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private boolean isGroupingConditionsMet() {
 | 
					 | 
				
			||||||
        // 判断是否满足四个为一组的条件
 | 
					 | 
				
			||||||
        return groupedTasks.values().stream().anyMatch(tasks -> tasks.size() == 4);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private boolean timeExceeded() {
 | 
					 | 
				
			||||||
        // 判断时间是否超过3分钟
 | 
					 | 
				
			||||||
        return System.currentTimeMillis() - lastTaskTime >= 2 * 60 * 1000;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void issueGroupedTasks() {
 | 
					 | 
				
			||||||
        // 实现任务下发的逻辑
 | 
					 | 
				
			||||||
        // 可以遍历groupedTasks,处理每个分组的任务
 | 
					 | 
				
			||||||
        for (List<Integer> tasksInGroup : groupedTasks.values()) {
 | 
					 | 
				
			||||||
           List<AgvTask> agvTaskList= agvTaskService.findById(tasksInGroup);
 | 
					 | 
				
			||||||
            String rul=agvTaskService.sendAgvTaskLXImpl(agvTaskList);
 | 
					 | 
				
			||||||
            System.out.println(rul);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,12 +31,12 @@ public class TimeNumberUtils {
 | 
				
			||||||
        return "RC"+datetime +addLeftZero(s, length);
 | 
					        return "RC"+datetime +addLeftZero(s, length);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static synchronized String getXJTaskCode() {
 | 
					    public static synchronized String getLXTaskCode() {
 | 
				
			||||||
        sequence = sequence >= 999999 ? 1 : sequence + 1;
 | 
					        sequence = sequence >= 999999 ? 1 : sequence + 1;
 | 
				
			||||||
        String datetime = new SimpleDateFormat("yyMMddHHmmss")
 | 
					        String datetime = new SimpleDateFormat("yyMMddHHmmss")
 | 
				
			||||||
                .format(new Date());
 | 
					                .format(new Date());
 | 
				
			||||||
        String s = Integer.toString(sequence);
 | 
					        String s = Integer.toString(sequence);
 | 
				
			||||||
        return "XJ"+datetime +addLeftZero(s, length);
 | 
					        return "LX"+datetime +addLeftZero(s, length);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static synchronized String getGTTaskCode() {
 | 
					    public static synchronized String getGTTaskCode() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue