自动化立体仓库 - WMS系统
#
lsh
2024-07-10 befbe654bbd198f7bb57a5d3dd53cecb53d197fd
#
4个文件已修改
1个文件已添加
375 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/SmallCompleteParam.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/StockOutParam.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -218,18 +218,18 @@
        return R.ok();
    }
    /**
     * 中控(2楼):码垛完成下发入库信息
     */
    @PostMapping("/palletizing/complete/auth/v1")
    @AppAuth(memo = "中控(2楼):码垛完成下发入库信息")
    public synchronized R PalletizingCompleteTwoFloorParam(@RequestHeader(required = false) String appkey,
                                           @RequestBody PalletizingCompleteTwoFloorParam param,
                                           HttpServletRequest request) {
        auth(appkey, param, request);
        openService.PalletizingCompleteTwoFloorParam(param);
        return R.ok(param);
    }
//    /**
//     * 中控(2楼):码垛完成下发入库信息
//     */
//    @PostMapping("/palletizing/complete/auth/v1")
//    @AppAuth(memo = "中控(2楼):码垛完成下发入库信息")
//    public synchronized R PalletizingCompleteTwoFloorParam(@RequestHeader(required = false) String appkey,
//                                           @RequestBody PalletizingCompleteTwoFloorParam param,
//                                           HttpServletRequest request) {
//        auth(appkey, param, request);
//        openService.PalletizingCompleteTwoFloorParam(param);
//        return R.ok(param);
//    }
    /**
     * 松盛(1楼):码垛完成下发入库信息
@@ -287,18 +287,18 @@
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
    /*...........................亳州煜星..............以上.............亳州煜星...........................*/
//    /**
//     * 亳州煜星任务下发
//     */
//    @PostMapping("/small/containers/auth/v1")
//    @AppAuth(memo = "贴标机贴标完成") //old需要修改
//    public synchronized R smallContainers(@RequestHeader(required = false) String appkey,
//                                          @RequestBody LabellerCompleteParam param,
//                                          HttpServletRequest request) {
//        auth(appkey, param, request);
//        openService.labellerComplete(param);
//        return R.ok();
//    }
    /**
     * 亳州煜星任务下发  //  小料箱投料完成组托
     */
    @PostMapping("/small/containers/auth/v1")
    @AppAuth(memo = "小料箱投料完成组托")
    public synchronized R smallContainers(@RequestHeader(required = false) String appkey,
                                          @RequestBody SmallCompleteParam param,
                                          HttpServletRequest request) {
        auth(appkey, param, request);
        openService.smallContainers(param);
        return R.ok().add("成功");
    }
//
//    /**
//     * 亳州煜星任务下发
src/main/java/com/zy/asrs/entity/param/SmallCompleteParam.java
New file
@@ -0,0 +1,65 @@
package com.zy.asrs.entity.param;
import lombok.Data;
/*
 *  Created by Monkey D. Luffy on 2024.07.10
 * */
@Data
public class SmallCompleteParam {
    /*
    * 产线点位(非直供产线类型填0)
    * 126、121、311、310(目前四个产线位置)
    * */
    private Integer devNo;    //    是    int    产线点位
    /*
    * 投料点位:
    * 小料箱:173
    * 大料箱:290、279
    * 1楼待硫化:459、452
    * */
    private Integer staNo;    //    是    int    投料点位
    /*
    * 类型:
    * 0:直接入库
    * 1:直供产线
    * 2:硫化罐
    * */
    private Integer type;    //    是    int    类型
    private String matnr;    //    是    字符串    物料代码
    private String maktx;    //    是    字符串
    private String batch;    //    是    字符串
    private String specs;    //    是    字符串
    private String color;    //    是    字符串
    private Double weight;    //    是    字符串
    // 库位号
    private String locNo;
    //批次
    private String model;
    //木箱类型
    private String brand;
    //托盘码
    private String zpallet;
    private String origin;
    // 木箱中铜箔数量
    private Double anfme;
    // 木箱中铜箔数量
    private Double count;
}
src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -1,7 +1,9 @@
package com.zy.asrs.entity.param;
import com.zy.asrs.entity.LocDetl;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
@@ -58,4 +60,23 @@
    }
    public StockOutParam(){};
    public StockOutParam(SmallCompleteParam param, com.zy.asrs.entity.LocDetl locDetlSou){
        this.outSite = param.getDevNo();
        LocDetl locDetl = new LocDetl();
        ArrayList<LocDetl> locDetlArrayList = new ArrayList<>();
        locDetl.setMatnr(param.getMatnr());
        locDetl.setBrand(param.getBrand());
        locDetl.setAnfme(1.0);
        locDetl.setLocNo(locDetlSou.getLocNo());
        locDetl.setModel(locDetlSou.getModel());
        locDetl.setBatch(locDetlSou.getBatch());
        locDetl.setZpallet(locDetlSou.getZpallet());
        locDetl.setWeight(locDetlSou.getWeight());
        locDetl.setSpecs(locDetlSou.getSpecs());
        locDetlArrayList.add(locDetl);
        this.locDetls = locDetlArrayList;
    };
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -59,4 +59,6 @@
    void cs2();
    void smallContainers(SmallCompleteParam param);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.CodeDetectionUtil;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.PostMesDataUtils;
import com.zy.common.model.DetlDto;
@@ -80,6 +81,8 @@
    private StaDescService staDescService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WorkService workService;
    @Override
    @Transactional
@@ -1044,4 +1047,240 @@
    }
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
    /*...........................亳州煜星..............以下.............亳州煜星...........................*/
    /*
     * 亳州煜星任务下发  //
     * */
    @Override
    @Transactional
    public void smallContainers(SmallCompleteParam param) {
        try{
            //判断param参数
            if (Cools.isEmpty(param.getType())){
                throw new CoolException("参数:类型 type为空");
            }
            if (param.getType()==0){//直接入库
                smallContainersSmall(param);
            } else if (param.getType()==1){//直供产线  //出库
                smallContainersBig(param);
            } else if (param.getType()==2){//入库 途径 硫化罐
                smallContainersJar(param);
            }
        } catch (Exception e){
            throw new CoolException("失败!!!原因:"+e.getMessage());
        }
    }
    /*
    * 小料箱投料完成组托
    * */
    public void smallContainersSmall(SmallCompleteParam param) {//直接入库
        Long userId = 7777L;//mes
        //判断param参数
        if (Cools.isEmpty(param.getType())){
            throw new CoolException("参数:类型 type为空");
        }else if (Cools.isEmpty(param.getStaNo())){
            throw new CoolException("参数:投料点位 staNo为空");
//        }else if (Cools.isEmpty(param.getDevNo())){
//            throw new CoolException("参数:产线点位 devNo为空");
        }else if (Cools.isEmpty(param.getMatnr())){
            throw new CoolException("参数:物料编码 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        Mat mat = matService.selectByMatnr(param.getMatnr());
        if (Cools.isEmpty(mat)) {
//            mat = new Mat();
//            mat.setMatnr(param.getMatnr());
//            mat.setMaktx(param.getMatnr());
//            mat.setTagId(tagService.getTop().getId());
//            mat.setCreateBy(userId);
//            mat.setCreateTime(now);
//            mat.setUpdateBy(userId);
//            mat.setUpdateTime(now);
//            mat.setStatus(1);
//            if (!matService.insert(mat)) {
//                throw new CoolException("规格添加失败,请联系管理员");
//            }
            throw new CoolException("物料:"+param.getMatnr()+" 不存在,请先下发物料基础信息");
        }
        BasDevp basDevp = basDevpService.selectById(param.getStaNo());
        if (Cools.isEmpty(basDevp.getAutoing()) || !basDevp.getAutoing().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是自动状态");
        }
        if (Cools.isEmpty(basDevp.getLoading()) || !basDevp.getLoading().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是有物状态");
        }
        if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是能入状态");
        }
        if (Cools.isEmpty(basDevp.getBarcode())){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码==》为空"+basDevp.getBarcode());
        }
        if (CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码:"+basDevp.getBarcode());
        }
        if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", basDevp.getBarcode()))!=0
                || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", basDevp.getBarcode()))!=0
                || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()))!=0){
            throw new CoolException("托盘条码:"+basDevp.getBarcode()+"已存在,请勿重复组托");
        }
        Date now = new Date();
        WaitPakin waitPakin = new WaitPakin();
        waitPakin.sync(mat);
//        waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
//        waitPakin.setModel(matList.getModel());       //卷号  唯一值
//        waitPakin.setBrand(param.getBoxType());     //木箱类型
        waitPakin.setZpallet(basDevp.getBarcode());   //托盘码
//        waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
        waitPakin.setWeight(param.getWeight());  //净重
//        waitPakin.setVolume(matList.getRoughWeight());  //毛重
//        waitPakin.setPrice(matList.getRollExtent());   //长度
//        waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头
//        waitPakin.setIoStatus("N");     // 入出状态
//        waitPakin.setAnfme(matList.getAnfme());  // 数量
        waitPakin.setColor(param.getColor());  // 颜色
        waitPakin.setStatus("Y");    // 状态
        waitPakin.setAppeUser(userId);
        waitPakin.setAppeTime(now);
        waitPakin.setModiUser(userId);
        waitPakin.setModiTime(now);
        if (!waitPakinService.insert(waitPakin)) {
            throw new CoolException("保存入库通知档失败");
        }
    }
    /*
    * 出库
    * 直供产线
    * */
    public void smallContainersBig(SmallCompleteParam param) {//直供产线//出库
        Long userId = 7777L;//mes
        //判断param参数
        if (Cools.isEmpty(param.getType())){
            throw new CoolException("参数:类型 type为空");
//        }else if (Cools.isEmpty(param.getStaNo())){
//            throw new CoolException("参数:投料点位 staNo为空");
        }else if (Cools.isEmpty(param.getDevNo())){
            throw new CoolException("参数:产线点位 devNo为空");
        }else if (Cools.isEmpty(param.getMatnr())){
            throw new CoolException("参数:品号 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr()).eq("weight", param.getWeight()).eq("color", param.getColor()));
        if (locDetls.isEmpty()){
            locDetls = new ArrayList<LocDetl>();
        }
        if (locDetls.isEmpty()){
            throw new CoolException("未找到符合条件的物料明细:品号==》matnr:"+param.getMatnr()+";重量==》wright:"+param.getWeight()+";颜色==》color:"+param.getColor());
        }
        for (LocDetl locDetl : locDetls){
            StockOutParam stockOutParam = new StockOutParam(param,locDetl);
            workService.startupFullTakeStore(stockOutParam, userId);
        }
    }
    public void smallContainersJar(SmallCompleteParam param) {
        Long userId = 7777L;//mes
        //判断param参数
        if (Cools.isEmpty(param.getType())){
            throw new CoolException("参数:类型 type为空");
        }else if (Cools.isEmpty(param.getStaNo())){
            throw new CoolException("参数:投料点位 staNo为空");
//        }else if (Cools.isEmpty(param.getDevNo())){
//            throw new CoolException("参数:产线点位 devNo为空");
        }else if (Cools.isEmpty(param.getMatnr())){
            throw new CoolException("参数:物料编码 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        Mat mat = matService.selectByMatnr(param.getMatnr());
        if (Cools.isEmpty(mat)) {
//            mat = new Mat();
//            mat.setMatnr(param.getMatnr());
//            mat.setMaktx(param.getMatnr());
//            mat.setTagId(tagService.getTop().getId());
//            mat.setCreateBy(userId);
//            mat.setCreateTime(now);
//            mat.setUpdateBy(userId);
//            mat.setUpdateTime(now);
//            mat.setStatus(1);
//            if (!matService.insert(mat)) {
//                throw new CoolException("规格添加失败,请联系管理员");
//            }
            throw new CoolException("物料:"+param.getMatnr()+" 不存在,请先下发物料基础信息");
        }
        BasDevp basDevp = basDevpService.selectById(param.getStaNo());
        if (Cools.isEmpty(basDevp.getAutoing()) || !basDevp.getAutoing().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是自动状态");
        }
        if (Cools.isEmpty(basDevp.getLoading()) || !basDevp.getLoading().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是有物状态");
        }
        if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点不是能入状态");
        }
        if (Cools.isEmpty(basDevp.getBarcode())){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码==》为空"+basDevp.getBarcode());
        }
        if (CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码:"+basDevp.getBarcode());
        }
        if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", basDevp.getBarcode()))!=0
                || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", basDevp.getBarcode()))!=0
                || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()))!=0){
            throw new CoolException("托盘条码:"+basDevp.getBarcode()+"已存在,请勿重复组托");
        }
        Date now = new Date();
        WaitPakin waitPakin = new WaitPakin();
        waitPakin.sync(mat);
//        waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
//        waitPakin.setModel(matList.getModel());       //卷号  唯一值
//        waitPakin.setBrand(param.getBoxType());     //木箱类型
        waitPakin.setZpallet(basDevp.getBarcode());   //托盘码
//        waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
        waitPakin.setWeight(param.getWeight());  //净重
//        waitPakin.setVolume(matList.getRoughWeight());  //毛重
//        waitPakin.setPrice(matList.getRollExtent());   //长度
//        waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头
//        waitPakin.setIoStatus("N");     // 入出状态
//        waitPakin.setAnfme(matList.getAnfme());  // 数量
        waitPakin.setColor(param.getColor());  // 颜色
        waitPakin.setStatus("Y");    // 状态
        waitPakin.setAppeUser(userId);
        waitPakin.setAppeTime(now);
        waitPakin.setModiUser(userId);
        waitPakin.setModiTime(now);
        if (!waitPakinService.insert(waitPakin)) {
            throw new CoolException("保存入库通知档失败");
        }
    }
    /*...........................亳州煜星..............以上.............亳州煜星...........................*/
}