自动化立体仓库 - WMS系统
#
whycq
2024-05-20 5e26cbc65c02d0b2bfda731bdce5519057cf13e8
#
6个文件已修改
105 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/AgvWrkDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/AgvLocDetlMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/AgvWrkDetlMapper.java
@@ -31,4 +31,6 @@
    int updateOrderNo(@Param("orderNo")String orderNo, @Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch);
    int updateWrkNo1(@Param("wrk_no")Integer wrkNo, @Param("supp_code")String barcode, @Param("matnr")String matnr, @Param("three_code")String threeCode);
}
src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
@@ -24,6 +24,8 @@
    boolean updateOrderNo(String orderNo, Integer wrkNo, String matnr, String batch);
    boolean updateWrkNo1(Integer wrkNo, String barcode, String matnr, String threeCode);
    boolean deleteByWrkNo(int wrkNo);
}
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -11,6 +11,7 @@
import com.zy.asrs.service.*;
import com.zy.common.model.DetlDto;
import com.zy.common.service.AgvCommonService;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -454,56 +455,41 @@
    */
    @Override
    @Transactional
    @Synchronized
    public String allocationOut(AgvMobileStartPakin param, Long userId) {
        Date now = new Date();
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
        Integer oldWrkNo = agvWrkMast.getWrkNo();
        if (Cools.isEmpty(agvWrkMast)) {
            throw new CoolException("工作档中没有此站点任务");
        }
        //生成AGV工作历史档 + 生成AGV工作明细历史档
        agvWrkMastLogService.save(agvWrkMast);
        agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
        //删除AGV工作档
        agvWrkMastService.deleteById(agvWrkMast);
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(210L);
        //入出库类型
        mast.setIoType(111);
        mast.setIoTime(now);
        //优先级
        mast.setIoPri(300.0);
        //源站点
        mast.setSourceLocNo("");
        //目标站点
        mast.setLocNo("");
        //容器编码
        mast.setBarcode(agvWrkMast.getBarcode());
        //容器类型
        mast.setWhsType(30);
        // 目标楼层
        mast.setPauseMk(agvWrkMast.getPauseMk());
        mast.setAppeUser(userId);
        mast.setAppeTime(now);
        mast.setModiUser(userId);
        mast.setModiTime(now);
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
        AgvWrkMast wrkMast = createWrkMast(111, 210L, "", "", agvWrkMast.getBarcode(), now, userId, 30, agvWrkMast.getCrnNo());
        // 更新工作明细
        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
            agvWrkDetl.setWrkNo(mast.getWrkNo());
            if (!agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()))) {
                throw new CoolException("更新工作明细失败");
            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
            // 保持工作档明细
            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
            agvWrkDetl.setModiUser(userId);
            agvWrkDetl.setModiTime(now);
            if (!agvWrkDetlService.insert(agvWrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
        }
        // 更新站点状态
        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
        // 更新源库位状态
        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
        //删除AGV工作档
        agvWrkMastService.deleteById(agvWrkMast);
        //删除AGV工作明细档
        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
        return "ok";
    }
    /*
@@ -514,8 +500,12 @@
    public String allocationIn(AgvMobileStartPakin param, Long userId) {
        Date now = new Date();
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
        AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo());
        if (Cools.isEmpty(agvWrkMast)) {
            throw new CoolException("工作档中没有此货架任务");
        }
        if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) {
            throw new CoolException("请移动到->" + agvWrkMast.getCrnNo() + "楼入库点入库");
        }
        //工作状态
        agvWrkMast.setWrkSts(211L);
@@ -540,4 +530,41 @@
        agvLocMastService.updateById(locMast);
    }
    /*
   生成工作档
    */
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType,int floor){
        AgvWrkMast wrkMast = new AgvWrkMast();
        //工作状态
        wrkMast.setWrkSts(wrkSts);
        //入出库类型
        wrkMast.setIoType(ioType);
        wrkMast.setIoTime(now);
        //优先级
        wrkMast.setIoPri(300.0);
        //源站点
        wrkMast.setSourceLocNo(sourceLocNo);
        //目标站点
        wrkMast.setLocNo(locNo);
        //容器编码
        wrkMast.setBarcode(barcode);
        //容器类型
        wrkMast.setWhsType(containerType);
        // 目标楼层
        wrkMast.setCrnNo(floor);
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
        return wrkMast;
    }
}
src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
@@ -91,6 +91,11 @@
    }
    @Override
    public boolean updateWrkNo1(Integer wrkNo, String barcode, String matnr, String threeCode) {
        return baseMapper.updateWrkNo1(wrkNo, barcode, matnr, threeCode) > 0;
    }
    @Override
    public boolean deleteByWrkNo(int wrkNo) {
        return this.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
    }
src/main/resources/AgvLocDetlMapper.xml
@@ -72,4 +72,6 @@
        group by a.matnr
        ) b
    </select>
</mapper>
src/main/resources/mapper/WrkDetlMapper.xml
@@ -140,4 +140,7 @@
        <include refid="batchSeq"></include>
    </update>
</mapper>