自动化立体仓库 - WMS系统
pang.jiabao
2024-08-16 7b3d21cd1c68a48e558fb4255321da8ad7f13b7b
成品入库修改
9个文件已修改
242 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/FxprkParam.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/MatMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -44,7 +44,7 @@
    @PostMapping("/fxprk")
    @AppAuth(memo = "反修品入库")
    public synchronized R fxprk(@RequestHeader(required = false) String appkey,
                                                @RequestBody List<FxprkParam> param,
                                                @RequestBody FxprkParam param,
                                                HttpServletRequest request) {
        auth(appkey, param, request);
        return R.ok(openService.fxprk(param));
src/main/java/com/zy/asrs/entity/param/FxprkParam.java
@@ -2,6 +2,8 @@
import lombok.Data;
import java.util.List;
/**
 * @author pang.jiabao
 * @description 反修品入库
@@ -11,17 +13,29 @@
public class FxprkParam {
    /**
     * 包装组号
     */
    private String packageGroupNo;
    /**
     * 木箱位置
     */
    private String boxPos;
    /**
     * 站点
     */
    private Integer palletizingNo;
    /**
     * 托盘码
     */
    private String barcode;
    /**
     * 木箱集合
     */
    private List<Box> boxList;
    @Data
    public static class Box {
        /**
         * 包装组号
         */
        private String packageGroupNo;
        /**
         * 木箱位置
         */
        private String boxPos;
    }
}
src/main/java/com/zy/asrs/mapper/MatMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.plugins.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import com.zy.asrs.entity.Mat;
@@ -25,4 +26,7 @@
    Integer getStockOutPageCount(Map<String, Object> map);
    @Update("update man_mat set origin= #{boxPos},barcode=#{barcode} where brand= #{packageGroupNo}")
    Integer updateBoxPos(@Param("packageGroupNo") String packageGroupNo, @Param("boxPos") String boxPos,@Param("barcode") String barcode);
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -23,7 +23,7 @@
    /**
     * 反修品入库
     */
    String fxprk(List<FxprkParam> param);
    String fxprk(FxprkParam param);
    /**
     *GWMS到达目标站点请求ZWCS执行入库
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.entity.result.ZphjcdgzVo;
import com.zy.asrs.entity.result.ZphjcdwcVo;
import com.zy.asrs.mapper.MatMapper;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
@@ -30,6 +31,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -84,6 +86,9 @@
    private LocMastService locMastService;
    @Autowired
    private ApiLogService apiLogService;
    @Resource
    private MatMapper matMapper;
    @Override
    @Transactional
@@ -1025,73 +1030,85 @@
    @Override
    @Transactional
    public String fxprk(List<FxprkParam> param) {
//
//        // 根据包装组号获取到木箱卷信息
//        List<Mat> list = matService.selectList(new EntityWrapper<Mat>().eq("brand", param.getPackageGroupNo()));
//        if (list.isEmpty()) {
//            throw new CoolException("没有查询到该包装组号信息:" + param.getPackageGroupNo());
//        }
//
//        LocTypeDto locTypeDto = new LocTypeDto();
//        locTypeDto.setLocType1((short) 1);
//        StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0);
//
//        // 返回GWCS目标信息
//        pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo());
//
//        int workNo = dto.getWorkNo();
//        Date now = new Date();
//        // 生成工作档
//        WrkMast wrkMast = new WrkMast();
//        wrkMast.setWrkNo(workNo);
//        wrkMast.setIoTime(new Date());
//        wrkMast.setWrkSts(1L); // 工作状态:设备上走
//        wrkMast.setIoType(1); // 入出库状态:1.入库
//        wrkMast.setIoPri(13D); // 优先级
//        wrkMast.setCrnNo(dto.getCrnNo());
//        wrkMast.setSourceStaNo(param.getPalletizingNo());
//        wrkMast.setStaNo(dto.getStaNo());
//        wrkMast.setLocNo(dto.getLocNo());
//        wrkMast.setBarcode(list.get(0).getBarcode()); // 托盘码
//        wrkMast.setFullPlt("Y"); // 满板:Y
//        wrkMast.setPicking("N"); // 拣料
//        wrkMast.setExitMk("N"); // 退出
//        wrkMast.setEmptyMk("N"); // 空板
//        wrkMast.setLinkMis("Y");
//        wrkMast.setCtnType(1); // 容器类型
//        // 操作人员数据
//        wrkMast.setAppeTime(now);
//        wrkMast.setModiTime(now);
//        boolean res = wrkMastService.insert(wrkMast);
//        if (!res) {
//            throw new CoolException("保存工作档失败");
//        }
//
//        for (Mat obj : list) {
//            WrkDetl wrkDetl = new WrkDetl();
//            wrkDetl.setWrkNo(wrkMast.getWrkNo());
//            wrkDetl.setAnfme(1.0);
//            wrkDetl.sync(obj);
//            wrkDetl.setIoTime(now);
//            wrkDetl.setAppeTime(now);
//            wrkDetl.setModiTime(now);
//            if (!wrkDetlService.insert(wrkDetl)) {
//                throw new CoolException("保存工作明细失败");
//            }
//        }
//
//        // 更新目标库位状态
//        LocMast locMast = locMastService.selectById(dto.getLocNo());
//        if (locMast.getLocSts().equals("O")) {
//            locMast.setLocSts("S"); // S.入库预约
//            locMast.setModiTime(now);
//            if (!locMastService.updateById(locMast)) {
//                throw new CoolException("改变库位状态失败");
//            }
//        } else {
//            throw new CoolException(dto.getLocNo() + "目标库位已被占用");
//        }
    public String fxprk(FxprkParam param) {
        // 根据包装组号获取到木箱卷信息
        List<Mat> list = matService.selectList(new EntityWrapper<Mat>().in("brand", param.getBoxList().stream().map(FxprkParam.Box::getPackageGroupNo).collect(Collectors.toList())));
        if (list.isEmpty()) {
            throw new CoolException("没有查询到该包装组号信息:" + param.getBoxList().toString());
        }
        LocTypeDto locTypeDto = new LocTypeDto();
        locTypeDto.setLocType1((short) 1);
        StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0);
        // 返回GWCS目标信息
        pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo());
        int workNo = dto.getWorkNo();
        Date now = new Date();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(1L); // 工作状态:设备上走
        wrkMast.setIoType(1); // 入出库状态:1.入库
        wrkMast.setIoPri(13D); // 优先级
        wrkMast.setCrnNo(dto.getCrnNo());
        wrkMast.setSourceStaNo(param.getPalletizingNo());
        wrkMast.setStaNo(dto.getStaNo());
        wrkMast.setLocNo(dto.getLocNo());
        wrkMast.setBarcode(param.getBarcode()); // 托盘码
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("Y");
        wrkMast.setCtnType(1); // 容器类型
        // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            throw new CoolException("保存工作档失败");
        }
        for (Mat obj : list) {
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setWrkNo(wrkMast.getWrkNo());
            wrkDetl.setAnfme(1.0);
            // 重新定位木箱位置
            for (FxprkParam.Box box :param.getBoxList()) {
                if (box.getPackageGroupNo().equals(obj.getBrand())) {
                    if (!box.getBoxPos().equals(obj.getOrigin())) {
                        wrkDetl.setOrigin(box.getBoxPos());
                        wrkDetl.setZpallet(param.getBarcode());
                        wrkDetl.setBarcode(param.getBarcode());
                        matMapper.updateBoxPos(box.getPackageGroupNo(), box.getBoxPos(),param.getBarcode());
                    }
                    break;
                }
            }
            wrkDetl.sync(obj);
            wrkDetl.setIoTime(now);
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
        }
        // 更新目标库位状态
        LocMast locMast = locMastService.selectById(dto.getLocNo());
        if (locMast.getLocSts().equals("O")) {
            locMast.setLocSts("S"); // S.入库预约
            locMast.setModiTime(now);
            if (!locMastService.updateById(locMast)) {
                throw new CoolException("改变库位状态失败");
            }
        } else {
            throw new CoolException(dto.getLocNo() + "目标库位已被占用");
        }
        return "入库成功";
    }
@@ -1349,11 +1366,19 @@
            throw new CoolException("工作档当前状态不符合,任务号:" + param.getWorkNo() + ",工作档状态:" + wrkMast.getWrkSts());
        }
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", param.getWorkNo()));
        // 是否需要复核(出库单需复核)
        boolean flag = false;
        if (!wrkDetls.isEmpty()) {
            flag = wrkDetls.stream().anyMatch(wrkDetl -> wrkDetl.getOrderNo() != null);
        }
        // 到达出库口确认为1,更新工作档状态为57.出库完成
        if (param.getOutLocResult() == 1) {
            wrkMast.setWrkSts(20L);
            // 空托盘到位直接更新工作档状态为14.已出库未确认,空托无需复核确认
            if (wrkMast.getIoType() == 110) {
            if (!flag || wrkMast.getIoType() == 110) {
                wrkMast.setWrkSts(14L);
            }
            wrkMastService.updateById(wrkMast);
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -108,14 +108,15 @@
    /**
     * 全板出库到3077或3106的任务,判断出库要走的路径
     * @param wrkMast 工作主档
     * @return 0.只有一条路径,1.理货贴标出库路径,2.贴标打带出库路径
     * @return 1.直接出库 2.理货贴标出库 3.贴标打带出库 4.贴标出库
     */
    private int getDescToGwcs(WrkMast wrkMast) {
        // todo 两条路线怎么选
        int flag = 0;
        if (wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            // 出的物料有几个位置
            List<String> collect = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList());
            // 有几个木箱
            List<String> collect = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
            if (collect.size() == 1) { // 一箱
                if (wrkDetls.size() == 1) { // 一卷去贴标
                     flag = 1;
@@ -125,6 +126,8 @@
            } else if(collect.size() == 2) { // 两箱去贴标打带
                    flag = 2;
            }
        } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) {
            flag = 4;
        }
        return flag;
    }
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -92,15 +92,15 @@
                    // 遍历工作明细,更新库存明细和入库通知档
                    for (WrkDetl wrkDetl : wrkDetls) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if (null != locDetl) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
//                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                            }
                        } else {
                            locDetl = new LocDetl();
//                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
//                        if (null != locDetl) {
//                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
////                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                            }
//                        } else {
                        LocDetl locDetl = new LocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
@@ -113,7 +113,7 @@
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("全板入库 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                            }
                        }
//                        }
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
src/main/resources/mapper/WrkMastMapper.xml
@@ -77,7 +77,7 @@
        or wrk_sts=64
        or (wrk_sts=57 and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and dateadd(mi,15,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
        order by io_time,wrk_no asc
    </select>
src/main/webapp/static/js/common.js
@@ -229,9 +229,9 @@
    ,{field: 'batch', align: 'center',title: '批次', hide: true, sort:true}
    ,{field: 'unit', align: 'center',title: '箱号', hide: false}
    ,{field: 'model', align: 'center',title: '卷号', hide: false}
    ,{field: 'brand', align: 'center',title: '包装组号', hide: true, sort:true}
    ,{field: 'brand$', align: 'center',title: '木箱类型', hide: false, sort:true}
    ,{field: 'anfme', align: 'center',title: '数量', hide: false, sort:true}
    ,{field: 'brand', align: 'center',title: '包装组号', hide: false, sort:true}
    // ,{field: 'brand$', align: 'center',title: '木箱类型', hide: false, sort:true}
    ,{field: 'anfme', align: 'center',title: '数量', hide: true, sort:true}
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false}
    ,{field: 'specs', align: 'center',title: '接头', hide: false}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
@@ -247,7 +247,7 @@
    ,{field: 'weight', align: 'center',title: '单箱净重', hide: false, sort:true}
    ,{field: 'length', align: 'center',title: '长度', hide: false}
    ,{field: 'volume', align: 'center',title: '单箱毛重', hide: false}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'threeCode', align: 'center',title: '合格否', hide: false}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true, sort:true}