zwl
2025-09-12 effb0d215b52c5cc26a5e9383e279817a8a2f274
电视机程序更新
6个文件已修改
113 ■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/MatDto.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -28,4 +28,6 @@
    @Select("SELECT ld.loc_no FROM asr_loc_detl ld LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no WHERE (1 = 1 AND ld.matnr = #{matnr} AND (lm.row1 >= #{start} AND lm.row1 <= #{end})  AND lm.loc_sts = 'F' AND DateDiff(dd, lm.modi_time, getdate()) = 0) ORDER BY lm.modi_time ASC")
    List<String> selectSameDetlToday(@Param("matnr") String matnr, @Param("start") Integer start, @Param("end") Integer end);
    LocDetl selectMatnrSpecs(@Param("matnr") String matnr, @Param("specs") String specs, @Param("locNo") String locNo);
}
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -24,4 +24,6 @@
     */
    List<String> getSameDetlToday(String matnr, Integer start, Integer end);
    LocDetl selectMatnrSpecs(String matnr, String specs, String locNo);
}
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -40,4 +40,9 @@
        return this.baseMapper.selectSameDetlToday(matnr, start, end);
    }
    @Override
    public LocDetl selectMatnrSpecs(String matnr, String specs, String locNo) {
        return this.baseMapper.selectMatnrSpecs(matnr, specs, locNo);
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1458,6 +1458,7 @@
     * 出库  ===>> 工作档信息写入led显示器
     */
    public synchronized void ledExecute() {
        for (LedSlave led : slaveProperties.getLed()) {
            // 获取输送线plc线程
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1476,7 +1477,10 @@
                // 获取工作档数据
                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
                if (null == wrkMast) { continue; }
                if (null == wrkMast) {
                    continue;
                }
                log.info("开始执行:出库  ===>> 工作档信息写入led显示器");
                wrkMasts.add(wrkMast);
                // 组装命令
                LedCommand ledCommand = new LedCommand();
@@ -1506,17 +1510,40 @@
                        ledCommand.setTitle("空板出库");
                        ledCommand.setEmptyMk(true);
                        break;
                    case 53:
                        ledCommand.setTitle("拣料入库");
                        break;
                    case 57:
                        ledCommand.setTitle("盘点入库");
                        break;
                    case 54:
                        ledCommand.setTitle("并板入库");
                        break;
                    default:
                        log.error("任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                        log.error("电视机显示任务入出库类型错误!!![工作号:{}] [入出库类型:{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                        break;
                }
                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                ledCommand.setLocNo(wrkMast.getLocNo());
                ledCommand.setStaNo(wrkMast.getStaNo());
//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10 ) {
                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs(),wrkDetl.getModel())));
                    try{
                        if (wrkMast.getIoType()>100){
                            for (WrkDetl wrkDetl : wrkDetls){
                                LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
                                wrkDetl.setWeight(locDetl.getAnfme());
                            }
                        }else {
                            for (WrkDetl wrkDetl : wrkDetls){
                                wrkDetl.setWeight(wrkDetl.getAnfme());
                            }
                        }
                    }catch (Exception e){
                        log.error("工作档案明细输入电视机失败1:异常信息==》"+e);
                    }
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
                }
                commands.add(ledCommand);
            }
@@ -1527,24 +1554,33 @@
            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                continue;
            }
//             命令下发 -------------------------------------------------------------------------------
//            if (!commands.isEmpty()) {
//                if (led.getId() < 7) {
//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
//                        News.error(""+mark+" - 2"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
//                        continue;
//                    } else {
//                        ledThread.setLedMk(false);
//                    }
//                } else {
//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
//                        News.error(""+mark+" - 3"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
//                        continue;
//                    } else {
//                        ledThread.setLedMk(false);
//                    }
//                }
//
//            }
            // 命令下发 -------------------------------------------------------------------------------
            if (!commands.isEmpty()) {
                if (led.getId()>4){
                    if (!MessageQueue.offer(SlaveType.Led, led.getId()-4, new Task(3, commands))) {
                        log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                        continue;
                    } else {
                        ledThread.setLedMk(false);
                    }
                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                    log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                    continue;
                }else {
                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                        log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                        continue;
                    } else {
                        ledThread.setLedMk(false);
                    }
                    ledThread.setLedMk(false);
                }
            }
            try {
@@ -1553,6 +1589,7 @@
                    wrkMast.setOveMk("Y");
                    wrkMast.setModiTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast) == 0) {
                        log.error("电视机标记做到工作档中 - 更新工作档失败");
                        throw new CoolException("更新工作档失败");
                    }
                }
@@ -1566,6 +1603,7 @@
            }
        }
        log.info(" - 出库  ===>> 工作档信息写入led显示器执行完成");
    }
    /**
src/main/java/com/zy/common/model/MatDto.java
@@ -12,13 +12,19 @@
    private String matnr;
    // 物料名称
    private String maktx;
    private String maknx;
    // 库位规格
    private String specs;
    // 物料数量
    private Double count;
    // 物料数量
    private String specs;
    // 库位数量
    private Double total;
    //工序
    private String sku;
    // 图号
    private String model;
@@ -33,4 +39,13 @@
        this.specs = specs;
        this.model = model;
    }
    public MatDto(String matNo, String maktx, Double count,Double total,String specs,String sku) {
        this.specs = specs;
        this.matnr = matNo;
        this.maktx = maktx;
        this.maknx = maktx;
        this.count = count;
        this.total = total;
        this.sku = sku;
    }
}
src/main/resources/mapper/LocDetlMapper.xml
@@ -90,4 +90,15 @@
        and b.loc_sts = 'F'
        <include refid="stockOutCondition"></include>
    </select>
    <select id="selectMatnrSpecs" resultMap="BaseResultMap">
        select
            top 1 *
        from asr_loc_detl a
                 left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
          and b.loc_no = #{locNo}
          and a.matnr = #{matnr}
          and a.specs = #{specs}
    </select>
</mapper>