自动化立体仓库 - WMS系统
#
zjj
2025-04-02 59f638dc751a291c67ce271304c96ccde6ddaab3
#
1个文件已修改
2个文件已添加
215 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
New file
@@ -0,0 +1,126 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.LocMoveAllHandler;
import com.zy.asrs.utils.Utils;
import com.zy.common.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Iterator;
import java.util.List;
/**
 * Created by vincent on 2020/7/7
 */
@Slf4j
@Component
public class LocMoveAllScheduler {
    @Value("${loc-move.enable}")
    private boolean enable;
    @Value("${loc-move.crn1}")
    private boolean crn1;
    @Value("${loc-move.crn2}")
    private boolean crn2;
    @Value("${loc-move.crn3}")
    private boolean crn3;
    @Value("${loc-move.crn4}")
    private boolean crn4;
    @Autowired
    private LocMoveAllHandler locMoveAllHandler;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
    private SlaveProperties slaveProperties;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        if (!enable) return;
        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
        if (basCrnps.isEmpty()){
            return;
        }
        Iterator<BasCrnp> iterator = basCrnps.iterator();
        while (iterator.hasNext()){
            BasCrnp basCrnp = iterator.next();
            if (basCrnp.getCrnNo() == 1 && !crn1){
                iterator.remove();
            }
            if (basCrnp.getCrnNo() == 2 && !crn2){
                iterator.remove();
            }
            if (basCrnp.getCrnNo() == 3 && !crn3){
                iterator.remove();
            }
            if (basCrnp.getCrnNo() == 4 && !crn4){
                iterator.remove();
            }
        }
        if (basCrnps.isEmpty()){
            return;
        }
        for (BasCrnp basCrnp:basCrnps){
            if (basCrnp.getCrnSts()!=3) continue;
            if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) continue;
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no",basCrnp.getCrnNo()).eq("io_type",11));
            if (Cools.isEmpty(wrkMasts) || wrkMasts.size()==0) {
                LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",basCrnp.getCrnNo()).orderBy("appe_time",true));//空板所在
                if (Cools.isEmpty(locMastStart)){
                    continue;
                }
                if (!Utils.isShallowLoc(slaveProperties, locMastStart.getLocNo())){
                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, locMastStart.getLocNo());
                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
                    if (!locNo.getLocSts().equals("O")){
                        locMastStart = locNo;
                    }
                }
                LocMast locMastEnd = locMastService.selectOne(new EntityWrapper<LocMast>()
                        .eq("loc_sts","O")
                        .eq("crn_no",basCrnp.getCrnNo())
                        .eq("loc_type1",locMastStart.getLocType1())
                        .ne("modi_user",66)
                        .orderBy("row1",true));//目标
                if (Cools.isEmpty(locMastEnd)){
                    continue;
                }
                if (!Utils.isShallowLoc(slaveProperties, locMastEnd.getLocNo())){
                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, locMastEnd.getLocNo());
                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
                    if (locNo.getLocSts().equals("O")){
                    }else {
                        locMastEnd.setModiUser(66L);
                        locMastService.updateById(locMastEnd);
                        continue;
                    }
                }
//                if (Cools.isEmpty(locMastStart) || Cools.isEmpty(locMastEnd)){
                ReturnT<String> result = locMoveAllHandler.start(locMastStart,locMastEnd,basCrnp.getCrnNo());
                if (!result.isSuccess()) {
                    log.error("处理失败");
                }
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java
New file
@@ -0,0 +1,80 @@
package com.zy.asrs.task.handler;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
/**
 * Created by vincent on 2020/7/6
 */
@Slf4j
@Service
public class LocMoveAllHandler extends AbstractHandler<String> {
    @Autowired
    private WorkService workService;
    @Autowired
    private LocMastService locMastService;
    private final Integer BAY = 28;//YINGTAN
    @Transactional
    public ReturnT<String> start(LocMast locMastStart, LocMast locMastEnd, Integer crnNo) {
        try {
            LocMast locMastEndNew = null;
            Integer row1 = locMastStart.getRow1();
            Integer row2 = 0;
            Integer bay1 = locMastStart.getBay1();
            Integer lev1 = locMastStart.getLev1();
            if (row1==crnNo*4){
                row1 = crnNo*4-3;
                row2 = row1+1;
            }else {
                row1=crnNo*4;
                row2 = row1-1;
            }
            Integer signInt = 0;
            while (Cools.isEmpty(locMastEndNew) && lev1<9 && signInt<100){
                signInt++;
                bay1 = BAY+1-bay1;
                if ((bay1<BAY && bay1>0) || (bay1.equals(BAY) && lev1>3)){
                }else {
                    bay1=1;
                    lev1++;
                }
                locMastEndNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("row1",row1).eq("bay1",bay1).eq("lev1",lev1).ne("modi_user",66));
                LocMast locMastEndNew2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("row1",row2).eq("bay1",bay1).eq("lev1",lev1).ne("modi_user",66));
                if (!Cools.isEmpty(locMastEndNew) && !Cools.isEmpty(locMastEndNew2)){
                    locMastEnd = locMastEndNew;
                }
                if ((bay1<BAY && bay1>0)){
                    bay1++;
                }
                if (signInt==100){
                    bay1=1;
                    lev1++;
                    signInt=0;
                }
            }
            workService.locMove(locMastStart.getLocNo(), locMastEnd.getLocNo(), 66L);
        } catch (Exception e) {
            log.error("fail", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
}
src/main/resources/application.yml
@@ -105,4 +105,11 @@
  url: ""
  taskCreatePath: ""
shuttleWcs:
  url: "10.0.100.140:8088/wcs"
  url: "10.0.100.140:8088/wcs"
loc-move:
  enable: true
  crn1: false
  crn2: false
  crn3: false
  crn4: false