自动化立体仓库 - WMS系统
18516761980
2022-06-16 8b52cb78c70877c9d8689bfcdb49461995cf939a
Merge branch 'master' of https://gitee.com/luxiaotao1123/zy-asrs into hylyasrs

# Conflicts:
# src/main/java/com/zy/asrs/controller/MatCodeController.java
# src/main/java/com/zy/asrs/utils/VersionUtils.java
# src/main/java/com/zy/common/utils/excel/matcode/MatCodeExcel.java
# src/main/java/com/zy/common/utils/excel/matcode/MatCodeExcelListener.java
# src/main/resources/application.yml
1个文件已添加
4个文件已修改
146 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | 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/task/CheckDeepScheduler.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -28,4 +28,5 @@
        "and (loc_type2 is null or loc_type2 = #{locType2}) and (loc_type3 is null or loc_type3 = #{locType3}) ")
    Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("locType2") Short locType2, @Param("locType3") Short locType3, @Param("crnNo") Integer crnNo);
    List<LocMast> queryShallowLocFMast();
}
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -47,4 +47,6 @@
     * @return
     */
    LocMast queryFreeLocMastExceptFirst(Integer row, Short locType1, Short locType2, Short locType3);
    public List<LocMast> queryShallowLocFMast();
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -58,4 +58,8 @@
        return this.baseMapper.queryFreeLocMastExceptFirst(row, locType1, locType2, locType3);
    }
    @Override
    public List<LocMast> queryShallowLocFMast() {
        return this.baseMapper.queryShallowLocFMast();
    }
}
src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
New file
@@ -0,0 +1,121 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
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.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Component
@Slf4j
public class CheckDeepScheduler {
    @Value("${wcs-slave.doubleDeep}")
    private boolean confirmDeep;
    @Value("${wcs-slave.doubleLocs}")
    private String deepLocs;
    @Value("${wcs-slave.shallowLocs}")
    private String shallowLocs;
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WorkService workService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private SlaveProperties slaveProperties;
    /**
     * 遍历库存中,浅库位状态F/D,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去
     */
    @Scheduled(cron = "0/30 * * * * ?")
    private void locMoveToDeep(){
        if (!confirmDeep) return;
        List<LocMast> locMasts = locMastService.queryShallowLocFMast();
        if (null == locMasts) return;
        for (LocMast sourceLoc : locMasts){
            String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
            LocMast destLoc = locMastService.selectById(deep);
            if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
                //查找源库位是否有转移任务,如果有,不生成库位移转
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                        .eq("source_loc_no", sourceLoc.getLocNo()));
                if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
                        (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
                    workService.locMove(sourceLoc.getLocNo(), deep, 1L);
                }
            }
        }
    }
    /**
     *遍历库存中,深浅库位状态都为F,物料不相同,或者浅库位入库日期比深库位早的库位,做库位移转移到新的深库位中去
     * 0点到5点之间执行,每次只执行一笔
     */
//    @Scheduled(cron = "0/90 * * * * ?")
    private void LocMoveToNewLoc() throws ParseException {
//        if (!confirmDeep) return;
//
//        for (int crnNo = 1; crnNo < 4; crnNo++){
//            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
//                    .eq("crn_no",crnNo)
//                    .last(" and wrk_sts in (2,3,4,11,12)")
//            );
//            if (wrkMasts.size() > 0) continue;
//            List<LocMast> locMasts = locMastService.queryNeedMoveShallLoc(crnNo);
//            for (LocMast locMast : locMasts) {
//                LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo);
//                if(!Cools.isEmpty(targetLoc)) {
//                    workService.locMove(locMast.getLocNo(), targetLoc.getLocNo(), 1L);
//                }
//                break;
//            }
//        }
    }
    /**
     * 将深库位转为对应浅库位
     * @param deep
     * @return
     */
    private String convertShallow(String deep){
        String shallLoc = "";
        Integer mastInt = Integer.parseInt(deep.substring(0, 2));
        if (mastInt % 2 == 0){
            mastInt -= 1;
        }else if (mastInt % 2 == 1){
            mastInt += 1;
        }
        if (mastInt <10){
            shallLoc = "0" + mastInt+ deep.substring(2,7);
        }else {
            shallLoc = mastInt+ deep.substring(2,7);
        }
        return shallLoc;
    }
}
src/main/resources/mapper/LocMastMapper.xml
@@ -90,4 +90,22 @@
        order by loc_sts desc ,lev1 asc,bay1 asc
    </select>
    <select id="queryShallowLocFMast" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where 1=1
        and loc_no in (
         select
         concat(
         (
         case
         when left(loc_no, 2) = '01' then '02'
         end)
         , right(loc_no, 5)) as shallowLocNo
         from asr_loc_mast
         where 1=1
         and loc_sts = 'O'
         and row1 in (1,4,5,8,9,12,13,16,17,20)
        )
        and (loc_sts = 'F' or loc_sts = 'D')
    </select>
</mapper>