|
|
@ -1,29 +1,74 @@ |
|
|
|
package com.win.module.wms.service.productreceiptJob; |
|
|
|
|
|
|
|
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; |
|
|
|
import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptJob.vo.ProductreceiptJobMainUpdateReqVO; |
|
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.api.user.dto.AdminUserRespDTO; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.issueJob.vo.IssueJobDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.controller.productreceiptJob.vo.*; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.productreceiptJob.ProductreceiptJobMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.backflushRequest.BackflushRequestDetailbDO; |
|
|
|
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.documentSwitch.SwitchDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueJob.IssueJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueJob.IssueJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.issueRecord.IssueRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
|
import com.win.module.wms.dal.dataobject.location.LocationDO; |
|
|
|
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptJob.ProductreceiptJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRecord.BackflushRecordDetailbDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRecord.ProductreceiptRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
|
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; |
|
|
|
import com.win.module.wms.dal.mysql.backflushRequest.BackflushRequestDetailbMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRecord.BackflushRecordDetailbMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordMainMapper; |
|
|
|
import com.win.module.wms.enums.job.JobStatusState; |
|
|
|
import com.win.module.wms.service.backflushRequest.BackflushRequestDetailbService; |
|
|
|
import com.win.module.wms.service.balance.BalanceService; |
|
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
|
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.location.LocationService; |
|
|
|
import com.win.module.wms.service.production.ProductionMainService; |
|
|
|
import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestDetailService; |
|
|
|
import com.win.module.wms.service.productreceiptRequest.ProductreceiptRequestMainService; |
|
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
|
import com.win.module.wms.service.transactiontype.TransactiontypeService; |
|
|
|
import com.win.module.wms.service.workstation.WorkstationService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 制品收货任务主 Service 实现类 |
|
|
@ -34,9 +79,50 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTRECEIPT_JOB_MAI |
|
|
|
@Validated |
|
|
|
public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainService { |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private BusinesstypeService businesstypeService; |
|
|
|
@Resource |
|
|
|
private TransactiontypeService transactiontypeService; |
|
|
|
@Resource |
|
|
|
private SwitchService switchService; |
|
|
|
@Resource |
|
|
|
private BackflushRecordDetailbMapper backflushRecordDetailbMapper; |
|
|
|
@Resource |
|
|
|
private BalanceService balanceService; |
|
|
|
@Resource |
|
|
|
private WorkstationService workstationService; |
|
|
|
@Resource |
|
|
|
private BackflushRequestDetailbMapper backflushRequestDetailbMapper; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRequestMainService productreceiptRequestService; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRequestDetailService productreceiptRequestDetailService; |
|
|
|
@Resource |
|
|
|
private ExpectinService expectinService; |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRecordDetailMapper productreceiptRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private LocationService locationService; |
|
|
|
@Resource |
|
|
|
private ProductreceiptRecordMainMapper productreceiptRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private ProductreceiptJobDetailService productreceiptJobDetailService; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private ProductreceiptJobMainMapper productreceiptJobMainMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ProductionMainService productionMainService; |
|
|
|
|
|
|
@ -66,10 +152,12 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
productreceiptJobMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateProductreceiptJobMainExists(Long id) { |
|
|
|
if (productreceiptJobMainMapper.selectById(id) == null) { |
|
|
|
private ProductreceiptJobMainDO validateProductreceiptJobMainExists(Long id) { |
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = productreceiptJobMainMapper.selectById(id); |
|
|
|
if ( productreceiptJobMainDO == null) { |
|
|
|
throw exception(PRODUCTRECEIPT_JOB_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return productreceiptJobMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -123,4 +211,267 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
map.put("count", l.intValue()); |
|
|
|
return map; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ProductreceiptJobMainDO> getProductreceiptJobMainList(CustomConditions conditions) { |
|
|
|
return productreceiptJobMainMapper.selectSeniorList(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer acceptProductreceiptJobMain(Long id) { |
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.accept()) { |
|
|
|
throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productreceiptJobMainDO.setAcceptUserId(String.valueOf(userId)); |
|
|
|
productreceiptJobMainDO.setAcceptUserName(userRespDTO.getNickname()); |
|
|
|
productreceiptJobMainDO.setAcceptTime(LocalDateTime.now()); |
|
|
|
trendsApi.createTrends(id, "productreceiptJob", "承接了制品收货任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer abandonProductreceiptJobMain(Long id) { |
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.cancelAccept()) { |
|
|
|
throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productreceiptJobMainDO.setAcceptUserId(null); |
|
|
|
productreceiptJobMainDO.setAcceptUserName(null); |
|
|
|
productreceiptJobMainDO.setAcceptTime(null); |
|
|
|
trendsApi.createTrends(id, "productreceiptJob", "取消了制品收货任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer closeProductreceiptJobMain(Long id) { |
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(id); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); |
|
|
|
if(!jobStatusState.close()) { |
|
|
|
throw exception(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "productreceiptJob", "关闭了制品收货任务", TrendsTypeEnum.UPDATE); |
|
|
|
return productreceiptJobMainMapper.updateById(productreceiptJobMainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public String executeProductreceiptJobMain(ProductreceiptJobMainUpdateReqVO updateReqVO) { |
|
|
|
//查询数据
|
|
|
|
ProductreceiptJobMainDO productreceiptJobMainDO = this.validateProductreceiptJobMainExists(updateReqVO.getId()); |
|
|
|
List<ProductreceiptJobDetailDO> subList = productreceiptJobDetailService.selectList(productreceiptJobMainDO.getId()); |
|
|
|
JobStatusState jobStatusState = new JobStatusState(productreceiptJobMainDO.getStatus()); |
|
|
|
boolean flag = jobStatusState.execute(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTRECEIPT_JOB_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
//更新完成信息
|
|
|
|
Long userId = getLoginUserId(); |
|
|
|
AdminUserRespDTO userRespDTO = userApi.getUser(userId); |
|
|
|
productreceiptJobMainDO.setStatus(jobStatusState.getState().getCode()); |
|
|
|
productreceiptJobMainDO.setCompleteTime(LocalDateTime.now()); |
|
|
|
productreceiptJobMainDO.setCompleteUserId(String.valueOf(userRespDTO.getId())); |
|
|
|
productreceiptJobMainDO.setCompleteUserName(userRespDTO.getNickname()); |
|
|
|
//更新任务表状态
|
|
|
|
int result = productreceiptJobMainMapper.updateById(productreceiptJobMainDO); |
|
|
|
//创建 记录 主表
|
|
|
|
ProductreceiptRecordMainDO productreceiptRecordMainDO = new ProductreceiptRecordMainDO(); |
|
|
|
BeanUtils.copyProperties(productreceiptJobMainDO, productreceiptRecordMainDO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_RECEIPT_RECORD.getCode()); |
|
|
|
productreceiptRecordMainDO.setNumber(number); |
|
|
|
productreceiptRecordMainDO.setRequestNumber(productreceiptJobMainDO.getRequestNumber()); |
|
|
|
productreceiptRecordMainDO.setJobNumber(productreceiptJobMainDO.getNumber()); |
|
|
|
productreceiptRecordMainDO.setWorkshopCode(productreceiptJobMainDO.getWorkShopCode()); |
|
|
|
productreceiptRecordMainDO.setExecuteTime(LocalDateTime.now()); |
|
|
|
productreceiptRecordMainDO.setActiveDate(LocalDateTime.now()); |
|
|
|
productreceiptRecordMainDO.setAvailable("TRUE"); |
|
|
|
productreceiptRecordMainDO.setDueTime(productreceiptJobMainDO.getRequestDueTime()); |
|
|
|
productreceiptRecordMainDO.setId(null); |
|
|
|
productreceiptRecordMainDO.setCreator(null); |
|
|
|
productreceiptRecordMainDO.setCreateTime(null); |
|
|
|
productreceiptRecordMainDO.setUpdater(null); |
|
|
|
productreceiptRecordMainDO.setUpdateTime(null); |
|
|
|
// 接口类型
|
|
|
|
productreceiptRecordMainDO.setInterfaceType(recordsettingService.selectRecordsettingExist("IssueRecord").getInterfaceType()); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRecord"); |
|
|
|
productreceiptRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
productreceiptRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
productreceiptRecordMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
productreceiptRecordMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
productreceiptRecordMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
productreceiptRecordMainMapper.insert(productreceiptRecordMainDO); |
|
|
|
// 获取参数中的sublist
|
|
|
|
List<ProductreceiptJobDetailUpdateReqVO> productreceiptJobDetailUpdateReqVOList = updateReqVO.getSubList(); |
|
|
|
//发料记录子
|
|
|
|
List<ProductreceiptRecordDetailDO> productreceiptRecordDetailDOList = new ArrayList<>(); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
subList.forEach(subListItem -> { |
|
|
|
// 获取参数中recordLst
|
|
|
|
productreceiptJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { |
|
|
|
// 匹配任务子表与参数中子表
|
|
|
|
if (DetailUpdateItem.getId().equals(subListItem.getId())) { |
|
|
|
ProductreceiptRecordDetailDO productreceiptRecordDetailDO = new ProductreceiptRecordDetailDO(); |
|
|
|
BeanUtils.copyProperties(subListItem, productreceiptRecordDetailDO); |
|
|
|
productreceiptRecordDetailDO.setNumber(number); |
|
|
|
productreceiptRecordDetailDO.setMasterId(productreceiptRecordMainDO.getId()); |
|
|
|
productreceiptRecordDetailDO.setProductionlineCode(subListItem.getProductionLineCode()); |
|
|
|
productreceiptRecordDetailDO.setId(null); |
|
|
|
productreceiptRecordDetailDO.setCreator(null); |
|
|
|
productreceiptRecordDetailDO.setCreateTime(null); |
|
|
|
productreceiptRecordDetailDO.setUpdater(null); |
|
|
|
productreceiptRecordDetailDO.setUpdateTime(null); |
|
|
|
// 根据recordLst 进行赋值子表部分数据
|
|
|
|
productreceiptRecordDetailDO.setQty(DetailUpdateItem.getHandleQty()); |
|
|
|
productreceiptRecordDetailDO.setPackingNumber(DetailUpdateItem.getToPackingNumber()); |
|
|
|
productreceiptRecordDetailDO.setContainerNumber(DetailUpdateItem.getToContainerNumber()); |
|
|
|
productreceiptRecordDetailDO.setBatch(DetailUpdateItem.getToBatch()); |
|
|
|
productreceiptRecordDetailDO.setToLocationCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
productreceiptRecordDetailDO.setInventoryStatus(DetailUpdateItem.getToInventoryStatus()); |
|
|
|
// 根据 to库位 查询 库位组 库区
|
|
|
|
LocationDO locationDO = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); |
|
|
|
productreceiptRecordDetailDO.setToLocationGroupCode(locationDO.getLocationGroupCode()); |
|
|
|
productreceiptRecordDetailDO.setToAreaCode(locationDO.getAreaCode()); |
|
|
|
productreceiptRecordDetailMapper.insert(productreceiptRecordDetailDO); |
|
|
|
productreceiptRecordDetailDOList.add(productreceiptRecordDetailDO); // 不用批量执行 因为要用到返回的id 赋值回冲用
|
|
|
|
//添加库存事务list
|
|
|
|
// 入动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVO); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setBusinessType(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVO.setOwnerCode(productreceiptRecordDetailDO.getToOwnerCode()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
transactionCreateReqVO.setPackingNumber(productreceiptRecordDetailDO.getPackingNumber()); |
|
|
|
transactionCreateReqVO.setBatch(productreceiptRecordDetailDO.getBatch()); |
|
|
|
transactionCreateReqVO.setContainerNumber(productreceiptRecordDetailDO.getContainerNumber()); |
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVO.setWarehouseCode(productreceiptRecordMainDO.getToWarehouseCode()); |
|
|
|
transactionCreateReqVO.setLocationCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
// if(!productreceiptRecordDetailDOList.isEmpty()) {
|
|
|
|
// productreceiptRecordDetailMapper.insertBatch(productreceiptRecordDetailDOList);
|
|
|
|
// }
|
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
//移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(productreceiptJobMainDO.getNumber()); |
|
|
|
//变更记录
|
|
|
|
trendsApi.createTrends(productreceiptJobMainDO.getId(), "productreceiptJob", "执行了制品收货任务", TrendsTypeEnum.UPDATE); |
|
|
|
// 根据单据开关判断是否创建 回冲记录
|
|
|
|
SwitchDO switchDOBack = switchService.selectSwitchExist("CreateBackflushRecordAfterProductreceiptRecordCreated"); |
|
|
|
if (switchDOBack.getEffectiveSetValue().equals("TRUE")) { |
|
|
|
// 创建 回冲记录(record_backflush_detailb)
|
|
|
|
generateBackflushRecord(productreceiptRecordMainDO, productreceiptRecordDetailDOList); |
|
|
|
} |
|
|
|
// 根据单据开关判断是否创建 制品上架申请
|
|
|
|
SwitchDO switchDO = switchService.selectSwitchExist("CreateProductputawayRequestAfterProductreceiptRecordCreated"); |
|
|
|
if (switchDO.getEffectiveSetValue().equals("TRUE")) { |
|
|
|
// TODO: 创建 制品上架申请
|
|
|
|
|
|
|
|
} |
|
|
|
return number; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建 回冲记录 |
|
|
|
* @param productreceiptRecordMainDO |
|
|
|
* @param productreceiptRecordDetailDOList |
|
|
|
*/ |
|
|
|
private void generateBackflushRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List<ProductreceiptRecordDetailDO> productreceiptRecordDetailDOList) { |
|
|
|
List<ProductreceiptRequestDetailDO> productreceiptRequestDetailDOList = productreceiptRequestService.getProductreceiptRequestDetailDOByNumber(productreceiptRecordMainDO.getRequestNumber()); |
|
|
|
List<BackflushRecordDetailbDO> backflushRecordDetailbDOList = new ArrayList<>(); |
|
|
|
// 下线结算集合
|
|
|
|
List<BackflushRecordDetailbDO> offlinesettlementRecordList = new ArrayList<>(); |
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
for(ProductreceiptRequestDetailDO productreceiptRequestDetailDO: productreceiptRequestDetailDOList){ |
|
|
|
QueryWrapper queryWrapper = new QueryWrapper(); |
|
|
|
queryWrapper.eq("master_id",productreceiptRequestDetailDO.getId().toString()); |
|
|
|
List<BackflushRequestDetailbDO> backflushRequestDetailbDOList = backflushRequestDetailbMapper.selectList(queryWrapper); |
|
|
|
for(BackflushRequestDetailbDO backflushRequestDetailbDO: backflushRequestDetailbDOList ) { |
|
|
|
ProductreceiptRecordDetailDO productreceiptRecordDetailDO = productreceiptRecordDetailDOList.stream().filter(item -> item.getItemCode().equals(productreceiptRequestDetailDO.getItemCode())).collect(Collectors.toList()).get(0); |
|
|
|
BackflushRecordDetailbDO backflushRecordDetailbDO = new BackflushRecordDetailbDO(); |
|
|
|
BeanUtils.copyProperties(backflushRequestDetailbDO,backflushRecordDetailbDO); |
|
|
|
backflushRecordDetailbDO.setMasterId(productreceiptRecordDetailDO.getId()); |
|
|
|
backflushRecordDetailbDO.setNumber(productreceiptRecordDetailDO.getNumber()); |
|
|
|
backflushRecordDetailbDO.setId(null); |
|
|
|
backflushRecordDetailbDO.setCreator(null); |
|
|
|
backflushRecordDetailbDO.setCreateTime(null); |
|
|
|
backflushRecordDetailbDO.setUpdater(null); |
|
|
|
backflushRecordDetailbDO.setUpdateTime(null); |
|
|
|
// from_location_code 工位表中原料库位
|
|
|
|
// 根据 生产线 工位 查询工位信息 并赋值 from_location_code
|
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(productreceiptRecordDetailDO.getWorkStationCode(),productreceiptRecordMainDO.getWorkshopCode(),productreceiptRecordDetailDO.getProductionlineCode()); |
|
|
|
backflushRecordDetailbDO.setFromLocationCode(workstationDO.getRawLocationCode()); |
|
|
|
// 根据 from_location_code 查询库存余额
|
|
|
|
List inventoryStatus = new ArrayList(); |
|
|
|
inventoryStatus.add("OK"); |
|
|
|
List<BalanceDO> balanceDOList = balanceService.selectNumber(backflushRequestDetailbDO.getItemCode(),inventoryStatus,workstationDO.getRawLocationCode()); |
|
|
|
backflushRecordDetailbDO.setPackingNumber(balanceDOList.get(0).getPackingNumber()); |
|
|
|
backflushRecordDetailbDO.setBatch(balanceDOList.get(0).getBatch()); |
|
|
|
backflushRecordDetailbDO.setInventoryStatus("OK"); |
|
|
|
backflushRecordDetailbDO.setFromAreaCode(balanceDOList.get(0).getAreaCode()); |
|
|
|
backflushRecordDetailbDO.setFromLocationGroupCode(balanceDOList.get(0).getLocationGroupCode()); |
|
|
|
backflushRecordDetailbDOList.add(backflushRecordDetailbDO); |
|
|
|
//添加库存事务list
|
|
|
|
// 出动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(backflushRecordDetailbDO, transactionCreateReqVO); |
|
|
|
BusinesstypeDO businesstypeDO = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
transactionCreateReqVO.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVO.setInventoryAction(transactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(transactiontypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
transactionCreateReqVO.setOwnerCode(""); |
|
|
|
transactionCreateReqVO.setRecordNumber(backflushRecordDetailbDO.getNumber()); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
transactionCreateReqVO.setPackingNumber(backflushRecordDetailbDO.getPackingNumber()); |
|
|
|
transactionCreateReqVO.setBatch(backflushRecordDetailbDO.getBatch()); |
|
|
|
transactionCreateReqVO.setContainerNumber(""); |
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVO.setWarehouseCode(""); |
|
|
|
transactionCreateReqVO.setLocationCode(backflushRecordDetailbDO.getFromLocationCode()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
// 判断 物品 是否为 下线结算物品 创建 下线结算记录
|
|
|
|
// ItembasicDO itembasicDO = itembasicService.s
|
|
|
|
// if (backflushRecordDetailbDO.getItemCode()) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
offlinesettlementRecordList.add(backflushRecordDetailbDO); |
|
|
|
} |
|
|
|
} |
|
|
|
backflushRecordDetailbMapper.insertBatch(backflushRecordDetailbDOList); |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
// TODO:判断 物品 是否为 下线结算物品 创建 下线结算记录
|
|
|
|
generateOfflinesettlementRecord(productreceiptRecordMainDO, offlinesettlementRecordList); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建 下线结算 记录 |
|
|
|
* @param productreceiptRecordMainDO |
|
|
|
* @param offlinesettlementRecordList |
|
|
|
*/ |
|
|
|
private void generateOfflinesettlementRecord(ProductreceiptRecordMainDO productreceiptRecordMainDO, List<BackflushRecordDetailbDO> offlinesettlementRecordList) { |
|
|
|
} |
|
|
|
} |
|
|
|