|
|
@ -21,6 +21,7 @@ import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecor |
|
|
|
import com.win.module.wms.controller.customerreturnRecord.vo.CustomerreturnRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.customerreturnRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.expectin.vo.ExpectinCreateReqVO; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.customerreturnJob.CustomerreturnJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.customerreturnJob.CustomerreturnJobMainConvert; |
|
|
|
import com.win.module.wms.convert.customerreturnRecord.CustomerreturnRecordDetailConvert; |
|
|
@ -44,6 +45,7 @@ import com.win.module.wms.dal.dataobject.jobsetting.JobsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnJob.CustomerreturnJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordDetailMapper; |
|
|
@ -51,6 +53,7 @@ import com.win.module.wms.dal.mysql.customerreturnRecord.CustomerreturnRecordMai |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.customerreturnRequest.CustomerreturnRequestMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.packageMassage.PackageMapper; |
|
|
|
import com.win.module.wms.enums.common.HoldReceiveTypeEnum; |
|
|
|
import com.win.module.wms.enums.job.JobStatusEnum; |
|
|
|
import com.win.module.wms.enums.plan.PlanStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
@ -60,6 +63,7 @@ import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
|
import com.win.module.wms.service.customerdock.CustomerdockService; |
|
|
|
import com.win.module.wms.service.customerreturnJob.CustomerreturnJobMainService; |
|
|
|
import com.win.module.wms.service.deliverRecord.DeliverRecordMainService; |
|
|
|
import com.win.module.wms.service.documentSwitch.SwitchService; |
|
|
|
import com.win.module.wms.service.expectin.ExpectinService; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.jobsetting.JobsettingService; |
|
|
@ -67,6 +71,7 @@ import com.win.module.wms.service.location.LocationService; |
|
|
|
import com.win.module.wms.service.packageMassage.PackageService; |
|
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import groovy.lang.Lazy; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -167,6 +172,12 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
private AreabasicService areabasicService; |
|
|
|
@Resource |
|
|
|
private CustomerreturnJobMainService customerreturnJobMainService; |
|
|
|
@Lazy |
|
|
|
@Resource |
|
|
|
private SwitchService switchService; |
|
|
|
@Lazy |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public String createCustomerreturnRequestMain(CustomerreturnRequestMainCreateReqVO createReqVO) { |
|
|
@ -321,37 +332,152 @@ public class CustomerreturnRequestMainServiceImpl implements CustomerreturnReque |
|
|
|
// 如果直接生成记录 修改申请状态为已完成
|
|
|
|
mainDO.setStatus(RequestStatusEnum.COMPLETED.getCode()); |
|
|
|
customerreturnRequestMainMapper.updateById(mainDO); |
|
|
|
CustomerreturnRecordMainCreateReqVO customerreturnRecordMainCreateReqVO = new CustomerreturnRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, customerreturnRecordMainCreateReqVO); |
|
|
|
// 记录主表数据 同名属性同名赋值
|
|
|
|
customerreturnRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
customerreturnRecordMainCreateReqVO.setId(null); |
|
|
|
customerreturnRecordMainCreateReqVO.setCreator(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
customerreturnRecordMainCreateReqVO.setCreateTime(null); |
|
|
|
customerreturnRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); |
|
|
|
customerreturnRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_RECORD.getCode()); |
|
|
|
customerreturnRecordMainCreateReqVO.setNumber(number); |
|
|
|
// 增加业务类型
|
|
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CustomerRejectRecord", "客户退货记录"); |
|
|
|
customerreturnRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
CustomerreturnRecordMainDO recordMainDO = CustomerreturnRecordMainConvert.INSTANCE.convert(customerreturnRecordMainCreateReqVO); |
|
|
|
recordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
customerreturnRecordMainMapper.insert(recordMainDO); |
|
|
|
String userIdStr = userApi.getUser(getLoginUserId()).getId().toString(); |
|
|
|
String userDepIdStr = userApi.getUser(getLoginUserId()).getDeptId().toString(); |
|
|
|
boolean customerreturnConfirmationSwitchFlag = false; |
|
|
|
String inventorymoveConfirmationSwitch = switchService.selectSwitchExist("customerreturnConfirmationSwitch").getEffectiveSetValue(); |
|
|
|
if("TRUE".equals(inventorymoveConfirmationSwitch)){ |
|
|
|
log.debug("客户退货开启确认接收功能,申请单号:{}",mainDO.getNumber()); |
|
|
|
customerreturnConfirmationSwitchFlag = true; |
|
|
|
} |
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
// 根据申请生成任务,任务生成记录的逻辑重新修改 -->申请直接到记录的功能
|
|
|
|
for (CustomerreturnRequestDetailDO customerreturnRequestDetailDO : detailDOList) { |
|
|
|
// 记录子表数据 同名属性同名赋值
|
|
|
|
CustomerreturnRecordDetailCreateReqVO customerreturnRecordDetailCreateReqVO = new CustomerreturnRecordDetailCreateReqVO(); |
|
|
|
CustomerreturnRecordDetailDO recordDetailDO = CustomerreturnRecordDetailConvert.INSTANCE.convert(customerreturnRecordDetailCreateReqVO); |
|
|
|
BeanUtils.copyProperties(customerreturnRequestDetailDO, recordDetailDO); |
|
|
|
recordDetailDO.setFromBatch(customerreturnRequestDetailDO.getBatch()); |
|
|
|
recordDetailDO.setMasterId(customerreturnRequestDetailDO.getId()); |
|
|
|
recordDetailDO.setId(null); |
|
|
|
recordDetailDO.setCreator(userApi.getUser(getLoginUserId()).getId().toString()); |
|
|
|
recordDetailDO.setCreateTime(null); |
|
|
|
recordDetailDO.setInventoryStatus(businesstypeDO.getInInventoryStatuses()); |
|
|
|
customerreturnRecordDetailMapper.insert(recordDetailDO); |
|
|
|
// 根据 申请的包装条数 来创建任务
|
|
|
|
List<PackageDO> packageDOList = packageService.getPackageListByRequestNumber(mainDO.getNumber()); |
|
|
|
if (packageDOList == null || packageDOList.size() == 0) { |
|
|
|
throw exception(PRODUCTRECEIPT_JOB_MAIN_PACKING_ERROR); |
|
|
|
} |
|
|
|
for (PackageDO packageDO : packageDOList) { |
|
|
|
if (packageDO.getItemCode().equals(customerreturnRequestDetailDO.getItemCode()) && packageDO.getDetailId().equals(customerreturnRequestDetailDO.getId())) { |
|
|
|
// 创建客户收货记录主表
|
|
|
|
CustomerreturnRecordMainDO customerreturnRecordMainDO = new CustomerreturnRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(mainDO, customerreturnRecordMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.CUSTOMER_REJECT_RECORD.getCode()); |
|
|
|
customerreturnRecordMainDO.setNumber(number); |
|
|
|
customerreturnRecordMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
customerreturnRecordMainDO.setJobNumber(null); |
|
|
|
customerreturnRecordMainDO.setId(null); |
|
|
|
customerreturnRecordMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
customerreturnRecordMainDO.setDepartmentCode(userDepIdStr); |
|
|
|
customerreturnRecordMainMapper.insert(customerreturnRecordMainDO); |
|
|
|
|
|
|
|
CustomerreturnRecordDetailDO recordDetailDO = new CustomerreturnRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(customerreturnRequestDetailDO, recordDetailDO); |
|
|
|
recordDetailDO.setMasterId(customerreturnRecordMainDO.getId()); |
|
|
|
recordDetailDO.setId(null); |
|
|
|
recordDetailDO.setCreator(userIdStr); |
|
|
|
recordDetailDO.setCreateTime(LocalDateTime.now()); |
|
|
|
recordDetailDO.setFromOwnerCode(customerreturnRequestDetailDO.getFromOwnerCode()); |
|
|
|
recordDetailDO.setToOwnerCode(customerreturnRequestDetailDO.getFromOwnerCode()); |
|
|
|
|
|
|
|
recordDetailDO.setFromBatch(customerreturnRequestDetailDO.getBatch()); |
|
|
|
recordDetailDO.setToBatch(customerreturnRequestDetailDO.getBatch()); |
|
|
|
recordDetailDO.setFromPackingNumber(customerreturnRequestDetailDO.getPackingNumber()); |
|
|
|
recordDetailDO.setToPackingNumber(packageDO.getNumber()); |
|
|
|
recordDetailDO.setFromLocationCode(customerreturnRequestDetailDO.getFromLocationCode()); |
|
|
|
if(StringUtils.isNotEmpty(recordDetailDO.getFromLocationCode())){ |
|
|
|
LocationDO locationDOFrom = locationService.selectLocation(recordDetailDO.getFromLocationCode()); |
|
|
|
if (locationDOFrom != null) { |
|
|
|
recordDetailDO.setFromAreaCode(locationDOFrom.getAreaCode()); |
|
|
|
recordDetailDO.setFromLocationGroupCode(locationDOFrom.getLocationGroupCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
recordDetailDO.setToLocationCode(customerreturnRequestDetailDO.getToLocationCode()); |
|
|
|
if(StringUtils.isNotEmpty(recordDetailDO.getToLocationCode())){ |
|
|
|
LocationDO locationDOTo = locationService.selectLocation(recordDetailDO.getToLocationCode()); |
|
|
|
if (locationDOTo != null) { |
|
|
|
recordDetailDO.setToAreaCode(locationDOTo.getAreaCode()); |
|
|
|
recordDetailDO.setToLocationGroupCode(locationDOTo.getLocationGroupCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(customerreturnConfirmationSwitchFlag){ |
|
|
|
recordDetailDO.setReceiveStatus(HoldReceiveTypeEnum.TO_BE_CONFIRMED.getCode());//待确认
|
|
|
|
}else{ |
|
|
|
recordDetailDO.setReceiveStatus(HoldReceiveTypeEnum.RECEIVED.getCode());//已接收
|
|
|
|
} |
|
|
|
recordDetailDO.setFromContainerNumber(customerreturnRequestDetailDO.getContainerNumber()); |
|
|
|
recordDetailDO.setToContainerNumber(customerreturnRequestDetailDO.getContainerNumber()); |
|
|
|
recordDetailDO.setQty(packageDO.getQty()); |
|
|
|
recordDetailDO.setUom(packageDO.getUom()); |
|
|
|
recordDetailDO.setInventoryStatus(businesstypeDO.getInInventoryStatuses()); |
|
|
|
customerreturnRecordDetailMapper.insert(recordDetailDO); |
|
|
|
|
|
|
|
if(!customerreturnConfirmationSwitchFlag){ |
|
|
|
// 添加库存事务list
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(recordDetailDO, transactionCreateReqVO); |
|
|
|
// 入库存事务
|
|
|
|
transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
String inTransactionType = businesstypeDO.getInTransactionType(); |
|
|
|
if (inTransactionType != null && !"".equals(inTransactionType)) { |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inTransactionType); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setBusinessType(customerreturnRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVO.setLocationCode(recordDetailDO.getToLocationCode()); |
|
|
|
transactionCreateReqVO.setOwnerCode(recordDetailDO.getToOwnerCode()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setBatch(recordDetailDO.getToBatch()); |
|
|
|
transactionCreateReqVO.setPackingNumber(recordDetailDO.getToPackingNumber()); |
|
|
|
transactionCreateReqVO.setInventoryStatus(recordDetailDO.getInventoryStatus()); |
|
|
|
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
transactionCreateReqVO.setQty(recordDetailDO.getQty()); |
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVO.setSiteId(recordDetailDO.getSiteId()); |
|
|
|
transactionCreateReqVO.setArriveDate(LocalDateTime.now()); |
|
|
|
transactionCreateReqVO.setProduceDate(LocalDateTime.now()); |
|
|
|
// 根据 库位 获取 库区DO
|
|
|
|
AreabasicDO areabasicDO = jobUtils.getAreabasicDO(transactionCreateReqVO.getLocationCode()); |
|
|
|
transactionCreateReqVO.setAreaType(areabasicDO.getType()); |
|
|
|
transactionCreateReqVO.setAreaCode(areabasicDO.getCode()); |
|
|
|
transactionCreateReqVO.setPackUnit(jobUtils.getItemareaDO(recordDetailDO.getItemCode(), areabasicDO.getCode()).getInPackUnit()); |
|
|
|
transactionCreateReqVO.setPackQty(jobUtils.getItempackageDO(recordDetailDO.getItemCode(), transactionCreateReqVO.getPackUnit()).getPackQty()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
} |
|
|
|
TransactionCreateReqVO outTransactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(recordDetailDO, outTransactionCreateReqVO); |
|
|
|
// 出库存事务
|
|
|
|
outTransactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
String outTransactionType = businesstypeDO.getOutTransactionType(); |
|
|
|
if (outTransactionType != null && !"".equals(outTransactionType)) { |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(outTransactionType); |
|
|
|
outTransactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
outTransactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
outTransactionCreateReqVO.setBusinessType(customerreturnRecordMainDO.getBusinessType()); |
|
|
|
outTransactionCreateReqVO.setLocationCode(recordDetailDO.getFromLocationCode()); |
|
|
|
outTransactionCreateReqVO.setOwnerCode(recordDetailDO.getFromOwnerCode()); |
|
|
|
outTransactionCreateReqVO.setRecordNumber(number); |
|
|
|
outTransactionCreateReqVO.setInventoryStatus(recordDetailDO.getInventoryStatus()); |
|
|
|
outTransactionCreateReqVO.setBatch(recordDetailDO.getFromBatch()); |
|
|
|
outTransactionCreateReqVO.setPackingNumber(recordDetailDO.getFromPackingNumber()); |
|
|
|
outTransactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
outTransactionCreateReqVO.setId(null); |
|
|
|
outTransactionCreateReqVO.setQty(recordDetailDO.getQty()); |
|
|
|
outTransactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
outTransactionCreateReqVO.setSiteId(recordDetailDO.getSiteId()); |
|
|
|
outTransactionCreateReqVO.setArriveDate(LocalDateTime.now()); |
|
|
|
outTransactionCreateReqVO.setProduceDate(LocalDateTime.now()); |
|
|
|
// 根据 库位 获取 库区DO
|
|
|
|
AreabasicDO areabasicDOOut = jobUtils.getAreabasicDO(outTransactionCreateReqVO.getLocationCode()); |
|
|
|
outTransactionCreateReqVO.setAreaType(areabasicDOOut.getType()); |
|
|
|
outTransactionCreateReqVO.setAreaCode(areabasicDOOut.getCode()); |
|
|
|
outTransactionCreateReqVO.setPackUnit(jobUtils.getItemareaDO(recordDetailDO.getItemCode(), areabasicDOOut.getCode()).getOutPackUnit()); |
|
|
|
outTransactionCreateReqVO.setPackQty(jobUtils.getItempackageDO(recordDetailDO.getItemCode(), outTransactionCreateReqVO.getPackUnit()).getPackQty()); |
|
|
|
transactionCreateReqVOList.add(outTransactionCreateReqVO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if(!customerreturnConfirmationSwitchFlag){ |
|
|
|
// 增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(recordMainDO.getId(), "record_customerreturn_main", null, "客户退货申请生成客户退货记录", JSONUtil.toJsonStr(recordMainDO),TrendsTypeEnum.CREATE, String.valueOf(getLoginUserId())); |
|
|
|
trendsApi.createTrends(mainDO.getId(), "record_customerreturn_main", null, "客户退货申请生成客户退货记录", JSONUtil.toJsonStr(mainDO),TrendsTypeEnum.CREATE, String.valueOf(getLoginUserId())); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|