src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/WrkMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/BareBoardScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/properties/SlaveWmsParameterProperties.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/system/mapper/ConfigMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/system/service/ConfigService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/system/service/impl/ConfigServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ConfigMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.WrkMast; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; @@ -16,4 +17,7 @@ List<WrkMast> selectToBeHistoryData(); @Select("select count(1) from asr_wrk_mast where 1=1 and io_type = #{ioType} and sta_no = #{staNo}") int selectWrkMastBareBoardStaNo(Integer ioType,Integer staNo); } src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -21,4 +21,6 @@ * @return */ int getStoreCount(Integer crnNo); int selectWrkMastBareBoardStaNo(Integer ioType,Integer staNo); } src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -45,4 +45,9 @@ .last(" and (wrk_sts in (1,2) or (wrk_sts=3 and wrk_no in (select wrk_no from asr_bas_devp)))")); } @Override public int selectWrkMastBareBoardStaNo(Integer ioType,Integer staNo) { return this.baseMapper.selectWrkMastBareBoardStaNo(ioType,staNo); } } src/main/java/com/zy/asrs/task/BareBoardScheduler.java
New file @@ -0,0 +1,42 @@ package com.zy.asrs.task; import com.core.common.Cools; import com.zy.asrs.task.handler.BareBoardHandler; import com.zy.common.properties.SlaveWmsParameterProperties; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; /** * Created by Monkey D. Luffy on 2023.10.25 * 广德宜科..............以下.............广德宜科.............自动补空板再优化 */ @Component public class BareBoardScheduler { @Autowired private BareBoardHandler bareBoardHandler; @Autowired private ConfigService configService; @Autowired private SlaveWmsParameterProperties slaveWmsParameterProperties; /* * 自动调空板出库 * */ @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){ Config config = configService.selectConfigByCode("AutomaticFillingBoard"); if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")){ for (Integer staNo : slaveWmsParameterProperties.getAutomaticFillingBoardStaNos()){ bareBoardHandler.start(110,staNo,"D"); } } } } } src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
New file @@ -0,0 +1,143 @@ package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.StaDesc; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.StaDescService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by Monkey D. Luffy on 2023.10.25 * 广德宜科..............以下.............广德宜科.............自动补空板再优化 */ @Slf4j @Service @Transactional public class BareBoardHandler extends AbstractHandler<String> { @Autowired private WrkMastService wrkMastService; @Autowired private LocMastService locMastService; @Autowired private CommonService commonService; @Autowired private StaDescService staDescService; @Autowired private BasCrnpService basCrnpService; public ReturnT<String> start(Integer ioType,Integer staNo,String locStsTarget) { try { if (wrkMastService.selectWrkMastBareBoardStaNo(ioType,staNo)!=0){ return null; } // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); ArrayList<Integer> crns =new ArrayList<>(); List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0)); for (BasCrnp basCrnp : basCrnps){ crns.add(basCrnp.getCrnNo()); } for (BasCrnp basCrnp : basCrnpService.selectList(new EntityWrapper<>())){ crns.add(basCrnp.getCrnNo()); } if (Cools.isEmpty(crns) || crns.size()==0){ return null; } boolean sign = true; for (Integer crnNo : crns){ sign = true; // 获取库位 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts",locStsTarget).eq("crn_no",crnNo)); if (Cools.isEmpty(locMast)) { // throw new CoolException("库中无空板!!!"); sign=false; } if (sign && !locMast.getLocSts().equals(locStsTarget)){ // throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$()); sign=false; } if (sign){ // 获取源站 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", ioType) .eq("stn_no", staNo) .eq("crn_no", crnNo); StaDesc staDesc = staDescService.selectOne(wrapper); Integer sourceStaNo = staDesc.getCrnStn(); if (Cools.isEmpty(sourceStaNo)) { // throw new CoolException("检索源站失败"); sign = false; } if (sign){ Date now = new Date(); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态 wrkMast.setIoType(ioType); // 入出库状态 wrkMast.setIoPri(10D); wrkMast.setSourceStaNo(sourceStaNo); // 源站 wrkMast.setStaNo(staNo); // 目标站 wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位 wrkMast.setFullPlt(ioType.equals(110)? "N" : "Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk(ioType.equals(110)? "Y" : "N"); // 空板 wrkMast.setLinkMis("N"); wrkMast.setAppeUser(9999L); wrkMast.setAppeTime(now); wrkMast.setModiUser(9999L); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 更新库位状态 D.空板 -> R.出库预约 if (locMast.getLocSts().equals(locStsTarget)){ locMast.setLocSts("R"); locMast.setModiUser(9999L); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("更新库位状态失败"); }else { return SUCCESS; } } } } } if (!sign){ log.error("未查到可出库的空板!!!"); return null; } }catch (Exception e){ log.error("异常!!!"+e); return null; } return SUCCESS; } } src/main/java/com/zy/common/properties/SlaveWmsParameterProperties.java
New file @@ -0,0 +1,23 @@ package com.zy.common.properties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; /** * Created by vincent on 2023/10/25 */ @Data @Configuration @ConfigurationProperties(prefix = "wms-parameter") public class SlaveWmsParameterProperties { // 自动补空板功能开关 private boolean automaticFillingBoardStaNosBoolean; // 自动补空板站点 private List<Integer> automaticFillingBoardStaNos = new ArrayList<>(); } src/main/java/com/zy/system/mapper/ConfigMapper.java
@@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.system.entity.Config; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Mapper @Repository public interface ConfigMapper extends BaseMapper<Config> { Config selectConfigByCode(@Param("code") String code); } src/main/java/com/zy/system/service/ConfigService.java
@@ -5,4 +5,5 @@ public interface ConfigService extends IService<Config> { Config selectConfigByCode(String code); } src/main/java/com/zy/system/service/impl/ConfigServiceImpl.java
@@ -9,4 +9,9 @@ @Service("configService") public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements ConfigService { @Override public Config selectConfigByCode(String code){ return this.baseMapper.selectConfigByCode(code); }; } src/main/resources/application.yml
@@ -57,6 +57,12 @@ doubleLocsLeft: 1,5,9,13 # 右深库位排号 doubleLocsRight: 4,8,12,16 # wms参数配置 wms-parameter: # 自动补空板功能开关 automaticFillingBoardStaNosBoolean: true # 自动补空板站点 automaticFillingBoardStaNos: 112,101 comb: limit: 5000 src/main/resources/mapper/ConfigMapper.xml
@@ -13,4 +13,10 @@ </resultMap> <select id="selectConfigByCode" resultMap="BaseResultMap"> select top 1 * from sys_config where 1=1 and code=#{code} </select> </mapper>