解决 增强for循环的对象遍历和属性接收 的问题

1、案例:

public void doBlanking(List<String> ids) {
		// 获取订单下未发布的工单
		String woHql = "SELECT a FROM UmppWorkOrder a "
				+ "WHERE a.state = 0 AND a.isDelete = 0 AND a.qty != 0 AND a.order.id in :ids "
				+ "order by a.order.id";
		List<UmppWorkOrder> woList = this.dao.createQuery(woHql)
				.setParameterList("ids", ids).list();
        // 要冲减的物料编码
			List<String> mrlCodeList = new ArrayList<String>();
			for (UmppWorkOrder umppWorkOrder : woList) {
				mrlCodeList.add(umppWorkOrder.getProduCode());
			}
        // 开始冲减
			for (UmppWorkOrder wo : woList) {
				// 计划数量
				BigDecimal qty = wo.getQty();
				List<UmppExtendRecord> uers = mrlCode_uers_map.get(wo
						.getProduCode());
				if (uers != null) {
					for (int i = uers.size() - 1; i >= 0; i--) {
						UmppExtendRecord er = uers.get(i);
						if (qty.intValue() == 0) {
							break;
						}
						if (!extendRecordList.contains(er)) {
							extendRecordList.add(er);
						}
						// UmmdDeliveryTaskDetail taskDetail = new
						// UmmdDeliveryTaskDetail();
						// 余数大于扣减数
						if (er.getRemainQty().compareTo(qty) >= 0) {
							er.setRemainQty(er.getRemainQty().subtract(qty));
							// 保存匹配表
							UmppExtendTrx trx = new UmppExtendTrx();
							trx.setRecordGid(er.getId());
							trx.setQty(qty);
							trx.setRelOrderCode(wo.getOrderCode());
							trx.setRelWorkOrderCode(wo.getCode());
							trx.setSource(ThtConstants.SOURCE_TYPE_YULIAO);
							trx.setWorkCenterGid(wo.getWorkCenterId());
							trx.setOperateDate(new Date());
							trx.setOperatePerson(userName);
							trxList.add(trx);
							qty = new BigDecimal(0);
							if (er.getRemainQty().intValue() == 0) {
								uers.remove(i);
							}
							break;
						} else {
							qty = qty.subtract(er.getRemainQty());
							// 保存
							UmppExtendTrx trx = new UmppExtendTrx();
							trx.setRecordGid(er.getId());
							trx.setQty(er.getRemainQty());
							trx.setRelOrderCode(wo.getOrderCode());
							trx.setRelWorkOrderCode(wo.getCode());
							trx.setSource(ThtConstants.SOURCE_TYPE_YULIAO);
							trx.setWorkCenterGid(wo.getWorkCenterId());
							trx.setOperateDate(new Date());
							trx.setOperatePerson(userName);
							trxList.add(trx);
							er.setRemainQty(er.getRemainQty().subtract(
									er.getRemainQty()));
							uers.remove(i);
						}
					}
				}
				if (wo.getQty().compareTo(qty) > 0) {
					wo.setQty(qty);
					// 计划生产数量冲减到0则工单状态变为完工
					if (qty.intValue() == 0) {
						wo.setProState(UmppConstants.PRO_STATE_FINISHED);
						wo.setState(UmppConstants.WO_STATE_PUBLISH);
					}
					workOrderList.add(wo);
				}
			}
}

2、解析:

1)

List<UmppWorkOrder> woList = this.dao.createQuery(woHql)
                .setParameterList("ids", ids).list();

List<String> mrlCodeList = new ArrayList<String>();
            for (UmppWorkOrder umppWorkOrder1 : woList) {
                mrlCodeList.add(umppWorkOrder.getProduCode());
            }
增强for循环,umppWorkOrder1变量类型和woList数组存放类型一样;

2)

变量mrlCodeList接收的变量类型和umppWorkOrder.getProduCode()一样;

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值