| | |
| | | @TableField("right_out_enable") |
| | | private String rightOutEnable; |
| | | |
| | | /** |
| | | * 入罐小车 |
| | | */ |
| | | @ApiModelProperty(value= "入罐小车") |
| | | @TableField("enter_ste_no") |
| | | private Integer enterSteNo; |
| | | |
| | | /** |
| | | * 出罐小车 |
| | | */ |
| | | @ApiModelProperty(value= "出罐小车") |
| | | @TableField("out_ste_id") |
| | | private Integer outSteId; |
| | | |
| | | /** |
| | | * 入罐RGV |
| | | */ |
| | | @ApiModelProperty(value= "入罐RGV") |
| | | @TableField("enter_rgv_id") |
| | | private Integer enterRgvId; |
| | | |
| | | /** |
| | | * 出罐RGV |
| | | */ |
| | | @ApiModelProperty(value= "出罐RGV") |
| | | @TableField("out_rgv_id") |
| | | private Integer outRgvId; |
| | | |
| | | /** |
| | | * 冷却 |
| | | */ |
| | | @ApiModelProperty(value= "冷却") |
| | | private Integer burial; |
| | | |
| | | public BasJar() {} |
| | | |
| | | public BasJar(Integer jarNo,Integer region,Integer jarCode,Integer staNo,Integer jarStatus,Integer jarCount,Integer jarErr,String leftDoor,String rightDoor,String leftInEnable,String leftOutEnable,String autoing,Integer jarMode,String rightInEnable,String rightOutEnable) { |
| | |
| | | @TableField("jar_loc_digit") |
| | | private Integer jarLocDigit; |
| | | |
| | | /** |
| | | * 冷却 |
| | | */ |
| | | @ApiModelProperty(value= "冷却") |
| | | private Integer burial; |
| | | |
| | | public BasJarMast() {} |
| | | |
| | | public BasJarMast(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer enterSteNo,Integer outSteId,Integer enterRgvId,Integer outRgvId,Date ioTime,Date modiTime,Date appeTime) { |
| | | public BasJarMast(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer enterSteNo,Integer outSteId,Integer enterRgvId,Integer outRgvId,Date ioTime,Date modiTime,Date appeTime,Integer jarLocDigit,Integer burial) { |
| | | this.wrkNo = wrkNo; |
| | | this.enterStaNo = enterStaNo; |
| | | this.outStaNo = outStaNo; |
| | |
| | | this.ioTime = ioTime; |
| | | this.modiTime = modiTime; |
| | | this.appeTime = appeTime; |
| | | this.jarLocDigit = jarLocDigit; |
| | | this.burial = burial; |
| | | } |
| | | |
| | | public BasJarMast(BasJar jar,WrkMast wrkMast,Integer jarLocDigit) { |
| | | Date now = new Date(); |
| | | this.wrkNo = wrkMast.getWrkNo().longValue(); |
| | | this.enterStaNo = wrkMast.getSourceStaNo(); |
| | | this.outStaNo = wrkMast.getStaNo(); |
| | | // this.jarEnterStaNo = jarEnterStaNo; |
| | | this.jarOutStaNo = jar.getStaNo(); |
| | | this.jarId = jar.getJarNo(); |
| | | this.jarRegin = jar.getRegion(); |
| | | this.status = 0; |
| | | this.enterSteNo = jar.getEnterSteNo(); |
| | | this.outSteId = jar.getOutSteId(); |
| | | this.enterRgvId = jar.getEnterRgvId();; |
| | | this.outRgvId = jar.getOutRgvId();; |
| | | this.ioTime = wrkMast.getIoTime(); |
| | | this.modiTime = now; |
| | | this.appeTime = now; |
| | | this.jarLocDigit = jarLocDigit; |
| | | this.burial = jar.getBurial(); |
| | | } |
| | | |
| | | |
| | | // BasJarMast basJarMast = new BasJarMast( |
| | | // null, // 工作号[非空] |
| | | // null, // 入库源站点[非空] |
| | |
| | | @Repository |
| | | public interface BasJarMastMapper extends BaseMapper<BasJarMast> { |
| | | |
| | | BasJarMast getJarMastByWrkNo(@Param("wrkNo") Long wrkNo); |
| | | |
| | | List<BasJarMast> getJarMastByJarId(@Param("jarId") Integer jarId); |
| | | |
| | | BasJarMast getJarMastByJarIdMax(@Param("jarId") Integer jarId); |
| | |
| | | @Repository |
| | | public interface WrkMastExecuteMapper extends BaseMapper<WrkMastExecute> { |
| | | |
| | | WrkMastExecute getWrkMastByWrkNo(@Param("wrkNo") Long wrkNo); |
| | | |
| | | Integer getWrkMastByJarIdCount(@Param("jarId") Integer jarId); |
| | | |
| | | } |
| | |
| | | |
| | | public interface BasJarMastService extends IService<BasJarMast> { |
| | | |
| | | BasJarMast getJarMastByWrkNo(Long wrkNo); |
| | | |
| | | List<BasJarMast> getJarMastByJarId(Integer jarId); |
| | | |
| | | BasJarMast getJarMastByJarIdMax(Integer jarId); |
| | |
| | | |
| | | public interface WrkMastExecuteService extends IService<WrkMastExecute> { |
| | | |
| | | WrkMastExecute getWrkMastByWrkNo(Long wrkNo); |
| | | |
| | | Integer getWrkMastByJarIdCount(Integer jarId); |
| | | |
| | | } |
| | |
| | | @Service("basJarMastService") |
| | | public class BasJarMastServiceImpl extends ServiceImpl<BasJarMastMapper, BasJarMast> implements BasJarMastService { |
| | | |
| | | /* |
| | | * 获取BasJarMast |
| | | * */ |
| | | @Override |
| | | public BasJarMast getJarMastByWrkNo(Long wrkNo) { |
| | | return this.baseMapper.getJarMastByWrkNo(wrkNo); |
| | | } |
| | | |
| | | @Override |
| | | public List<BasJarMast> getJarMastByJarId(Integer jarId) { |
| | | return this.baseMapper.getJarMastByJarId(jarId); |
| | |
| | | private BasJarMastService basJarMastService; |
| | | @Autowired |
| | | private WrkMastExecuteService wrkMastExecuteService; |
| | | @Autowired |
| | | private BasJarService basJarService; |
| | | @Autowired |
| | | private BasJarMapper basJarMapper; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | public synchronized void jarGenerateWrkMastSta() { |
| | | for (JarSlave jarSlave : slaveProperties.getJar()) { |
| | | for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){ |
| | | // 获取硫化罐入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(staStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){ |
| | | try{ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),1)!=0){ |
| | | break; |
| | | } |
| | | if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ |
| | | break; |
| | | } |
| | | if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=7){ |
| | | continue; |
| | | } |
| | | BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId()); |
| | | if (!Cools.isEmpty(jarMastByJarIdMax) && jarMastByJarIdMax.getJarLocDigit()==7){ |
| | | continue; |
| | | } |
| | | WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=2){ |
| | | continue; |
| | | } |
| | | if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast)){ |
| | | return; |
| | | }; |
| | | }catch (Exception e){ |
| | | log.error(jarSlave.getId()+"号小车复位线程报错!"+e); |
| | | try{ |
| | | for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){ |
| | | // 获取硫化罐入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(staStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | break; |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){ |
| | | try{ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),1)!=0){ |
| | | break; |
| | | } |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),1)!=0){ |
| | | // log.error("{}号小车",jarSlave.getJarOtherId()); |
| | | break; |
| | | } |
| | | if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ |
| | | break; |
| | | } |
| | | if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=7){ |
| | | break; |
| | | } |
| | | BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId()); |
| | | int jarLocDigit = 0; |
| | | if (Cools.isEmpty(jarMastByJarIdMax)){ |
| | | jarLocDigit = 1; |
| | | } else if (jarMastByJarIdMax.getJarLocDigit()<7){ |
| | | jarLocDigit = jarMastByJarIdMax.getJarLocDigit()+1; |
| | | } else { |
| | | continue; |
| | | } |
| | | WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=2){ |
| | | continue; |
| | | } |
| | | BasJarMast basJarMast = basJarMastService.getJarMastByWrkNo(wrkMast.getWrkNo().longValue()); |
| | | if (!Cools.isEmpty(basJarMast)){ |
| | | continue; |
| | | } |
| | | WrkMastExecute wrkMastExecute = wrkMastExecuteService.getWrkMastByWrkNo(wrkMast.getWrkNo().longValue()); |
| | | if (!Cools.isEmpty(wrkMastExecute)){ |
| | | continue; |
| | | } |
| | | if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){ |
| | | return; |
| | | } |
| | | }catch (Exception e){ |
| | | log.error(jarSlave.getId()+"号小车复位线程报错!"+e); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("{}号硫化罐Jar任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | |
| | | /** |
| | | * Jar任务创建 执行 |
| | | */ |
| | | public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave,WrkMast wrkMast) { |
| | | public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) { |
| | | try{ |
| | | // 获取堆垛机信息 |
| | | JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); |
| | |
| | | return false; |
| | | } |
| | | |
| | | //自动、空闲、右门关闭、 Other左门关闭 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor()){ |
| | | BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); |
| | | if (Cools.isEmpty(basJar)){ |
| | | log.error("{}号硫化罐查询设备档案无信息!!!",jarProtocol.getJarNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (basJar.getJarMode()!=1 && basJar.getJarMode()!=0){ |
| | | return false; |
| | | } |
| | | |
| | | //自动、空闲、右门关闭、 Other左门关闭 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 |
| | | && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ |
| | | if (jarProtocol.statusType == JarStatusType.IDLE || jarProtocol.statusType == JarStatusType.MOVING){ |
| | | BasJarMast basJarMast = new BasJarMast(basJar, wrkMast, jarLocDigit); |
| | | basJarMast.setJarEnterStaNo(staNo);//入硫化罐站点 |
| | | basJarMastService.insert(basJarMast); |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | // log.error("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2); |
| | | log.error("{}号硫化罐生成BasJarMast初始任务失败,异常原因={},工作号={},硫化库位={}",jarSlave.getId(),e.getMessage(),wrkMast,jarLocDigit); |
| | | } |
| | | return false; |
| | | } |
| | |
| | | |
| | | @Service("wrkMastExecuteService") |
| | | public class WrkMastExecuteServiceImpl extends ServiceImpl<WrkMastExecuteMapper, WrkMastExecute> implements WrkMastExecuteService { |
| | | |
| | | @Override |
| | | public WrkMastExecute getWrkMastByWrkNo(Long wrkNo) { |
| | | return this.baseMapper.getWrkMastByWrkNo(wrkNo); |
| | | } |
| | | |
| | | @Override |
| | | public Integer getWrkMastByJarIdCount(Integer jarId) { |
| | | return this.baseMapper.getWrkMastByJarIdCount(jarId); |
| | |
| | | |
| | | NONE(-1, "离线"), |
| | | STOP(0, "离线"), |
| | | HAND(1, "手动"), |
| | | HALF_AUTO(2, "自动"), |
| | | AUTO(3, "其他"), |
| | | AUTO2(100, "其它"), |
| | | // HAND(1, "手动"), |
| | | HALF_AUTO(1, "手动"), |
| | | AUTO(2, "自动"), |
| | | OTHER(3, "其他"), |
| | | OTHER2(100, "其它"), |
| | | ; |
| | | |
| | | public Integer id; |
| | |
| | | <result column="jar_mode" property="jarMode" /> |
| | | <result column="right_in_enable" property="rightInEnable" /> |
| | | <result column="right_out_enable" property="rightOutEnable" /> |
| | | <result column="enter_ste_no" property="enterSteNo" /> |
| | | <result column="out_ste_id" property="outSteId" /> |
| | | <result column="enter_rgv_id" property="enterRgvId" /> |
| | | <result column="out_rgv_id" property="outRgvId" /> |
| | | <result column="burial" property="burial" /> |
| | | |
| | | </resultMap> |
| | | |
| | |
| | | <result column="modi_time" property="modiTime" /> |
| | | <result column="appe_time" property="appeTime" /> |
| | | <result column="jar_loc_digit" property="jarLocDigit" /> |
| | | <result column="burial" property="burial" /> |
| | | |
| | | </resultMap> |
| | | |
| | | <select id="getJarMastByWrkNo" resultMap="BaseResultMap"> |
| | | select top 1 * from asr_bas_jar_mast |
| | | where 1=1 |
| | | and wrk_no = #{wrkNo} |
| | | order by jar_loc_digit desc |
| | | </select> |
| | | |
| | | <select id="getJarMastByJarId" resultMap="BaseResultMap"> |
| | | select * from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | order by jar_loc_digit |
| | | order by jar_loc_digit desc |
| | | </select> |
| | | |
| | | <select id="getJarMastByJarIdMax" resultMap="BaseResultMap"> |
| | |
| | | <select id="selectJarMastOperation1" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts |
| | | and jar_id = #{jarId} |
| | | and wrk_sts in (0,1,2,3) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation2" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts |
| | | and wrk_sts in (4,5,6,7) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation3" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts |
| | | and wrk_sts in (0,1,2,3) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation4" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts |
| | | and wrk_sts in (0,1,2,3) |
| | | </select> |
| | | |
| | | </mapper> |