自动化立体仓库 - WMS系统
#
zjj
2023-12-26 79f209a5ec9236adfd4576285d50a7b860da7230
#
8个文件已修改
121 ■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocMastService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -35,6 +35,5 @@
    List<LocMast> selectNodeEByLev(Integer lev);
    LocMast selectByLoc(String locNo);
}
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -49,4 +49,6 @@
    List<LocMast> selectByLocNo(List<String> locNo);
    List<LocMast> selectNodeELocByLev(Integer lev);
    LocMast selectByLoc(String loc);
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -79,6 +79,10 @@
    }
    @Override
    public LocMast selectByLoc(String locNo) {
        return this.baseMapper.selectByLoc(locNo);
    }
    @Override
    public List<LocMast> selectByLocNo(List<String> locNo) {
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -490,9 +490,6 @@
    @Transactional
    public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
        WrkMast wrkMast = new WrkMast();
        if (Cools.isEmpty(param.getOutSite())) {
            throw new CoolException("站点不存在");
        }
        for (String locNo : param.getLocNos()) {
            // 获取工作号
            int workNo = commonService.getWorkNo(0);
@@ -504,7 +501,6 @@
            // 获取源站
            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", 110)
                    .eq("stn_no", param.getOutSite())
                    .eq("crn_no", locMast.getCrnNo());
            StaDesc staDesc = staDescService.selectOne(wrapper);
            Integer sourceStaNo = staDesc.getCrnStn();
@@ -520,7 +516,7 @@
            wrkMast.setIoType(110); // 入出库状态: 110.空板出库
            wrkMast.setIoPri(10D);
            wrkMast.setSourceStaNo(sourceStaNo); // 源站
            wrkMast.setStaNo(param.getOutSite()); // 目标站
            wrkMast.setStaNo(1007); // 目标站
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceLocNo(locNo); // 源库位
            wrkMast.setFullPlt("N"); // 满板:Y
src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,12 +6,59 @@
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
 * Created by vincent on 2020/8/27
 */
public class Utils {
    public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(1);add(2);
    }};
    public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(3);add(4);
    }};
    public static final List<Integer> FIRST_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{
        add(5);add(6);
    }};
    public static final List<Integer> SECOND_GROUP_ROW_LIST2 = new ArrayList<Integer>() {{
        add(7);add(8);
    }};
    public static List<String> getGroupLocNo(String locNo, Boolean pakIn) {
        int row = getRow(locNo);
        List<String> result = new ArrayList<>();
        if (FIRST_GROUP_ROW_LIST.contains(row)) {
            for (Integer groupRow : FIRST_GROUP_ROW_LIST) {
                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
            }
        } else if (SECOND_GROUP_ROW_LIST.contains(row)) {
            List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST.size()]);
            Collections.copy(clone, SECOND_GROUP_ROW_LIST);
            Collections.reverse(clone);
            for (Integer integer : clone) {
                result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
            }
        }else if (FIRST_GROUP_ROW_LIST2.contains(row)) {
            for (Integer groupRow : FIRST_GROUP_ROW_LIST2) {
                result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
            }
        } else if (SECOND_GROUP_ROW_LIST2.contains(row)) {
            List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST2.size()]);
            Collections.copy(clone, SECOND_GROUP_ROW_LIST2);
            Collections.reverse(clone);
            for (Integer integer : clone) {
                result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
            }
        }
        if (!pakIn) {
            //出库,反转数据
            Collections.reverse(result);
        }
        return result;
    }
    private static final DecimalFormat fmt = new DecimalFormat("##0.00");
src/main/java/com/zy/common/service/CommonService.java
@@ -142,7 +142,11 @@
        // 靠近摆放规则 --- 空托
        if (staDescId == 10) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo));
            if (Cools.isEmpty(staDesc)){
                throw new CoolException("空托入库站点路径不存在");
            }
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow).eq("crn_no",staDesc.getCrnNo()));
            if (locMasts.size() > 0) {
                for (LocMast loc : locMasts) {
                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
@@ -176,10 +180,10 @@
                    throw new CoolException("检索库位失败,请联系管理员");
                }
                Integer crnNo1 = shelves.get(curRow);
                crnNo1 = crnNo1 + divides*1;
//                crnNo1 = crnNo1 + divides*1;
                if (basCrnpService.checkSiteError(crnNo1, true)) {
                    crnNo = crnNo1;
                    curRow = curRow + divides*4;
//                    curRow = curRow + divides*4;
                    break;
                }
            }
src/main/java/com/zy/common/web/WcsController.java
@@ -8,6 +8,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
@@ -143,17 +144,42 @@
    @PostMapping("auto/emptyOut/v1")
    @ResponseBody
    public R autoEmptyOut(){
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                .eq("loc_sts", "D"));
        if (Cools.isEmpty(locMast)) {
    public R autoEmptyOut(@RequestParam("crnNo") Integer crnNo) {
        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                .eq("loc_sts", "D")
                .eq("crn_no", crnNo)
                .orderBy("lev1,bay1,row1"));
        if (locMasts.isEmpty()) {
            return R.error("库存没有空板");
        }
        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
        emptyPlateOutParam.setOutSite(12);
        emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}});
        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
        return R.ok(!Cools.isEmpty(wrkMast)? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败"));
        for (LocMast locMast : locMasts) {
            LocMast locMast0 = null;
            List<String> outerLocNo = Utils.getGroupLocNo(locMast.getLocNo(), false);
            for (String loc : outerLocNo) {
                LocMast locMast1 = locMastService.selectByLoc(loc);
                if (locMast1 == null) {
                    continue;
                }
                if (locMast1.getLocSts().equals("D")) {
                    locMast0 = locMast1;
                    break;
                }
            }
            if (locMast0 == null) {
                continue;
            }
            EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
            ArrayList<String> locNos = new ArrayList<>();
            locNos.add(locMast0.getLocNo());
            emptyPlateOutParam.setLocNos(locNos);
            WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
            return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("自动空托出库成功,工作号:" + wrkMast.getWrkNo()) : R.error("生成自动空托出库失败"));
        }
        return R.error("生成自动空托出库失败");
    }
    /**
src/main/resources/mapper/LocMastMapper.xml
@@ -98,7 +98,10 @@
    <select id="selectNodeEByLev" resultMap="BaseResultMap">
        SELECT * FROM asr_node_loc_DT_E_view WHERE lev1 = #{lev}
    </select>
    <select id="selectByLoc" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where loc_no = #{locNo}
    </select>
</mapper>