|
|
@ -58,6 +58,7 @@ import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordDet |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRecord.ProductreceiptRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.common.HoldReceiveTypeEnum; |
|
|
|
import com.win.module.wms.enums.common.InventoryStatusEnum; |
|
|
|
import com.win.module.wms.enums.job.JobStatusEnum; |
|
|
|
import com.win.module.wms.enums.job.JobStatusState; |
|
|
@ -385,8 +386,15 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
productreceiptRecordMainDO.setInterfaceType(recordsettingService.selectRecordsettingExist("ProductPutawayRecord").getInterfaceType()); |
|
|
|
// 增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductReceiptRecord", "制品收货记录"); |
|
|
|
boolean inventorymoveConfirmationSwitchFlag = false; |
|
|
|
if ("scrap".equals(productreceiptJobMainDO.getType())) { |
|
|
|
businesstypeDO = businesstypeService.selectBusinesstypeExist("ProductReceiptScrap"); |
|
|
|
// 隔离报工是否确认接收开关
|
|
|
|
String productreceiptScrapConfirmationSwitch = switchService.selectSwitchExist("productreceiptScrapConfirmationSwitch").getEffectiveSetValue(); |
|
|
|
if("TRUE".equals(productreceiptScrapConfirmationSwitch)){ |
|
|
|
log.debug("隔离报工启确认接收功能,任务单号:{}",productreceiptJobMainDO.getNumber()); |
|
|
|
inventorymoveConfirmationSwitchFlag = true; |
|
|
|
} |
|
|
|
} |
|
|
|
String inTransactionType = businesstypeDO.getInTransactionType(); |
|
|
|
String outTransactionType = businesstypeDO.getOutTransactionType(); |
|
|
@ -404,6 +412,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
// 库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
ArrayList<ProductreceiptDetailbDO> productreceiptDetailbDetailbDOS = new ArrayList<>(); |
|
|
|
boolean finalInventorymoveConfirmationSwitchFlag = inventorymoveConfirmationSwitchFlag; |
|
|
|
subList.forEach(subListItem -> { |
|
|
|
// 获取参数中recordLst
|
|
|
|
productreceiptJobDetailUpdateReqVOList.forEach(DetailUpdateItem -> { |
|
|
@ -442,6 +451,11 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
if ("scrap".equals(productreceiptJobMainDO.getType())) {// 报废收货与申请保持一致
|
|
|
|
// 2024-07-15 问题TB号:HL-3493 要求:增加到库位选择逻辑,库存状态先默认“隔离”
|
|
|
|
productreceiptRecordDetailDO.setInventoryStatus(InventoryStatusEnum.HOLD.getCode()); |
|
|
|
if(finalInventorymoveConfirmationSwitchFlag){ |
|
|
|
productreceiptRecordDetailDO.setReceiveStatus(HoldReceiveTypeEnum.TO_BE_CONFIRMED.getCode());// 待确认
|
|
|
|
}else { |
|
|
|
productreceiptRecordDetailDO.setReceiveStatus(HoldReceiveTypeEnum.RECEIVED.getCode());//已接收
|
|
|
|
} |
|
|
|
} |
|
|
|
// 根据 to库位 查询 库位组 库区
|
|
|
|
LocationDO locationDO = locationService.selectLocation(DetailUpdateItem.getToLocationCode()); |
|
|
@ -462,160 +476,159 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
} |
|
|
|
productreceiptRecordDetailMapper.insert(productreceiptRecordDetailDO); |
|
|
|
productreceiptRecordDetailDOList.add(productreceiptRecordDetailDO); // 不用批量执行 因为要用到返回的id 赋值回冲用
|
|
|
|
// 判断物料器具处理
|
|
|
|
boolean isContainer = itemCodeIsContainer(productreceiptRecordDetailDO.getItemCode()); |
|
|
|
// 添加库存事务list
|
|
|
|
// 入动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVO); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inTransactionType); |
|
|
|
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()); |
|
|
|
// 判断物料是否为器具
|
|
|
|
if (isContainer) { |
|
|
|
BusinesstypeDO businesstypeDO1 = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
String inAreaTypes = businesstypeDO1.getInAreaTypes(); |
|
|
|
if (StringUtils.isNotEmpty(inAreaTypes)) { |
|
|
|
String[] areaTypeArray = inAreaTypes.split(","); |
|
|
|
List<String> areaTypeList = Arrays.asList(areaTypeArray); |
|
|
|
QueryWrapper<AreabasicDO> areabasicDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
areabasicDOQueryWrapper.in("type", areaTypeList); |
|
|
|
List<AreabasicDO> areabasicDOS = areabasicMapper.selectList(areabasicDOQueryWrapper); |
|
|
|
if (areabasicDOS != null && areabasicDOS.size() > 0) { |
|
|
|
List<LocationDO> locationDOS = locationMapper.selectList("area_code", areabasicDOS.get(0)); |
|
|
|
if (locationDOS != null && locationDOS.size() > 0) { |
|
|
|
LocationDO locationDOTemp = locationDOS.get(0); |
|
|
|
transactionCreateReqVO.setLocationCode(locationDOTemp.getCode()); |
|
|
|
transactionCreateReqVO.setLocationGroupCode(locationDOTemp.getLocationGroupCode()); |
|
|
|
transactionCreateReqVO.setAreaCode(locationDOTemp.getAreaCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
transactionCreateReqVO.setLocationCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
} |
|
|
|
LocationDO locationDOTransaction = locationService.queryByCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
transactionCreateReqVO.setLocationGroupCode(locationDOTransaction.getLocationGroupCode()); |
|
|
|
transactionCreateReqVO.setAreaCode(locationDOTransaction.getAreaCode()); |
|
|
|
transactionCreateReqVO.setWarehouseCode(locationDOTransaction.getWarehouseCode()); |
|
|
|
transactionCreateReqVO.setArriveDate(LocalDateTime.now()); |
|
|
|
transactionCreateReqVO.setProduceDate(productreceiptRecordDetailDO.getProduceDate()); |
|
|
|
transactionCreateReqVO.setExpireDate(productreceiptRecordDetailDO.getExpireDate()); |
|
|
|
transactionCreateReqVO.setActiveTime(LocalDateTime.now()); |
|
|
|
// 根据 库位 获取 库区DO
|
|
|
|
AreabasicDO areabasicDO = jobUtils.getAreabasicDO(transactionCreateReqVO.getLocationCode()); |
|
|
|
transactionCreateReqVO.setAreaType(areabasicDO.getType()); |
|
|
|
transactionCreateReqVO.setAreaCode(areabasicDO.getCode()); |
|
|
|
// 按照实际扫描箱码 查询 包装信息 获取包装规格和标包数
|
|
|
|
PackageDO packageDO = packageService.getPackageByNumber(transactionCreateReqVO.getPackingNumber()); |
|
|
|
if (packageDO == null) { |
|
|
|
transactionCreateReqVO.setPackUnit(null); |
|
|
|
transactionCreateReqVO.setPackQty(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
transactionCreateReqVO.setPackUnit(packageDO.getPackUnit()); |
|
|
|
transactionCreateReqVO.setPackQty(packageDO.getPackQty()); |
|
|
|
} |
|
|
|
// transactionCreateReqVO.setPackUnit(jobUtils.getItemareaDO(transactionCreateReqVO.getItemCode(),
|
|
|
|
// areabasicDO.getCode()).getInPackUnit());
|
|
|
|
// transactionCreateReqVO.setPackQty(jobUtils.getItempackageDO(transactionCreateReqVO.getItemCode(),
|
|
|
|
// transactionCreateReqVO.getPackUnit()).getPackQty());
|
|
|
|
|
|
|
|
transactionCreateReqVO.setSiteId(productreceiptRecordDetailDO.getSiteId()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
// 判断物料是否为器具
|
|
|
|
if (isContainer) { |
|
|
|
// 库存事务 出动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVOOut); |
|
|
|
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(outTransactionType); |
|
|
|
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); |
|
|
|
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); |
|
|
|
transactionCreateReqVOOut.setBusinessType(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVOOut.setOwnerCode(productreceiptRecordDetailDO.getToOwnerCode()); |
|
|
|
transactionCreateReqVOOut.setRecordNumber(number); |
|
|
|
transactionCreateReqVOOut.setId(null); |
|
|
|
transactionCreateReqVOOut.setPackingNumber(productreceiptRecordDetailDO.getPackingNumber()); |
|
|
|
transactionCreateReqVOOut.setBatch(productreceiptRecordDetailDO.getBatch()); |
|
|
|
transactionCreateReqVOOut.setContainerNumber(productreceiptRecordDetailDO.getContainerNumber()); |
|
|
|
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOOut.setWarehouseCode(productreceiptRecordMainDO.getToWarehouseCode()); |
|
|
|
BusinesstypeDO businesstypeDO1 = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
String inAreaTypes = businesstypeDO1.getInAreaTypes(); |
|
|
|
if (StringUtils.isNotEmpty(inAreaTypes)) { |
|
|
|
String[] areaTypeArray = inAreaTypes.split(","); |
|
|
|
List<String> areaTypeList = Arrays.asList(areaTypeArray); |
|
|
|
QueryWrapper<AreabasicDO> areabasicDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
areabasicDOQueryWrapper.in("type", areaTypeList); |
|
|
|
List<AreabasicDO> areabasicDOS = areabasicMapper.selectList(areabasicDOQueryWrapper); |
|
|
|
if (areabasicDOS != null && areabasicDOS.size() > 0) { |
|
|
|
List<LocationDO> locationDOS = locationMapper.selectList("area_code", areabasicDOS.get(0)); |
|
|
|
if (locationDOS != null && locationDOS.size() > 0) { |
|
|
|
LocationDO locationDOTemp = locationDOS.get(0); |
|
|
|
transactionCreateReqVOOut.setLocationCode(locationDOTemp.getCode()); |
|
|
|
transactionCreateReqVOOut.setLocationGroupCode(locationDOTemp.getLocationGroupCode()); |
|
|
|
transactionCreateReqVOOut.setAreaCode(locationDOTemp.getAreaCode()); |
|
|
|
if(!finalInventorymoveConfirmationSwitchFlag){ |
|
|
|
// 判断物料器具处理
|
|
|
|
boolean isContainer = itemCodeIsContainer(productreceiptRecordDetailDO.getItemCode()); |
|
|
|
// 添加库存事务list
|
|
|
|
// 入动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVO); |
|
|
|
TransactiontypeDO transactiontypeDO = jobUtils.selectDocumentFromTransactionType(inTransactionType); |
|
|
|
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()); |
|
|
|
// 判断物料是否为器具
|
|
|
|
if (isContainer) { |
|
|
|
BusinesstypeDO businesstypeDO1 = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
String inAreaTypes = businesstypeDO1.getInAreaTypes(); |
|
|
|
if (StringUtils.isNotEmpty(inAreaTypes)) { |
|
|
|
String[] areaTypeArray = inAreaTypes.split(","); |
|
|
|
List<String> areaTypeList = Arrays.asList(areaTypeArray); |
|
|
|
QueryWrapper<AreabasicDO> areabasicDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
areabasicDOQueryWrapper.in("type", areaTypeList); |
|
|
|
List<AreabasicDO> areabasicDOS = areabasicMapper.selectList(areabasicDOQueryWrapper); |
|
|
|
if (areabasicDOS != null && areabasicDOS.size() > 0) { |
|
|
|
List<LocationDO> locationDOS = locationMapper.selectList("area_code", areabasicDOS.get(0)); |
|
|
|
if (locationDOS != null && locationDOS.size() > 0) { |
|
|
|
LocationDO locationDOTemp = locationDOS.get(0); |
|
|
|
transactionCreateReqVO.setLocationCode(locationDOTemp.getCode()); |
|
|
|
transactionCreateReqVO.setLocationGroupCode(locationDOTemp.getLocationGroupCode()); |
|
|
|
transactionCreateReqVO.setAreaCode(locationDOTemp.getAreaCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
transactionCreateReqVO.setLocationCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
} |
|
|
|
transactionCreateReqVOOut.setArriveDate(LocalDateTime.now()); |
|
|
|
transactionCreateReqVOOut.setProduceDate(productreceiptRecordDetailDO.getProduceDate()); |
|
|
|
transactionCreateReqVOOut.setExpireDate(productreceiptRecordDetailDO.getExpireDate()); |
|
|
|
transactionCreateReqVOOut.setActiveTime(LocalDateTime.now()); |
|
|
|
LocationDO locationDOTransaction = locationService.queryByCode(DetailUpdateItem.getToLocationCode()); |
|
|
|
transactionCreateReqVO.setLocationGroupCode(locationDOTransaction.getLocationGroupCode()); |
|
|
|
transactionCreateReqVO.setAreaCode(locationDOTransaction.getAreaCode()); |
|
|
|
transactionCreateReqVO.setWarehouseCode(locationDOTransaction.getWarehouseCode()); |
|
|
|
transactionCreateReqVO.setArriveDate(LocalDateTime.now()); |
|
|
|
transactionCreateReqVO.setProduceDate(productreceiptRecordDetailDO.getProduceDate()); |
|
|
|
transactionCreateReqVO.setExpireDate(productreceiptRecordDetailDO.getExpireDate()); |
|
|
|
transactionCreateReqVO.setActiveTime(LocalDateTime.now()); |
|
|
|
// 根据 库位 获取 库区DO
|
|
|
|
AreabasicDO areabasicDOOut = jobUtils.getAreabasicDO(transactionCreateReqVOOut.getLocationCode()); |
|
|
|
transactionCreateReqVOOut.setAreaType(areabasicDOOut.getType()); |
|
|
|
transactionCreateReqVOOut.setAreaCode(areabasicDOOut.getCode()); |
|
|
|
AreabasicDO areabasicDO = jobUtils.getAreabasicDO(transactionCreateReqVO.getLocationCode()); |
|
|
|
transactionCreateReqVO.setAreaType(areabasicDO.getType()); |
|
|
|
transactionCreateReqVO.setAreaCode(areabasicDO.getCode()); |
|
|
|
// 按照实际扫描箱码 查询 包装信息 获取包装规格和标包数
|
|
|
|
PackageDO packageDOOut = packageService.getPackageByNumber(transactionCreateReqVOOut.getPackingNumber()); |
|
|
|
if (packageDOOut == null) { |
|
|
|
transactionCreateReqVOOut.setPackUnit(null); |
|
|
|
transactionCreateReqVOOut.setPackQty(BigDecimal.ZERO); |
|
|
|
PackageDO packageDO = packageService.getPackageByNumber(transactionCreateReqVO.getPackingNumber()); |
|
|
|
if (packageDO == null) { |
|
|
|
transactionCreateReqVO.setPackUnit(null); |
|
|
|
transactionCreateReqVO.setPackQty(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
transactionCreateReqVOOut.setPackUnit(packageDOOut.getPackUnit()); |
|
|
|
transactionCreateReqVOOut.setPackQty(packageDOOut.getPackQty()); |
|
|
|
transactionCreateReqVO.setPackUnit(packageDO.getPackUnit()); |
|
|
|
transactionCreateReqVO.setPackQty(packageDO.getPackQty()); |
|
|
|
} |
|
|
|
// transactionCreateReqVOOut.setPackUnit(jobUtils.getItemareaDO(transactionCreateReqVOOut.getItemCode(),
|
|
|
|
// areabasicDOOut.getCode()).getInPackUnit());
|
|
|
|
// transactionCreateReqVOOut.setPackQty(jobUtils.getItempackageDO(transactionCreateReqVOOut.getItemCode(),
|
|
|
|
// transactionCreateReqVOOut.getPackUnit()).getPackQty());
|
|
|
|
transactionCreateReqVOOut.setSiteId(productreceiptRecordDetailDO.getSiteId()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOOut); |
|
|
|
} |
|
|
|
if ("assemble".equals(productreceiptRecordMainDO.getType())) { |
|
|
|
for (ProductreceiptDetailbUpdateReqVO productreceiptDetailbUpdateReqVO : DetailUpdateItem.getFgList()) { |
|
|
|
ProductreceiptDetailbCreateReqVO productreceiptDetailbCreateReqVO = new ProductreceiptDetailbCreateReqVO(); |
|
|
|
productreceiptDetailbCreateReqVO.setPackingNumber(subListItem.getPackingNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setBatch(subListItem.getBatch()); |
|
|
|
productreceiptDetailbCreateReqVO.setNumber(subListItem.getNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setMasterId(productreceiptRecordDetailDO.getId()); |
|
|
|
productreceiptDetailbCreateReqVO.setItemCode(subListItem.getItemCode()); |
|
|
|
productreceiptDetailbCreateReqVO.setItemName(subListItem.getItemName()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideItemCode(productreceiptDetailbUpdateReqVO.getOutsideItemCode()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideProduceDate(productreceiptDetailbUpdateReqVO.getOutsideProduceDate()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideSerialNumber(productreceiptDetailbUpdateReqVO.getOutsideSerialNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setRemark(productreceiptDetailbUpdateReqVO.getContent()); |
|
|
|
ProductreceiptDetailbDO productreceiptDetailbDO = ProductreceiptDetailbConvert.INSTANCE.convert(productreceiptDetailbCreateReqVO); |
|
|
|
productreceiptDetailbDetailbDOS.add(productreceiptDetailbDO); |
|
|
|
// transactionCreateReqVO.setPackUnit(jobUtils.getItemareaDO(transactionCreateReqVO.getItemCode(),
|
|
|
|
// areabasicDO.getCode()).getInPackUnit());
|
|
|
|
// transactionCreateReqVO.setPackQty(jobUtils.getItempackageDO(transactionCreateReqVO.getItemCode(),
|
|
|
|
// transactionCreateReqVO.getPackUnit()).getPackQty());
|
|
|
|
|
|
|
|
transactionCreateReqVO.setSiteId(productreceiptRecordDetailDO.getSiteId()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
// 判断物料是否为器具
|
|
|
|
if (isContainer) { |
|
|
|
// 库存事务 出动作
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productreceiptRecordDetailDO, transactionCreateReqVOOut); |
|
|
|
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(outTransactionType); |
|
|
|
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); |
|
|
|
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); |
|
|
|
transactionCreateReqVOOut.setBusinessType(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVOOut.setOwnerCode(productreceiptRecordDetailDO.getToOwnerCode()); |
|
|
|
transactionCreateReqVOOut.setRecordNumber(number); |
|
|
|
transactionCreateReqVOOut.setId(null); |
|
|
|
transactionCreateReqVOOut.setPackingNumber(productreceiptRecordDetailDO.getPackingNumber()); |
|
|
|
transactionCreateReqVOOut.setBatch(productreceiptRecordDetailDO.getBatch()); |
|
|
|
transactionCreateReqVOOut.setContainerNumber(productreceiptRecordDetailDO.getContainerNumber()); |
|
|
|
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVOOut.setWarehouseCode(productreceiptRecordMainDO.getToWarehouseCode()); |
|
|
|
BusinesstypeDO businesstypeDO1 = businesstypeService.selectBusinesstypeExist(productreceiptRecordMainDO.getBusinessType()); |
|
|
|
String inAreaTypes = businesstypeDO1.getInAreaTypes(); |
|
|
|
if (StringUtils.isNotEmpty(inAreaTypes)) { |
|
|
|
String[] areaTypeArray = inAreaTypes.split(","); |
|
|
|
List<String> areaTypeList = Arrays.asList(areaTypeArray); |
|
|
|
QueryWrapper<AreabasicDO> areabasicDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
areabasicDOQueryWrapper.in("type", areaTypeList); |
|
|
|
List<AreabasicDO> areabasicDOS = areabasicMapper.selectList(areabasicDOQueryWrapper); |
|
|
|
if (areabasicDOS != null && areabasicDOS.size() > 0) { |
|
|
|
List<LocationDO> locationDOS = locationMapper.selectList("area_code", areabasicDOS.get(0)); |
|
|
|
if (locationDOS != null && locationDOS.size() > 0) { |
|
|
|
LocationDO locationDOTemp = locationDOS.get(0); |
|
|
|
transactionCreateReqVOOut.setLocationCode(locationDOTemp.getCode()); |
|
|
|
transactionCreateReqVOOut.setLocationGroupCode(locationDOTemp.getLocationGroupCode()); |
|
|
|
transactionCreateReqVOOut.setAreaCode(locationDOTemp.getAreaCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
transactionCreateReqVOOut.setArriveDate(LocalDateTime.now()); |
|
|
|
transactionCreateReqVOOut.setProduceDate(productreceiptRecordDetailDO.getProduceDate()); |
|
|
|
transactionCreateReqVOOut.setExpireDate(productreceiptRecordDetailDO.getExpireDate()); |
|
|
|
transactionCreateReqVOOut.setActiveTime(LocalDateTime.now()); |
|
|
|
// 根据 库位 获取 库区DO
|
|
|
|
AreabasicDO areabasicDOOut = jobUtils.getAreabasicDO(transactionCreateReqVOOut.getLocationCode()); |
|
|
|
transactionCreateReqVOOut.setAreaType(areabasicDOOut.getType()); |
|
|
|
transactionCreateReqVOOut.setAreaCode(areabasicDOOut.getCode()); |
|
|
|
// 按照实际扫描箱码 查询 包装信息 获取包装规格和标包数
|
|
|
|
PackageDO packageDOOut = packageService.getPackageByNumber(transactionCreateReqVOOut.getPackingNumber()); |
|
|
|
if (packageDOOut == null) { |
|
|
|
transactionCreateReqVOOut.setPackUnit(null); |
|
|
|
transactionCreateReqVOOut.setPackQty(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
transactionCreateReqVOOut.setPackUnit(packageDOOut.getPackUnit()); |
|
|
|
transactionCreateReqVOOut.setPackQty(packageDOOut.getPackQty()); |
|
|
|
} |
|
|
|
// transactionCreateReqVOOut.setPackUnit(jobUtils.getItemareaDO(transactionCreateReqVOOut.getItemCode(),
|
|
|
|
// areabasicDOOut.getCode()).getInPackUnit());
|
|
|
|
// transactionCreateReqVOOut.setPackQty(jobUtils.getItempackageDO(transactionCreateReqVOOut.getItemCode(),
|
|
|
|
// transactionCreateReqVOOut.getPackUnit()).getPackQty());
|
|
|
|
transactionCreateReqVOOut.setSiteId(productreceiptRecordDetailDO.getSiteId()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOOut); |
|
|
|
} |
|
|
|
if ("assemble".equals(productreceiptRecordMainDO.getType())) { |
|
|
|
for (ProductreceiptDetailbUpdateReqVO productreceiptDetailbUpdateReqVO : DetailUpdateItem.getFgList()) { |
|
|
|
ProductreceiptDetailbCreateReqVO productreceiptDetailbCreateReqVO = new ProductreceiptDetailbCreateReqVO(); |
|
|
|
productreceiptDetailbCreateReqVO.setPackingNumber(subListItem.getPackingNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setBatch(subListItem.getBatch()); |
|
|
|
productreceiptDetailbCreateReqVO.setNumber(subListItem.getNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setMasterId(productreceiptRecordDetailDO.getId()); |
|
|
|
productreceiptDetailbCreateReqVO.setItemCode(subListItem.getItemCode()); |
|
|
|
productreceiptDetailbCreateReqVO.setItemName(subListItem.getItemName()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideItemCode(productreceiptDetailbUpdateReqVO.getOutsideItemCode()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideProduceDate(productreceiptDetailbUpdateReqVO.getOutsideProduceDate()); |
|
|
|
productreceiptDetailbCreateReqVO.setOutsideSerialNumber(productreceiptDetailbUpdateReqVO.getOutsideSerialNumber()); |
|
|
|
productreceiptDetailbCreateReqVO.setRemark(productreceiptDetailbUpdateReqVO.getContent()); |
|
|
|
ProductreceiptDetailbDO productreceiptDetailbDO = ProductreceiptDetailbConvert.INSTANCE.convert(productreceiptDetailbCreateReqVO); |
|
|
|
productreceiptDetailbDetailbDOS.add(productreceiptDetailbDO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
// 增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
// 移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(productreceiptJobMainDO.getNumber()); |
|
|
|
// 判断该申请下所有任务是否完成
|
|
|
|
QueryWrapper<ProductreceiptJobMainDO> productreceiptJobMainDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
productreceiptJobMainDOQueryWrapper.eq("request_number", productreceiptJobMainDO.getRequestNumber()); |
|
|
@ -641,21 +654,27 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
} |
|
|
|
// 变更记录
|
|
|
|
trendsApi.createTrends(productreceiptJobMainDO.getId(), "job_productreceipt_main", "执行了制品收货任务", TrendsTypeEnum.JOB_EXECUTE, String.valueOf(getLoginUserId())); |
|
|
|
// 根据单据开关判断是否创建 回冲记录
|
|
|
|
SwitchDO switchDOBack = switchService.selectSwitchExist("CreateBackflushRecordAfterProductreceiptRecordCreated"); |
|
|
|
if (switchDOBack.getEffectiveSetValue().equals("TRUE")) { |
|
|
|
// 创建 回冲记录(record_productreceipt_detailb)
|
|
|
|
productreceiptRecordMainService.generateProductreceiptRecordByBom(productreceiptRecordMainDO, productreceiptRecordDetailDOList); |
|
|
|
} |
|
|
|
// 装配收货子子表赋值创建
|
|
|
|
productreceiptDetailbMapper.insertBatch(productreceiptDetailbDetailbDOS); |
|
|
|
// 根据单据开关判断是否创建 QAD接口数据
|
|
|
|
if (switchService.selectSwitchExist("PostQAD").getEffectiveSetValue().equals("TRUE")) { |
|
|
|
this.createInterfaceInfo(productreceiptRecordMainDO, productreceiptRecordDetailDOList); |
|
|
|
|
|
|
|
if(!finalInventorymoveConfirmationSwitchFlag){ |
|
|
|
// 增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
// 移除预计入
|
|
|
|
expectinService.deleteExpectinByJobNumber(productreceiptJobMainDO.getNumber()); |
|
|
|
// 根据单据开关判断是否创建 回冲记录
|
|
|
|
SwitchDO switchDOBack = switchService.selectSwitchExist("CreateBackflushRecordAfterProductreceiptRecordCreated"); |
|
|
|
if (switchDOBack.getEffectiveSetValue().equals("TRUE")) { |
|
|
|
// 创建 回冲记录(record_productreceipt_detailb)
|
|
|
|
productreceiptRecordMainService.generateProductreceiptRecordByBom(productreceiptRecordMainDO, productreceiptRecordDetailDOList); |
|
|
|
} |
|
|
|
// 装配收货子子表赋值创建
|
|
|
|
productreceiptDetailbMapper.insertBatch(productreceiptDetailbDetailbDOS); |
|
|
|
// 根据单据开关判断是否创建 QAD接口数据
|
|
|
|
if (switchService.selectSwitchExist("PostQAD").getEffectiveSetValue().equals("TRUE")) { |
|
|
|
this.createInterfaceInfo(productreceiptRecordMainDO, productreceiptRecordDetailDOList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!"scrap".equals(productreceiptJobMainDO.getType())) { // 报废则不需要上架
|
|
|
|
|
|
|
|
// 成品检验申请
|
|
|
|
Thread productInspectThread = new Thread(new Runnable() { |
|
|
|
@Override |
|
|
@ -737,8 +756,7 @@ public class ProductreceiptJobMainServiceImpl implements ProductreceiptJobMainSe |
|
|
|
} |
|
|
|
}); |
|
|
|
putAwayThread.start(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
redisCache.deleteLock(lockKey); |
|
|
|
return number; |
|
|
|