自动化立体仓库 - WMS系统
luxiaotao1123
2020-07-29 de67c95651efbf649704450e03fdb2d16c2e6bcc
#当前本版十分完美、冻结
4个文件已修改
47 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.LocDetl;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
@@ -23,4 +24,7 @@
    @Update("update asr_loc_detl set loc_no = #{newLocNo}, modi_time=getDate() where loc_no = #{oldLocNo}")
    int updateLocNo(String newLocNo, String oldLocNo);
    @Select("SELECT wml.loc_no FROM asr_wrk_mast_log wml LEFT JOIN asr_wrk_detl_log wdl ON wml.wrk_no = wdl.wrk_no LEFT JOIN asr_loc_mast lm ON wml.loc_no = lm.loc_no WHERE (1 = 1 AND wdl.matnr = 'X004073XX' AND (wml.io_type = 1 OR wml.io_type = 11) AND wml.wrk_sts = 5 AND DateDiff(dd, wml.modi_time, getdate()) = 0 AND lm.loc_sts = 'F') ORDER BY wml.modi_time ASC")
    List<String> selectSameDetlToday(String matnr);
}
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.LocDetl;
import java.util.List;
public interface LocDetlService extends IService<LocDetl> {
    Page<LocDetl> getStockOut(Page<LocDetl> page);
@@ -14,4 +16,12 @@
    boolean updateAnfme(Double anfme, String locNo, String matnr);
    boolean updateLocNo(String newLocNo, String oldLocNo);
    /**
     * 获取当天相同规格货物的深库位号
     * @param matnr 物料号
     * @return locNo 库位号
     */
    List<String> getSameDetlToday(String matnr);
}
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -8,6 +8,8 @@
import com.zy.asrs.service.LocDetlService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("locDetlService")
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
@@ -33,4 +35,9 @@
        return baseMapper.updateLocNo(newLocNo, oldLocNo) > 0;
    }
    @Override
    public List<String> getSameDetlToday(String matnr) {
        return this.baseMapper.selectSameDetlToday(matnr);
    }
}
src/main/java/com/zy/common/service/CommonService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -34,6 +35,8 @@
    private BasDevpService basDevpService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    /**
     * 生成工作号
@@ -96,6 +99,21 @@
            int eRow = rowLastno.geteRow();
            int crn_qty = rowLastno.getCrnQty();
            int rowCount = eRow - sRow + 1;
            // 同一天同规格货物靠近摆法规则 todo
            List<String> locNos = locDetlService.getSameDetlToday("X004073XX");
            for (String locNo : locNos) {
                // 获取排
                int row = Integer.parseInt(locNo.substring(0, 2));
                // 判断是否为深库位
                double remainder = Arith.remainder(row, rowCount / crn_qty);
                if (remainder != 0 && remainder != 1) {
                    continue;
                }
                // 得到当前库位的外围库位
                System.out.println();
            }
            // 获取目标站所在货架排号
            Shelves shelves = new Shelves(rowCount, crn_qty);
            curRow = shelves.start(curRow);
@@ -143,8 +161,16 @@
            } else {
                throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
            }
        } else {
            throw new CoolException(rowLastno.getWhsType()+"号库位排号分配规则不可用");
        }
        return startupDto;
    }
    public static void main(String[] args) {
        System.out.println(Arith.remainder(1, 4));
        System.out.println("0200201".substring(0, 2));
    }
}