package com.zy.common.service; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.RowLastno; import com.zy.asrs.entity.WrkLastno; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.RowLastnoService; import com.zy.asrs.service.WrkLastnoService; import com.zy.asrs.service.WrkMastService; import com.zy.common.model.Shelves; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 双深式货架核心功能 * Created by vincent on 2020/6/11 */ @Service public class DoubleDeepService { @Autowired private WrkMastService wrkMastService; @Autowired private WrkLastnoService wrkLastnoService; @Autowired private RowLastnoService rowLastnoService; /** * 生成工作号 * @param wrkMk 0:入出库 ; 1:其他 * @return workNo(工作号) */ public int getWorkNo(Integer wrkMk) { WrkLastno wrkLastno = wrkLastnoService.selectById(wrkMk); if (Cools.isEmpty(wrkLastno)) { throw new CoolException("数据异常,请联系管理员"); } int workNo = 0; // 入出库类型 if (wrkLastno.getWrkMk() == 0) { workNo = wrkLastno.getWrkNo(); int sNo = wrkLastno.getSNo(); int eNo = wrkLastno.getENo(); workNo = workNo>=eNo ? sNo : workNo+1; while (true) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (null != wrkMast) { workNo = workNo>=eNo ? sNo : workNo+1; } else { break; } } if (workNo > 0){ // todo wrkLastno.setWrkNo(workNo); wrkLastnoService.updateById(wrkLastno); } } return workNo; } /** * 检索库位号 * @param whsType 类型 1:双深式货架 * @return locNo 检索到的库位号 */ public String getLocNo(Integer whsType) { RowLastno rowLastno = rowLastnoService.selectById(whsType); if (Cools.isEmpty(rowLastno)) { throw new CoolException("数据异常,请联系管理员"); } String locNo = null; if (rowLastno.getWhsType() == 1){ int curRow = rowLastno.getCurrentRow(); int sRow = rowLastno.getsRow(); int eRow = rowLastno.geteRow(); int crn_qty = rowLastno.getCrnQty(); Shelves shelves = new Shelves(8, crn_qty); curRow = shelves.start(curRow); if (curRow != 0) { rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); } } return locNo; } }