|
|
@ -2,6 +2,7 @@ package com.win.module.wms.service.customerreturnRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
@ -65,6 +66,7 @@ import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
@ -147,7 +149,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
this.validateCustomerreturnRequestMainCreate(mainDO); |
|
|
|
List<CustomerreturnRequestDetailDO> subDOList = CustomerreturnRequestMainConvert.INSTANCE.convertList03(createReqVO.getSubList()); |
|
|
|
for (CustomerreturnRequestDetailDO detailDO : subDOList) { |
|
|
|
this.validateCustomerreturnRequestDetailCreate(mainDO,detailDO); |
|
|
|
this.validateCustomerreturnRequestDetailCreate(mainDO, detailDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); |
|
|
|
mainDO.setNumber(number); |
|
|
@ -155,11 +157,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
requestStatusState.newObject(mainDO.getAutoCommit(), mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, subDOList); |
|
|
|
} |
|
|
|
customerreturnRequestMainMapper.insert(mainDO); |
|
|
|
for (CustomerreturnRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setId(null); |
|
|
|
detailDO.setMasterId(mainDO.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
} |
|
|
@ -177,7 +180,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
CustomerreturnRequestMainDO updateObj = CustomerreturnRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
this.validateCustomerreturnRequestMainCreate(updateObj); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { |
|
|
|
this.generateJob(updateObj, customerreturnRequestDetailMapper.selectList(updateReqVO.getId())); |
|
|
|
} |
|
|
|
customerreturnRequestMainMapper.updateById(updateObj); |
|
|
@ -262,7 +265,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
mainDo.setStatus(PlanStatusEnum.NEW.getCode()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_REQUEST.getCode()); |
|
|
|
DeliverRecordMainDO deliverRecordMainDO = deliverRecordMainService.selectsMainRecordExist(mainDo.getDeliverRecordNumber()); |
|
|
|
if(deliverRecordMainDO != null){ |
|
|
|
if (deliverRecordMainDO != null) { |
|
|
|
mainDo.setFromWarehouseCode(deliverRecordMainDO.getToWarehouseCode()); |
|
|
|
mainDo.setCustomerDockCode(deliverRecordMainDO.getCustomerDockCode()); |
|
|
|
} |
|
|
@ -274,7 +277,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
} |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDo.getStatus())) { |
|
|
|
this.generateJob(mainDo, subDOList); |
|
|
|
} |
|
|
|
customerreturnRequestDetailMapper.insertBatch(subDOList); |
|
|
@ -285,7 +288,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
private void generateJob(CustomerreturnRequestMainDO mainDO, List<CustomerreturnRequestDetailDO> detailDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
if ("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
//如果直接生成记录 修改申请状态为已完成
|
|
|
|
mainDO.setStatus("8"); |
|
|
|
customerreturnRequestMainMapper.updateById(mainDO); |
|
|
@ -305,7 +308,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
CustomerreturnRecordMainDO recordMainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO); |
|
|
|
customerreturnRecordMainMapper.insert(recordMainDO); |
|
|
|
for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { |
|
|
|
for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { |
|
|
|
//记录子表数据 同名属性同名赋值
|
|
|
|
CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO(); |
|
|
|
CustomerreturnRecordDetailDO recordDetailDO = CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO); |
|
|
@ -356,7 +359,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
customerreturnJobMainMapper.insert(customerreturnJobMainDO); |
|
|
|
List<ExpectinCreateReqVO> expectinCreateReqVOList = new ArrayList<>(); |
|
|
|
List<CustomerreturnJobDetailDO> customerreturnJobDetailDOList = new ArrayList<>(); |
|
|
|
for(CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { |
|
|
|
for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { |
|
|
|
//任务子表数据 同名属性同名赋值
|
|
|
|
CustomerreturnJobDetailDO customerreturnJobDetailDO = CustomerreturnJobDetailConvert.INSTANCE.convert(customerreturnRequestDetailDO); |
|
|
|
BeanUtils.copyProperties(customerreturnRequestDetailDO, customerreturnJobDetailDO); |
|
|
@ -387,6 +390,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 主表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
@ -417,39 +421,39 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 子表校验导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validateCustomerreturnRequestDetailImport(CustomerreturnRequestDetailDO detailDo, CustomerreturnRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
validateDeliverRecordDetail(mainDo,detailDo); |
|
|
|
validateDeliverRecordDetail(mainDo, detailDo); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
if ( !detailDo.getUom().equals(itembasicDO.getUom())) { |
|
|
|
if (!detailDo.getUom().equals(itembasicDO.getUom())) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
if(!"".equals(detailDo.getFromLocationCode())){ |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); |
|
|
|
if (!"".equals(detailDo.getFromLocationCode())) { |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); |
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += "从" + ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); |
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += "到" + ex.getMessage() + ","; |
|
|
|
} |
|
|
@ -461,7 +465,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
messageDetail+= ex.getMessage() + (","); |
|
|
|
messageDetail += ex.getMessage() + (","); |
|
|
|
} |
|
|
|
return messageDetail; |
|
|
|
} |
|
|
@ -472,12 +476,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
// 校验存在存在下级单据
|
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
if (count > 0) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
@ -491,12 +495,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
// 校验存在存在下级单据
|
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
Long count = customerreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
if(count > 0) { |
|
|
|
if (count > 0) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_RE_ADD); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
@ -510,12 +514,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_SUBMIT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "CustomerRejectRequest", "提交了客户退货申请", TrendsTypeEnum.UPDATE); |
|
|
@ -529,12 +533,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_AGREE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
this.generateJob(mainDO, customerreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "CustomerRejectRequest", "审批同意了客户退货申请", TrendsTypeEnum.UPDATE); |
|
|
@ -548,7 +552,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_HANDLE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
@ -565,7 +569,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
CustomerreturnRequestMainDO mainDO = validateCustomerreturnRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
if (!flag) { |
|
|
|
throw new ServiceException(CUSTOMERRETURN_REQUEST_CANNOT_ABORT); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
@ -575,6 +579,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 新增主表校验 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
@ -589,36 +594,37 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 新增子表校验 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); |
|
|
|
//校验成品发货记录子表并赋值
|
|
|
|
validateDeliverRecordDetail(mainDo,detailDo); |
|
|
|
//校验物品基础信息并赋值
|
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
if(detailDo.getUom() != null){ |
|
|
|
if (detailDo.getUom() != null) { |
|
|
|
if (!detailDo.getUom().equals(itembasicDO.getUom())) { |
|
|
|
//注意转换字段数值
|
|
|
|
throw exception(UOM_EXCEPTION,"计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); |
|
|
|
throw exception(UOM_EXCEPTION, "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","); |
|
|
|
} |
|
|
|
} |
|
|
|
//校验来源库位
|
|
|
|
if(!"".equals(detailDo.getFromLocationCode())){ |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(),businesstypeDO); |
|
|
|
if (!"".equals(detailDo.getFromLocationCode())) { |
|
|
|
validatorIfInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
} |
|
|
|
//校验到库位
|
|
|
|
// customerdockService.
|
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); |
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO); |
|
|
|
//校验库存状态
|
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); |
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
//校验库存余额
|
|
|
|
validatorBalance(detailDo); |
|
|
|
validateDeliverRecordQtyDetail(mainDo, detailDo); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验发货记录并赋值 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
*/ |
|
|
|
private CustomerreturnRequestMainDO validateDeliverRecord(CustomerreturnRequestMainDO mainDo) { |
|
|
@ -632,9 +638,10 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验业务类型和申请设置并赋值 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
*/ |
|
|
|
private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo){ |
|
|
|
private void validateRequestsettingAndBusinesstype(CustomerreturnRequestMainDO mainDo) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("CustomerRejectRequest"); |
|
|
|
if (requestsettingDO != null) { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
@ -643,7 +650,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest"); |
|
|
|
if(businesstypeDO != null){ |
|
|
|
if (businesstypeDO != null) { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
@ -655,14 +662,51 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private HashMap<Long, BigDecimal> validateDeliverRecordQtyDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) { |
|
|
|
QueryWrapper<CustomerreturnRecordMainDO> customerreturnRecordMainDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
customerreturnRecordMainDOQueryWrapper.eq("deliver_record_number", mainDo.getDeliverRecordNumber()); |
|
|
|
HashMap<Long, BigDecimal> hashMap = new HashMap<>(); |
|
|
|
//查询出已经退货完的记录主表
|
|
|
|
List<CustomerreturnRecordMainDO> customerreturnRecordMainDOS = customerreturnRecordMainMapper.selectList(customerreturnRecordMainDOQueryWrapper); |
|
|
|
//获取发货记录子表每条数据
|
|
|
|
List<DeliverRecordDetailDO> deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); |
|
|
|
if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) { |
|
|
|
//2条
|
|
|
|
for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { |
|
|
|
for (CustomerreturnRecordMainDO customerreturnRecordMainDO : customerreturnRecordMainDOS) { |
|
|
|
List<CustomerreturnRecordDetailDO> customerreturnRecordDetailDOS = customerreturnRecordDetailMapper.selectList(customerreturnRecordMainDO.getId()); |
|
|
|
//查询出已经退货完的记录主表下的子表数据
|
|
|
|
BigDecimal qty = BigDecimal.ZERO; |
|
|
|
for (CustomerreturnRecordDetailDO customerreturnRecordDetailDO : customerreturnRecordDetailDOS) { |
|
|
|
if (deliver.getItemCode().equals(detailDO.getItemCode()) && deliver.getBatch().equals(detailDO.getBatch()) |
|
|
|
&& deliver.getPackingNumber().equals(detailDO.getPackingNumber())) { |
|
|
|
if (deliver.getItemCode().equals(customerreturnRecordDetailDO.getItemCode()) && deliver.getBatch().equals(customerreturnRecordDetailDO.getFromBatch()) |
|
|
|
&& deliver.getPackingNumber().equals(customerreturnRecordDetailDO.getFromPackingNumber())) { |
|
|
|
hashMap.put(detailDO.getId(), qty = qty.add(customerreturnRecordDetailDO.getQty())); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (hashMap.get(detailDO.getId()) != null) { |
|
|
|
if (deliver.getQty().compareTo((hashMap.get(detailDO.getId())).add(detailDO.getQty())) == -1) { |
|
|
|
throw exception(QTY_EXCEPTION, "当前客户退货申请单的" + detailDO.getId() + "的退货数量已超出当前发货记录的发货数量" + (hashMap.get(detailDO.getId())).add(detailDO.getQty()).subtract(deliver.getQty()) + "个"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return hashMap; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验成品发货记录子表并赋值 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @param detailDO |
|
|
|
*/ |
|
|
|
private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo,CustomerreturnRequestDetailDO detailDO){ |
|
|
|
private void validateDeliverRecordDetail(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDO) { |
|
|
|
List<DeliverRecordDetailDO> deliverRecordDetailDO = deliverRecordMainService.selectsDeliverRecordExist(mainDo.getDeliverRecordNumber()); |
|
|
|
if(deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0){ |
|
|
|
if (deliverRecordDetailDO != null && deliverRecordDetailDO.size() != 0) { |
|
|
|
Boolean result = false; |
|
|
|
for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { |
|
|
|
if ( |
|
|
@ -670,28 +714,25 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
// deliver.getSoLine().equals(detailDO.getSoLine()) &&
|
|
|
|
deliver.getItemCode().equals(detailDO.getItemCode()) && |
|
|
|
deliver.getBatch().equals(detailDO.getBatch()) && |
|
|
|
deliver.getPackingNumber().equals(detailDO.getPackingNumber())) |
|
|
|
{ |
|
|
|
detailDO.setQty(deliver.getQty()); |
|
|
|
detailDO.setUom(deliver.getUom()); |
|
|
|
deliver.getPackingNumber().equals(detailDO.getPackingNumber())) { |
|
|
|
result = true; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!result){ |
|
|
|
throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" |
|
|
|
if (!result) { |
|
|
|
throw exception(DELIVER_RECORD_DETAIL_EXCEPTION, "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" |
|
|
|
+ mainDo.getDeliverRecordNumber() + "中"); |
|
|
|
// throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"销售订单号" + detailDO.getSoNumber() + "销售订单行" + detailDO.getSoLine()
|
|
|
|
// + "物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单"
|
|
|
|
// + createReqVO.getDeliverRecordNumber() + "中");
|
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
} else { |
|
|
|
throw exception(DELIVER_RECORD_DETAIL_NOT_EXISTS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验物品基础信息并赋值 |
|
|
|
* |
|
|
|
* @param itemCode |
|
|
|
*/ |
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
@ -700,6 +741,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验出库库位类型是否一致 |
|
|
|
* |
|
|
|
* @param fromLocationCode |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -709,6 +751,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验出库库位类型是否一致 |
|
|
|
* |
|
|
|
* @param toLocationCode |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -718,6 +761,7 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验库存状态是否一致 |
|
|
|
* |
|
|
|
* @param inventoryStatus |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -727,14 +771,15 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验库存余额 |
|
|
|
* |
|
|
|
* @param |
|
|
|
*/ |
|
|
|
private void validatorBalance(CustomerreturnRequestDetailDO detailDO) { |
|
|
|
ArrayList<String> list = new ArrayList<>(); |
|
|
|
list.add(detailDO.getInventoryStatus()); |
|
|
|
if("CUST".equals(detailDO.getFromLocationCode())){ |
|
|
|
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(),detailDO.getPackingNumber() |
|
|
|
,detailDO.getBatch(),detailDO.getFromLocationCode(),list); |
|
|
|
if ("CUST".equals(detailDO.getFromLocationCode())) { |
|
|
|
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber() |
|
|
|
, detailDO.getBatch(), detailDO.getFromLocationCode(), list); |
|
|
|
isqty(detailDO.getQty(), balance.get(0).getQty()); |
|
|
|
} |
|
|
|
} |
|
|
|