java面向对象那个编程:类的属性及方法被调用

oneBottles.forEach(bottle -> {
    //原药的单元识别码
    ProductWaterIdentityCode identityCode = identityCodeBo.getIdentityCode();
    setOriginalBottleIdentityCode(bottle, apply, identityCode);
});

public class ProductWaterIdentityCodeBo {

    /** 毫秒内最大序列 9999 */
    private static final long SEQUENCE_MASK = 9999L;

    /** 同一托盘最大包装数 99 */
    private static final int MAX_PACKAGE_COUNT = 99;

    /** 最大托盘数 */
    public static final int MAX_PLATE_COUNT = 999;

    private String registerType;

    private String registerIdentityCode;

    private String produceType;

    private String specificationNumber;

    private String specificationLineNumber;

    private String dateTimeCode;

    private String plateCode;

    private String packageCode;

    /** 一级码数量, 决定托盘包装数量 */
    private int packageCount;

    /** 托盘数 */
    private int plateNumber = 0;

    /** 包装数 */
    private int packageNumber = 0;

    private int topCodeNumber = 0;

    public ProductWaterIdentityCode getIdentityCode() {

        nextCodePlus();

        ProductWaterIdentityCode identityCode = new ProductWaterIdentityCode();

        BeanUtils.copyProperties(this, identityCode);

        identityCode.setPlateCode(getPlateCode());
        identityCode.setPackageCode(getPackageCode());

        String randomNumber = getRandomNumber();
        identityCode.setRandomNumber(randomNumber);

        return identityCode;
    }

    public ProductWaterIdentityCode getTopIdentityCode() {

        ProductWaterIdentityCode identityCode = new ProductWaterIdentityCode();

        BeanUtils.copyProperties(this, identityCode);

        topCodeNumber++;
        identityCode.setPlateCode(formatPlateCode(topCodeNumber));
        identityCode.setPackageCode(formatPackageCode(0));

        String randomNumber = getRandomNumber();
        identityCode.setRandomNumber(randomNumber);

        return identityCode;
    }

    /**
     * 获取下一包装号, 如果超过包装规格就重新计数, 同时托盘号+1
     */
    private void nextCodePlus() {

        if (plateNumber == 0) {
            plateNumber = 1;
        }

        packageNumber++;
        if (isMaxPackage()) {
            packageNumber = 1;
            plateNumber++;
            checkIsMaxPlate();
        }
    }

    private String getPlateCode() {

        return formatPlateCode(plateNumber);
    }

    private String formatPlateCode(int plateNum) {

        return String.format("%03d", plateNum);
    }

    private void checkIsMaxPlate() {
        if (plateNumber > MAX_PLATE_COUNT) {
            throw new ServiceException("托盘数超过三位数");
        }
    }

    private String getPackageCode() {

        return formatPackageCode(packageNumber);
    }

    private String formatPackageCode(int packageNum) {

        return String.format("%02d", packageNum);
    }

    private boolean isMaxPackage() {
        return packageNumber > packageCount;
    }

    /**
     * 8位随机数
     *
     * @return
     */
    private String getRandomNumber() {

        return TextUtils.getRandNum(7);
    }

    public void setPackageCount(int packageCount) {

        if (packageCount > MAX_PACKAGE_COUNT) {
            throw new ServiceException("产品包装规格大于两位数");
        }

        this.packageCount = packageCount;
    }

}
 

整个类作为一个方法被调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值