src/main/java/com/zy/asrs/controller/OutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/utils/OutStockInterceptUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OutController.java
@@ -12,6 +12,7 @@ import com.zy.asrs.service.*; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; import com.zy.common.utils.OutStockInterceptUtil; import com.zy.common.utils.RoleUtils; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -163,6 +164,8 @@ } boolean lack = true; for (LocDto locDto : locDtos) { // 判断入库模式 OutStockInterceptUtil.outStockIntercept(locDto.getStaNo()); if (!locDto.isLack()) { lack = false; break; src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,6 +8,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; /** @@ -73,14 +75,26 @@ @Autowired private ManLocDetlMapper manLocDetlMapper; @Resource private BasDevpMapper basDevpMapper; @Override public R inLocCallAgv(String sta, String inSta) { // 判断入库站点有无出库任务过滤盘点捡料 int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", inSta).ne("wrk_sts",15).notIn("io_type",103,107)); if (count > 0) { BasDevp basDevp = basDevpMapper.selectById(inSta); // 0.出库模式,1.agv入库中,2.生成入库任务 if (basDevp.getDevMk().equals("0")) { // 是出库 // 判断是否有出库任务 int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>() .eq("sta_no", inSta).lt("wrk_sts",14).in("io_type",101,103,107,110)); if (count == 0) { // 没有出库任务,更改为入库模式 basDevp.setDevMk("1"); basDevpMapper.updateById(basDevp); } else { return R.parse(inSta + "站点存在出库任务"); } } // 先绑定 // boolean flag = bindPodAndBerth(sta); src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -19,6 +19,7 @@ import com.zy.common.model.enums.WorkNoType; import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import com.zy.common.utils.OutStockInterceptUtil; import com.zy.common.web.WcsController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -165,6 +166,8 @@ public void startupFullTakeStore(StockOutParam param, Long userId) { // 目标站点状态检测 BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 判断入库模式 OutStockInterceptUtil.outStockIntercept(param.getOutSite()); // 获取库位明细 List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { @@ -556,6 +559,8 @@ if (Cools.isEmpty(param.getOutSite())) { throw new CoolException("站点不存在"); } // 判断入库模式 OutStockInterceptUtil.outStockIntercept(param.getOutSite()); for (String locNo : param.getLocNos()) { // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); @@ -683,6 +688,8 @@ public void locCheckOut(StockOutParam param, Long userId) { // 目标站点状态检测 BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 判断入库模式 OutStockInterceptUtil.outStockIntercept(param.getOutSite()); // 获取库位明细 List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { src/main/java/com/zy/asrs/task/IoModelChangeScheduler.java
New file @@ -0,0 +1,43 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.WrkMastMapper; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @author pang.jiabao * @description 入库模式从1切换到2 * @createDate 2024/11/9 16:31 */ @Component public class IoModelChangeScheduler { @Resource private WrkMastMapper wrkMastMapper; @Resource private BasDevpMapper basDevpMapper; // agv从暂存点到经过扫码器生成任务有延迟,无法判断什么时候生成了任务,定时任务去读到入库任务,更改模式1->2 @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ List<BasDevp> devps = basDevpMapper.selectList(new EntityWrapper<BasDevp>() .in("dev_no", 1040, 2010, 2000, 3010)); for (BasDevp basDevp:devps) { if (basDevp.getDevMk().equals("1")) { int count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", basDevp.getDevNo())); if (count > 0) { basDevp.setDevMk("2"); basDevpMapper.updateById(basDevp); } } } } } src/main/java/com/zy/common/utils/OutStockInterceptUtil.java
New file @@ -0,0 +1,56 @@ package com.zy.common.utils; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.WrkMastMapper; import java.util.HashMap; import java.util.Map; /** * @author pang.jiabao * @description 出库拦截工具类 * @createDate 2024/11/9 14:29 */ public class OutStockInterceptUtil { /** * 堆垛机库入库站点 */ public static final Map<Integer,Boolean> inSiteMap = new HashMap<Integer,Boolean>(){{ inSiteMap.put(1040,true); inSiteMap.put(2010,true);inSiteMap.put(2000,true); inSiteMap.put(3010,true); }}; /** * 堆垛机出库操作时拦截出库站点,判断出入库模式 * @param site 出库站点 */ public static void outStockIntercept(Integer site){ // 只判断堆垛机库的入库站点 if (inSiteMap.get(site)) { BasDevpMapper basDevpMapper = SpringUtils.getBean(BasDevpMapper.class); BasDevp basDevp = basDevpMapper.selectById(site); String devMk = basDevp.getDevMk(); if (devMk.equals("1")) { throw new CoolException("该出库站点agv正在执行入库中"); } else if (devMk.equals("2")) { // 判断该站点入库任务是否完成 WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); int count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>() .eq("source_sta_no", site).in("io_type",1,10,53,57)); if (count == 0) { basDevp.setDevMk("0"); // 没有入库任务,切换成出库模式 basDevpMapper.updateById(basDevp); } else { throw new CoolException("该出库站点存在执行的入库任务"); } } } } }