diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java index 3ddad27..d0c43f5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/FIFORuleHandler.java @@ -46,7 +46,7 @@ public class FIFORuleHandler extends Decisioner i form.setIs_finish("1"); form.setAssign_qty(form.getQty()); iPmFormDataService.updateById(form); - //更新被合单单据 - if(ObjectUtil.isNotEmpty(form.getMerge_codes())){ - String[] codes = form.getMerge_codes().split(","); - pmFormDataMapper.update(null,new LambdaUpdateWrapper<>(PmFormData.class) - .set(PmFormData::getStatus,IOSEnum.BILL_STATUS.code("完成")) - .set(PmFormData::getIs_finish,"1") - .in(PmFormData::getCode,codes) - ); - } } // 查看明细是否全部完成 int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java index 459dd4b..d485060 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RetrunServiceImpl.java @@ -34,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -96,48 +97,147 @@ public class RetrunServiceImpl extends ServiceImpl i @Override public void upload(JSONObject whereJson) { List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); - // 根据主表id查询所有分配明细 - List iosDisList = ioStorInvDisMapper.selectList( - new QueryWrapper().lambda() - .in(IOStorInvDis::getIostorinv_id, rows.stream() - .map(row -> row.getString("iostorinv_id")) - .collect(Collectors.toList()) - ) - ); - for(IOStorInvDis disDao : iosDisList) { - IOStorInv mst = ioStorInvMapper.selectById(disDao.getIostorinv_id()); - IOStorInvDtl dtl = ioStorInvDtlMapper.selectById(disDao.getIostorinvdtl_id()); - JSONObject param = new JSONObject(); - //入库 - if("0".equals(mst.getIo_type())){ - // 载具编码 - param.put("pallet_sn", disDao.getStoragevehicle_code()); - param.put("instor_time", mst.getConfirm_time()); - wmsToErpService.instorinfoToErp(param); - }else {//出 - //如果是用料出库,则需回传 - if(ObjectUtil.isNotEmpty(dtl.getSource_bill_code())){ - //判断用料清单是否合单 - PmFormData pmform = pmFormDataMapper.selectById(dtl.getSource_billdtl_id()); - if("0".equals(pmform.getNew_merge_flag())){ - // 载具编码 - param.put("pallet_sn", disDao.getStoragevehicle_code()); - // 数量 - param.put("qty", disDao.getReal_qty()); - // 单据号 - param.put("order_code", dtl.getSource_bill_code()); - // 业务类型 - param.put("order_type", dtl.getSource_bill_type()); - // 业务类型 - param.put("outstor_time", mst.getConfirm_time()); - }else{//合单 + for(int i=0;i iosDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getIostorinv_id, row.getString("iostorinv_id"))); + for (IOStorInvDis disDao : iosDisList) { + JSONObject param = new JSONObject(); + // 载具编码 + param.put("pallet_sn", disDao.getStoragevehicle_code()); + param.put("instor_time", mst.getConfirm_time()); + wmsToErpService.instorinfoToErp(param); + } + }else{ + //按明细回传 + List dtls = ioStorInvDtlMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, row.getString("iostorinv_id"))); + + for (IOStorInvDtl dtlDao : dtls) { + //如果是用料出库,则需回传 + if (ObjectUtil.isNotEmpty(dtlDao.getSource_bill_code())) { + //判断用料清单是否合单 + PmFormData pmform = pmFormDataMapper.selectById(dtlDao.getSource_billdtl_id()); + if ("0".equals(pmform.getNew_merge_flag())) { + List iosDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getIostorinv_id, row.getString("iostorinv_id"))); + for (IOStorInvDis disDao : iosDisList) { + JSONObject param = new JSONObject(); + + // 载具编码 + param.put("pallet_sn", disDao.getStoragevehicle_code()); + // 数量 + param.put("qty", disDao.getReal_qty()); + // 单据号 + param.put("order_code", dtlDao.getSource_bill_code()); + // 业务类型 + param.put("order_type", dtlDao.getSource_bill_type()); + // 业务类型 + param.put("outstor_time", mst.getConfirm_time()); + wmsToErpService.outstorinfoToErp(param); + + BigDecimal total_qty = pmform.getTotal_qty(); + total_qty.add(disDao.getReal_qty()); + //更新分配数量 + pmform.setTotal_qty(total_qty); + if(total_qty.compareTo(pmform.getQty()) >=0){ + //更新订单是否完成 + pmform.setIs_finish("1"); + pmFormDataMapper.updateById(pmform); + } + } + } else {//合单 + String[] codes = pmform.getMerge_codes().split(","); + List iosDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getIostorinv_id, row.getString("iostorinv_id"))); + for (IOStorInvDis disDao : iosDisList) { + //查询未完成分配的订单 + List pmformList = pmFormDataMapper.selectList( new QueryWrapper().lambda() + .in(PmFormData::getCode, codes) + .eq(PmFormData::getIs_finish,"0") + ); + //明细数量 + BigDecimal real_qty = disDao.getReal_qty(); + for (PmFormData formDao : pmformList) { + JSONObject param = new JSONObject(); + //剩余数量 + BigDecimal un_qty = formDao.getQty().subtract(formDao.getTotal_qty()); + //订单数刚好等于明细数 + if(real_qty.compareTo(un_qty) == 0){ + //更新分配数量 + formDao.setTotal_qty(formDao.getQty()); + //更新订单是否完成 + formDao.setIs_finish("1"); + pmFormDataMapper.updateById(formDao); + + // 载具编码 + param.put("pallet_sn", disDao.getStoragevehicle_code()); + // 数量 + param.put("qty", real_qty); + // 单据号 + param.put("order_code", formDao.getCode()); + // 业务类型 + param.put("order_type", formDao.getForm_type()); + // 业务类型 + param.put("outstor_time", mst.getConfirm_time()); + wmsToErpService.outstorinfoToErp(param); + break; + }else //明细数大于订单数 + if(real_qty.compareTo(un_qty) > 0){ + //更新分配数量 + formDao.setTotal_qty(formDao.getQty()); + //更新订单是否完成 + formDao.setIs_finish("1"); + pmFormDataMapper.updateById(formDao); + + // 载具编码 + param.put("pallet_sn", disDao.getStoragevehicle_code()); + // 数量 + param.put("qty", un_qty); + // 单据号 + param.put("order_code", formDao.getCode()); + // 业务类型 + param.put("order_type", formDao.getForm_type()); + // 业务类型 + param.put("outstor_time", mst.getConfirm_time()); + wmsToErpService.outstorinfoToErp(param); + //更新明细可分配数 + real_qty = real_qty.subtract(un_qty); + }else //明细数小于订单数 + if(real_qty.compareTo(un_qty) < 0){ + //更新分配数量 + formDao.setTotal_qty(formDao.getTotal_qty().add(real_qty)); + pmFormDataMapper.updateById(formDao); + + // 载具编码 + param.put("pallet_sn", disDao.getStoragevehicle_code()); + // 数量 + param.put("qty", real_qty); + // 单据号 + param.put("order_code", formDao.getCode()); + // 业务类型 + param.put("order_type", formDao.getForm_type()); + // 业务类型 + param.put("outstor_time", mst.getConfirm_time()); + wmsToErpService.outstorinfoToErp(param); + break; + } + } + } + } } - wmsToErpService.outstorinfoToErp(param); } } } - // 更新主表 this.update( new UpdateWrapper().lambda()