自动化立体仓库 - WMS系统
LSH
2023-09-15 58d1a051b0d8f523901469947900dea5af8b97dd
#PDA接口
1个文件已添加
4个文件已修改
232 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteParam.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -9,9 +9,7 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
@@ -54,6 +52,8 @@
    private PackService packService;
    @Autowired
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    // 商品上架
@@ -144,6 +144,70 @@
        return R.ok().add(combParams);
    }
    @RequestMapping("/wrkDetl/search/batch/auth")
    @ManagerAuth
    public R wrkDetlSearchByBatch(@RequestBody String batch){
        if (Cools.isEmpty(batch)){
            return R.error("参数为空");
        }
//        List<Order> orders = orderService.selectorderNoL(batch);
        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", batch));
        if (Cools.isEmpty(wrkDetl)){
            WrkDetlLog wrkDetlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>().eq("batch", batch));
            if (Cools.isEmpty(wrkDetlLog)){
                return R.error("未查到数据");
            }
            wrkDetl = new WrkDetl();
            wrkDetl.sync(wrkDetlLog);
            wrkDetl.setBatch(wrkDetlLog.getBatch());
            wrkDetl.setBarcode(wrkDetlLog.getBarcode());
            wrkDetl.setDeadTime(wrkDetlLog.getDeadTime());
        }
        if (Cools.isEmpty(wrkDetl)){
            return R.error("未查到数据");
        }
        return R.ok().add(wrkDetl);
    }
    @RequestMapping("/order/search/batch/auth")
    @ManagerAuth
    public R orderSearchByBatch(@RequestBody String batch){
        if (Cools.isEmpty(batch)){
            return R.error("参数为空");
        }
//        List<Order> orders = orderService.selectorderNoL(batch);
        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", batch));
        if (Cools.isEmpty(wrkDetl)){
            WrkDetlLog wrkDetlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>().eq("batch", batch));
            if (Cools.isEmpty(wrkDetlLog)){
                return R.error("未查到数据");
            }
            wrkDetl = new WrkDetl();
            wrkDetl.sync(wrkDetlLog);
            wrkDetl.setBatch(wrkDetlLog.getBatch());
            wrkDetl.setBarcode(wrkDetlLog.getBarcode());
            wrkDetl.setDeadTime(wrkDetlLog.getDeadTime());
        }
        if (Cools.isEmpty(wrkDetl)){
            return R.error("未查到数据");
        }
        return R.ok();
    }
    @RequestMapping("/truss/auth")
    @ManagerAuth(memo = "退库")
    public R trussComb(@RequestBody TrussCombParam combParam){
        mobileService.trussComb(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/truss/comd/auth")
    @ManagerAuth(memo = "手动入库")
    public R trussComb2(@RequestBody PalletizingCompleteParam combParam){
        mobileService.trussComb2(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam){
src/main/java/com/zy/asrs/entity/param/PalletizingCompleteParam.java
@@ -12,7 +12,7 @@
    private String barcode;//    是    字符串    托盘码
    private String palletizingNo;//    是    字符串    码垛位编号
    private String boxType;//    是    字符串    码垛位编号
    private String boxType;//    是    字符串    木箱类型
    private String createTime;//    是    字符串    创建时间
    private List<MatList> matLists;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)
@@ -27,6 +27,16 @@
        private Integer anfme;//    是    数字型    木箱中铜箔数量
        private String batch;//    (是否分批)    字符串    批次号
        private String specs;//    (是否需要)    字符串    规格
        private List<MatDetlList> matDetlList;//        是    列表    木箱中铜箔信息
    }
    @Data
    public static class MatDetlList{
        private String boxNoDetl;//    是    字符串    铜箔编号(唯一字段)
        private String positionDetl;//    是    字符串    铜箔位置(拆垛时需要)
        private Double weightDetl;//    是    小数型    重量
        private String batchDetl;//    (是否分批)    字符串    批次号
        private String specsDetl;//    (是否需要)    字符串    规格
    }
    public Integer getDevNo$(){
src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
New file
@@ -0,0 +1,41 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
/**
 * Created by vincent on 2020/6/28
 */
@Data
public class TrussCombParam {
    private String barcode;//        字符串    托盘码
    private String palletizingNo;//    是    字符串    码垛位编号
    private String boxType;//    是    字符串    木箱类型
    private String createTime;//        字符串    创建时间
    private List<MatList> matLists;//        是    列表    拆垛货物信息(2箱,尾箱可能1箱)
    @Data
    public static class MatList{
        private String matnr;//    是    字符串    物料编码
        private String maktx;//        字符串    物料名称
        private String boxNo;//    是    字符串    木箱编号(唯一字段,出库依据,出库时按照木箱编号出库)
        private String position;//    是    字符串    木箱位置(拆垛时需要)
        private Double weight;//    是    小数型    重量
        private Integer anfme;//        数字型    木箱中铜箔数量
        private String batch;//        字符串    批次号
        private String specs;//        字符串    规格
        private List<MatDetlList> matDetlList;//        是    列表    木箱中铜箔信息
    }
    @Data
    public static class MatDetlList{
        private String boxNoDetl;//    是    字符串    铜箔编号(唯一字段)
        private String positionDetl;//    是    字符串    铜箔位置(拆垛时需要)
        private Double weightDetl;//    是    小数型    重量
        private String batchDetl;//        字符串    批次号
        private String specsDetl;//        字符串    规格
    }
}
src/main/java/com/zy/asrs/service/MobileService.java
@@ -4,9 +4,7 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.*;
import java.util.Date;
@@ -16,6 +14,8 @@
     * 组托
     */
    void comb(CombParam param, Long userId);
    void trussComb(TrussCombParam param, Long userId);
    void trussComb2(PalletizingCompleteParam param, Long userId);
    /**
     * 上架
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -7,10 +7,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
@@ -81,6 +78,104 @@
    @Override
    @Transactional
    public void trussComb(TrussCombParam param, Long userId) {
//        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
//            throw new CoolException(BaseRes.PARAM);
//        }
    }
    @Override
    @Transactional
    public void trussComb2(PalletizingCompleteParam param, Long userId) {
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
            throw new CoolException("参数:托盘码 barcode为空");
        }else if (Cools.isEmpty(param.getPalletizingNo())){
            throw new CoolException("参数:码垛位编号 palletizingNo为空");
        }else if (Cools.isEmpty(param.getBoxType())){
            throw new CoolException("参数:木箱类型 boxType为空");
        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){
            throw new CoolException("参数:物料明细 matLists为空");
        }
        ArrayList<String> positions = new ArrayList<>();   //木箱位置查重      (orgin)
        ArrayList<String> boxNos = new ArrayList<>();   //木箱唯一编码查重  (batch)
        //判断matLists参数
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
            if (Cools.isEmpty(matList.getMatnr())){
                throw new CoolException("参数:物料编码 matnr为空");
            }else if (Cools.isEmpty(matList.getPosition())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBoxNo())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空");
            }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空");
            }
            if (!positions.contains(matList.getPosition())){
                positions.add(matList.getPosition());
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition());
            }
            if (!boxNos.contains(matList.getBoxNo())){
                boxNos.add(matList.getBoxNo());
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复");
            }
        }
//        BasDevp basDevp = basDevpService.selectById(Integer.parseInt(param.getDevNo$()));
//        if (Cools.isEmpty(basDevp)){
//            throw new CoolException("参数:码垛位编号 palletizingNo="+param.getPalletizingNo()+"不存在");
//        }
//        if (Cools.isEmpty(basDevp.getAutoing()) || !basDevp.getAutoing().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是自动状态");
//        }
//        if (Cools.isEmpty(basDevp.getLoading()) || !basDevp.getLoading().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是有物状态");
//        }
//        if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是能入状态");
//        }
        if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0
                || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0
                || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){
            throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托");
        }
        Date now = new Date();
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(matList.getMatnr() + "商品档案不存在");
            }
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setModel(matList.getBatch());     //批次
            waitPakin.setSpecs(matList.getSpecs());     //规格
            waitPakin.setBatch(matList.getBoxNo());       //木箱编码
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setIoStatus("N");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme().doubleValue());  // 木箱中铜箔数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
            }
        }
    }
    @Override
    @Transactional
    public void comb(CombParam param, Long userId) {
        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
            throw new CoolException(BaseRes.PARAM);