|
|
@ -3,35 +3,34 @@ package com.win.module.wms.service.customerreturnRequest; |
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailExportReqVO; |
|
|
|
import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailPageReqVO; |
|
|
|
import com.win.module.wms.controller.customerreturnRequest.vo.CustomerreturnRequestDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestDetailConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.deliverRecord.DeliverRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereturnRequest.PurchasereturnRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; |
|
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
|
import com.win.module.wms.service.deliverRecord.DeliverRecordMainService; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.customerreturnRequest.CustomerreturnRequestDetailDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.customerreturnRequest.CustomerreturnRequestDetailConvert; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestDetailMapper; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
@ -54,21 +53,24 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private BusinesstypeService businesstypeService; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createCustomerreturnRequestDetail(CustomerreturnRequestDetailCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
CustomerreturnRequestDetailDO customerreturnRequestDetail = CustomerreturnRequestDetailConvert.INSTANCE.convert(createReqVO); |
|
|
|
String number = customerreturnRequestDetail.getNumber(); |
|
|
|
if(number != null && !"".equals(number)){ |
|
|
|
if (number != null && !"".equals(number)) { |
|
|
|
QueryWrapper<CustomerreturnRequestMainDO> customerreturnRequestMainDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
customerreturnRequestMainDOQueryWrapper.eq("number",number); |
|
|
|
customerreturnRequestMainDOQueryWrapper.eq("number", number); |
|
|
|
CustomerreturnRequestMainDO customerreturnRequestMainDO = customerreturnRequestMainMapper.selectOne(customerreturnRequestMainDOQueryWrapper); |
|
|
|
customerreturnRequestDetail.setMasterId(customerreturnRequestMainDO.getId()); |
|
|
|
customerreturnRequestDetail.setToLocationCode("HOLD"); |
|
|
|
validateCustomerreturnRequestDetailCreate(customerreturnRequestMainDO,customerreturnRequestDetail); |
|
|
|
validateCustomerreturnRequestDetailCreate(customerreturnRequestMainDO, customerreturnRequestDetail); |
|
|
|
} |
|
|
|
customerreturnRequestDetailMapper.insert(customerreturnRequestDetail); |
|
|
|
trendsApi.createTrends(customerreturnRequestDetail.getId(), "CustomerreturnRequestDetail", "新增了客户退货申请", TrendsTypeEnum.CREATE); |
|
|
@ -115,10 +117,12 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
public PageResult<CustomerreturnRequestDetailDO> getCustomerreturnRequestDetailPage(CustomerreturnRequestDetailPageReqVO pageReqVO) { |
|
|
|
return customerreturnRequestDetailMapper.selectPage(pageReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<CustomerreturnRequestDetailDO> getCustomerreturnRequestDetailSenior(CustomConditions conditions) { |
|
|
|
return customerreturnRequestDetailMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<CustomerreturnRequestDetailDO> getCustomerreturnRequestDetailList(CustomerreturnRequestDetailExportReqVO exportReqVO) { |
|
|
|
return customerreturnRequestDetailMapper.selectList(exportReqVO); |
|
|
@ -131,14 +135,15 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
|
|
|
|
/** |
|
|
|
* 新增子表校验 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private void validateCustomerreturnRequestDetailCreate(CustomerreturnRequestMainDO mainDo, CustomerreturnRequestDetailDO detailDo) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest","客户退货申请"); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRequest", "客户退货申请"); |
|
|
|
//校验成品发货记录子表并赋值
|
|
|
|
if(mainDo.getDeliverRecordNumber() != null && !"".equals(mainDo.getDeliverRecordNumber())){ |
|
|
|
validateDeliverRecordDetail(mainDo,detailDo); |
|
|
|
if (mainDo.getDeliverRecordNumber() != null && !"".equals(mainDo.getDeliverRecordNumber())) { |
|
|
|
validateDeliverRecordDetail(mainDo, detailDo); |
|
|
|
} |
|
|
|
//校验物料基础信息并赋值
|
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
@ -146,56 +151,56 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
if ( !detailDo.getUom().equals(itembasicDO.getUom())) { |
|
|
|
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); |
|
|
|
} |
|
|
|
//校验到库位
|
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(),businesstypeDO); |
|
|
|
validatorIfInFromLocationType(detailDo.getToLocationCode(), businesstypeDO); |
|
|
|
//校验库存状态
|
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); |
|
|
|
validatorIfInventoryStatuses(detailDo.getInventoryStatus(), businesstypeDO); |
|
|
|
//校验库存余额
|
|
|
|
validatorBalance(detailDo); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验成品发货记录子表并赋值 |
|
|
|
* |
|
|
|
* @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) { |
|
|
|
for (DeliverRecordDetailDO deliver : deliverRecordDetailDO) { |
|
|
|
if ( |
|
|
|
// deliver.getSoNumber().equals(detailDO.getSoNumber()) &&
|
|
|
|
// deliver.getSoLine().equals(detailDO.getSoLine()) &&
|
|
|
|
deliver.getItemCode().equals(detailDO.getItemCode()) && |
|
|
|
deliver.getBatch().equals(detailDO.getBatch()) && |
|
|
|
deliver.getPackingNumber().equals(detailDO.getPackingNumber())) |
|
|
|
{ |
|
|
|
deliver.getPackingNumber().equals(detailDO.getPackingNumber())) { |
|
|
|
detailDO.setQty(deliver.getQty()); |
|
|
|
detailDO.setUom(deliver.getUom()); |
|
|
|
} else { |
|
|
|
throw exception(DELIVER_RECORD_DETAIL_EXCEPTION,"物料代码" + detailDO.getItemCode() + "批次" + detailDO.getBatch() + "箱码" + detailDO.getPackingNumber() + "不在发货记录单" |
|
|
|
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) { |
|
|
@ -204,6 +209,7 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验出库库位类型是否一致 |
|
|
|
* |
|
|
|
* @param fromLocationCode |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -213,6 +219,7 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验出库库位类型是否一致 |
|
|
|
* |
|
|
|
* @param toLocationCode |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -222,6 +229,7 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验库存状态是否一致 |
|
|
|
* |
|
|
|
* @param inventoryStatus |
|
|
|
* @param businesstypeDO |
|
|
|
*/ |
|
|
@ -231,20 +239,23 @@ public class CustomerreturnRequestDetailServiceImpl implements CustomerreturnReq |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验库存余额 |
|
|
|
* |
|
|
|
* @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); |
|
|
|
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist("CustomerReject"); |
|
|
|
if (businesstypeDO.getOutAreaTypes().equals(detailDO.getFromLocationCode())) { |
|
|
|
List<BalanceDO> balance = jobUtils.selectlocationReturnManagementAccuracy(detailDO.getItemCode(), detailDO.getPackingNumber() |
|
|
|
, detailDO.getBatch(), detailDO.getFromLocationCode(), list); |
|
|
|
isqty(detailDO.getQty(), balance.get(0).getQty()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验库存数量 |
|
|
|
* |
|
|
|
* @param qty1 |
|
|
|
* @param qty2 |
|
|
|
* @return |
|
|
|