|  |  | 
 |  |  | public interface WrkDetlMapper extends BaseMapper<WrkDetl> { | 
 |  |  |  | 
 |  |  |     List<WrkDetl> findByWorkNo(Integer workNo); | 
 |  |  |     WrkDetl devpPackNo(@Param("workNo")Integer workNo); | 
 |  |  |  | 
 |  |  |     int updateIoTime(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime); | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     void createWorkDetail(Integer workNo, List<WaitPakin> waitPakins, String barcode); | 
 |  |  |  | 
 |  |  |     List<WrkDetl> findByWorkNo(Integer workNo); | 
 |  |  |     WrkDetl devpPackNo(Integer workNo); | 
 |  |  |  | 
 |  |  |     boolean updateIoTime(Integer workNo, Date ioTime); | 
 |  |  |  | 
 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 103站点有物下发pack码 | 
 |  |  |      */ | 
 |  |  |     @Transactional | 
 |  |  |     public void packDevp() { | 
 |  |  |         try { | 
 |  |  |             // 根据输送线plc遍历 | 
 |  |  |             for (DevpSlave devp : slaveProperties.getDevp()) { | 
 |  |  |                 BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("bas_devp",103)); | 
 |  |  |                 if (Cools.isEmpty(basDevp)){ | 
 |  |  |                     log.error("103站点查询失败-MainServiceImpl.java-2255行"); | 
 |  |  |                 } | 
 |  |  |                 if (basDevp.getAutoing().equals("Y") && basDevp.getWrkNo()>0 && basDevp.getLoading().equals("Y") && basDevp.getInEnable().equals("Y")){ | 
 |  |  |                     WrkDetl wrkDetl = wrkDetlService.devpPackNo(basDevp.getWrkNo()); | 
 |  |  |                     if (Cools.isEmpty(wrkDetl)){ | 
 |  |  |                         log.error("103站点查询失败-MainServiceImpl.java-2255行"); | 
 |  |  |                     } | 
 |  |  |                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4,wrkDetl.getMatnr())); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             log.error("103  ===>> 给输送线发送Pack码失败", e); | 
 |  |  |             e.printStackTrace(); | 
 |  |  |             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public WrkDetl devpPackNo(Integer workNo) { | 
 |  |  |         return this.baseMapper.devpPackNo(workNo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean updateIoTime(Integer workNo, Date ioTime) { | 
 |  |  |         return this.baseMapper.updateIoTime(workNo, ioTime) > 0; | 
 |  |  |     } | 
 
 |  |  | 
 |  |  | //                    //火警,给堆垛机发送火警警报 | 
 |  |  | //                    mainService.fierCrn(); | 
 |  |  |  | 
 |  |  |                     //103站点有物下发pack码 | 
 |  |  |                     mainService.packDevp(); | 
 |  |  |  | 
 |  |  |                 } catch (Exception e) { | 
 |  |  |                     e.printStackTrace(); | 
 |  |  |                 } | 
 
 |  |  | 
 |  |  |                     case 2: | 
 |  |  |                         write((StaProtocol)task.getData()); | 
 |  |  |                         break; | 
 |  |  |                     // 写数据 103站点写入PACK码 | 
 |  |  |                     case 4: | 
 |  |  |                         write103((String)task.getData()); | 
 |  |  |                         break; | 
 |  |  |                     //复位测试信号 | 
 |  |  |                     case 3: | 
 |  |  |                         StaProtocol staProtocol = (StaProtocol)task.getData(); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 写入 pack码 =====> 单站点写入 | 
 |  |  |      */ | 
 |  |  |     private void write103(String packNo){ | 
 |  |  |         try{ | 
 |  |  |             OperateResult write = siemensS7Net.Write("DB100.", packNo); | 
 |  |  |             if (!write.IsSuccess) { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(packNo))); | 
 |  |  |                 log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(packNo)); | 
 |  |  |             } else { | 
 |  |  |                 OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(packNo))); | 
 |  |  |                 log.info("输送线命令下发 [id:{}] >>>>> 命令下发: {}",  slave.getId(), JSON.toJSON(packNo)); | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("103站点写入数据失败,输送线线程write103"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 写入 ID+目标站 =====> 单站点写入 | 
 |  |  |      */ | 
 |  |  |     private void write(StaProtocol staProtocol) throws InterruptedException { | 
 
 |  |  | 
 |  |  |     <select id="findByWorkNo" resultMap="BaseResultMap"> | 
 |  |  |         select wrk_no, mat_no, mat_name, qty from asr_wrk_detl where 1=1 and wrk_no = #{workNo} | 
 |  |  |     </select> | 
 |  |  |     <select id="devpPackNo" resultMap="BaseResultMap"> | 
 |  |  |         select top 1 * from asr_wrk_detl_log where 1=1 and wrk_no = #{workNo} order by io_time desc | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <update id="updateIoTime"> | 
 |  |  |         update asr_wrk_detl |