| | |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.EmptyPlateOutParam; |
| | | import com.zy.asrs.entity.result.FindLocNoAttributeVo; |
| | | import com.zy.asrs.enums.LocAreaType; |
| | | import com.zy.asrs.enums.LocStsType; |
| | | import com.zy.asrs.enums.TaskIOType; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.common.model.LocTypeDto; |
| | | import com.zy.common.model.StartupDto; |
| | | import com.zy.common.model.enums.WorkNoType; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.web.param.GenerateAgvTaskParam; |
| | | import com.zy.common.web.param.SearchLocParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import static com.zy.asrs.enums.TaskIOType.EMPTY_IN; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/10/30 |
| | |
| | | private RowLastnoService rowLastnoService; |
| | | @Autowired |
| | | private WorkService workService; |
| | | @Autowired |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private TaskDetlService taskDetlService; |
| | | @Autowired |
| | | private BasAreasService basAreasService; |
| | | @Autowired |
| | | private LocCacheService locCacheService; |
| | | |
| | | @PostMapping("/generate/AgvTask/v1") |
| | | @ResponseBody |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public synchronized R generateAgvTask(@RequestBody GenerateAgvTaskParam param) { |
| | | if (Cools.isEmpty(param.getStaNo(),param.getWrkNo())){ |
| | | return R.error("站点编号和工作号不能为空"); |
| | | } |
| | | Task searchTask = taskService.selectOne(new EntityWrapper<Task>() |
| | | .eq("source_sta_no", param.getStaNo()) |
| | | ); |
| | | if (!Cools.isEmpty(searchTask)){ |
| | | return R.error("任务已存在"); |
| | | } |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_no", param.getWrkNo()) |
| | | .eq("sta_no", param.getStaNo()) |
| | | ); |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>() |
| | | .eq("wrk_no", param.getWrkNo()) |
| | | ); |
| | | if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkDetls)){ |
| | | return R.error("工作关联任务或明细不存在"); |
| | | } |
| | | |
| | | BasAreas basAreas = basAreasService |
| | | .selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CK.type)); |
| | | LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>() |
| | | .eq("area_id", basAreas.getId()) |
| | | .eq("frozen", 0) |
| | | .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) |
| | | // .eq("loc_no", params.getTarSite()) |
| | | .orderAsc(Arrays.asList("loc_no")) |
| | | .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); |
| | | |
| | | // 获取工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.PICK.type); |
| | | // 保存工作档 |
| | | Task task = new Task(); |
| | | Date now = new Date(); |
| | | task.setWrkNo(workNo) |
| | | .setIoTime(now) |
| | | .setWrkSts(7L) // 工作状态:11.生成出库ID |
| | | .setIoType(1) // 入出库状态: 1.入库 |
| | | .setTaskType("agv") |
| | | .setIoPri(10D) |
| | | .setLocNo(locCache.getLocNo()) // 目标库位 |
| | | .setFullPlt(wrkMast.getIoType().equals(TaskIOType.EMPTY_IN.type) ? "N" : "Y")// 满板:Y |
| | | .setPicking("N") // 拣料 |
| | | .setExitMk("N")// 退出 |
| | | .setSourceStaNo(param.getStaNo().toString()) |
| | | .setEmptyMk(wrkMast.getIoType().equals(TaskIOType.EMPTY_IN.type) ? "Y" : "N")// 空板 |
| | | .setBarcode(wrkMast.getBarcode())// 托盘码 |
| | | .setLinkMis("N") |
| | | .setAppeTime(now) |
| | | .setModiTime(now); |
| | | if (!taskService.insert(task)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | TaskDetl taskDetl = new TaskDetl(); |
| | | BeanUtils.copyProperties(wrkDetl, taskDetl); |
| | | taskDetl.setTaskId(task.getId()); |
| | | taskDetl.setWrkNo(task.getWrkNo()); |
| | | taskDetl.setAppeTime(now); |
| | | taskDetl.setModiTime(now); |
| | | |
| | | if (!taskDetlService.insert(taskDetl)) { |
| | | throw new CoolException("保存AGV工作档明细失败"); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 修改目标库位状态 |
| | | if (locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) { |
| | | locCache.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // S.入库预约 |
| | | locCache.setModiTime(new Date()); |
| | | |
| | | if (!locCacheService.updateById(locCache)) { |
| | | throw new CoolException("更新目标库位状态失败"); |
| | | } |
| | | } else { |
| | | throw new CoolException("移转失败,目标库位状态:" + locCache.getLocSts$()); |
| | | } |
| | | |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/pakin/loc/v1") |
| | | @ResponseBody |