|
@ -1,6 +1,7 @@ |
|
|
package com.win.module.wms.service.productscrapRequest; |
|
|
package com.win.module.wms.service.productscrapRequest; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.google.common.annotations.VisibleForTesting; |
|
|
import com.google.common.annotations.VisibleForTesting; |
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
import com.win.framework.common.exception.ServiceException; |
|
@ -28,7 +29,6 @@ import com.win.module.wms.convert.productscrapRequest.RawscrapRequestDetailConve |
|
|
import com.win.module.wms.dal.dataobject.balance.BalanceDO; |
|
|
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.businesstype.BusinesstypeDO; |
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordMainDO; |
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.ProductscrapRecordMainDO; |
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.RawscrapRecordDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.productscrapRecord.RawscrapRecordDetailDO; |
|
@ -39,7 +39,6 @@ import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
import com.win.module.wms.dal.dataobject.shift.ShiftDO; |
|
|
import com.win.module.wms.dal.dataobject.shift.ShiftDO; |
|
|
import com.win.module.wms.dal.dataobject.team.TeamDO; |
|
|
import com.win.module.wms.dal.dataobject.team.TeamDO; |
|
|
import com.win.module.wms.dal.dataobject.transactiontype.TransactiontypeDO; |
|
|
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.productscrapRecord.ProductscrapRecordDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.productscrapRecord.ProductscrapRecordDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.productscrapRecord.ProductscrapRecordMainMapper; |
|
|
import com.win.module.wms.dal.mysql.productscrapRecord.ProductscrapRecordMainMapper; |
|
|
import com.win.module.wms.dal.mysql.productscrapRecord.RawscrapRecordDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.productscrapRecord.RawscrapRecordDetailMapper; |
|
@ -49,14 +48,12 @@ import com.win.module.wms.dal.mysql.productscrapRequest.RawscrapRequestDetailMap |
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.productionline.ProductionlineService; |
|
|
|
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.team.TeamService; |
|
|
import com.win.module.wms.service.team.TeamService; |
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
import com.win.module.wms.service.workshop.WorkshopService; |
|
|
import com.win.module.wms.service.workshop.WorkshopService; |
|
|
import com.win.module.wms.service.workstation.WorkstationService; |
|
|
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
@ -123,9 +120,9 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
@Resource |
|
|
@Resource |
|
|
private ShiftService shiftService; |
|
|
private ShiftService shiftService; |
|
|
@Resource |
|
|
@Resource |
|
|
private ProductionlineService productionlineService; |
|
|
private ProductscrapRequestDetailService productscrapRequestDetailService; |
|
|
@Resource |
|
|
@Resource |
|
|
private WorkstationService workstationService; |
|
|
private RawscrapRequestDetailService rawscrapRequestDetailService; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { |
|
|
public Long createProductscrapRequestMain(ProductscrapRequestMainCreateReqVO createReqVO) { |
|
@ -216,7 +213,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
// 子表校验
|
|
|
// 子表校验
|
|
|
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<ProductscrapRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
for(ProductscrapRequestDetailCreateReqVO detailCreateReqVO:subList){ |
|
|
for(ProductscrapRequestDetailCreateReqVO detailCreateReqVO:subList){ |
|
|
validateDetailMethod(detailCreateReqVO, businesstypeDO,mainBo); |
|
|
// 子表数据校验
|
|
|
|
|
|
productscrapRequestDetailService.validateDetailMethod(detailCreateReqVO, businesstypeDO,mainBo); |
|
|
} |
|
|
} |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_SCRAP_REQUEST.getCode()); |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_SCRAP_REQUEST.getCode()); |
|
|
mainBo.setNumber(number); |
|
|
mainBo.setNumber(number); |
|
@ -233,7 +231,7 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
rawscrapRequestDetailDO.setMasterId(detailDO.getId()); |
|
|
rawscrapRequestDetailDO.setMasterId(detailDO.getId()); |
|
|
rawscrapRequestDetailDO.setNumber(detailDO.getNumber()); |
|
|
rawscrapRequestDetailDO.setNumber(detailDO.getNumber()); |
|
|
// 校验--二级子表数据
|
|
|
// 校验--二级子表数据
|
|
|
validateDetailbBom(rawscrapRequestDetailDO,detailDO,mainBo); |
|
|
rawscrapRequestDetailService.validateDetailbBom(rawscrapRequestDetailDO,detailDO,mainBo); |
|
|
rawscrapRequestDetailDO.setId(null); |
|
|
rawscrapRequestDetailDO.setId(null); |
|
|
childList.add(rawscrapRequestDetailDO); |
|
|
childList.add(rawscrapRequestDetailDO); |
|
|
} |
|
|
} |
|
@ -242,62 +240,6 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
return mainBo; |
|
|
return mainBo; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void validateDetailbBom(RawscrapRequestDetailDO rawscrapRequestDetailDO, ProductscrapRequestDetailDO detailDO, ProductscrapRequestMainDO mainBo) { |
|
|
|
|
|
// 校验--物品基本信息
|
|
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(rawscrapRequestDetailDO.getItemCode()); |
|
|
|
|
|
// 赋值物品Item相关信息
|
|
|
|
|
|
rawscrapRequestDetailDO.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
|
|
rawscrapRequestDetailDO.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
|
|
rawscrapRequestDetailDO.setItemName(itembasicDO.getName()); |
|
|
|
|
|
rawscrapRequestDetailDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
|
|
// 校验库存余额
|
|
|
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
|
|
|
inventoryStatus.add("OK"); // 查询合格的边料库存余额
|
|
|
|
|
|
List<BalanceDO> list = jobUtils.selectlocationReturnManagementAccuracy(rawscrapRequestDetailDO.getItemCode(),null,null,detailDO.getFromLocationCode(),inventoryStatus); |
|
|
|
|
|
BalanceDO balanceDO = list.get(0); // 去第一条库存余额
|
|
|
|
|
|
rawscrapRequestDetailDO.setInventoryStatus(balanceDO.getInventoryStatus()); |
|
|
|
|
|
rawscrapRequestDetailDO.setBatch(balanceDO.getBatch()); |
|
|
|
|
|
rawscrapRequestDetailDO.setPackingNumber(balanceDO.getPackingNumber()); |
|
|
|
|
|
rawscrapRequestDetailDO.setFromLocationCode(balanceDO.getLocationCode()); |
|
|
|
|
|
rawscrapRequestDetailDO.setCreateTime(LocalDateTime.now()); |
|
|
|
|
|
rawscrapRequestDetailDO.setCreator(null); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void validateDetailMethod(ProductscrapRequestDetailBaseVO detailCreateReqVO, BusinesstypeDO businesstypeDO, ProductscrapRequestMainDO productscrapRequestMainDO) { |
|
|
|
|
|
// 校验--生产线基本信息
|
|
|
|
|
|
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailCreateReqVO.getProductionLineCode()); |
|
|
|
|
|
detailCreateReqVO.setFromLocationCode(productionlineDO.getRawLocationCode()); |
|
|
|
|
|
// 校验--物品基本信息 BQ——>QI
|
|
|
|
|
|
ItembasicDO itembasic = validatorItembasic(detailCreateReqVO.getItemCode()); |
|
|
|
|
|
detailCreateReqVO.setItemDesc1(itembasic.getDesc1()); |
|
|
|
|
|
detailCreateReqVO.setItemDesc2(itembasic.getDesc2()); |
|
|
|
|
|
detailCreateReqVO.setItemName(itembasic.getName()); |
|
|
|
|
|
detailCreateReqVO.setProjectCode(itembasic.getProject()); |
|
|
|
|
|
detailCreateReqVO.setUom(itembasic.getUom()); |
|
|
|
|
|
// 校验--工位基础信息
|
|
|
|
|
|
if(StringUtils.isNotEmpty(detailCreateReqVO.getWorkStationCode())){ |
|
|
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailCreateReqVO.getWorkStationCode(), productscrapRequestMainDO.getWorkshopCode(), detailCreateReqVO.getProductionLineCode()); |
|
|
|
|
|
detailCreateReqVO.setFromLocationCode(workstationDO.getRawLocationCode()); |
|
|
|
|
|
} |
|
|
|
|
|
// 校验--uom
|
|
|
|
|
|
// validatorUom(detailCreateReqVO.getUom(), itembasic.getUom());
|
|
|
|
|
|
// 校验--物品类型 DBT---DBT2---IT1
|
|
|
|
|
|
jobUtils.ifInType(itembasic.getType(), businesstypeDO); |
|
|
|
|
|
// 校验--来源库位 DBT——>DBT2——>LO
|
|
|
|
|
|
jobUtils.ifInToLocationType(detailCreateReqVO.getFromLocationCode(), businesstypeDO); |
|
|
|
|
|
// 校验--库存状态 DBT——>DBT2——>ISO
|
|
|
|
|
|
// jobUtils.ifOutInventoryStatuses(detailCreateReqVO.getInventoryStatus(), businesstypeDO);
|
|
|
|
|
|
// 校验--库存余额 TB——>TB1
|
|
|
|
|
|
// List<String> business = validatorbusinessbasic(detailCreateReqVO.getInventoryStatus());
|
|
|
|
|
|
// List<BalanceDO> balance = validatorbalance(detailCreateReqVO.getItemCode(), detailCreateReqVO.getPackingNumber(),detailCreateReqVO.getBatch(), detailCreateReqVO.getFromLocationCode(), business);
|
|
|
|
|
|
// BalanceDO balanceDO = balance.get(0);
|
|
|
|
|
|
// productscrapRequestMainDO.setFromWarehouseCode(balanceDO.getWarehouseCode());
|
|
|
|
|
|
// productscrapRequestMainDO.setDueTime(balanceDO.getExpireDate());
|
|
|
|
|
|
// detailCreateReqVO.setFromLocationCode(balanceDO.getLocationCode());
|
|
|
|
|
|
// // 校验 报废数量【qty】不能大于库存数量【banlance.qty】
|
|
|
|
|
|
// validatorQty(detailCreateReqVO.getQty(), balanceDO.getQty());
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
private ProductscrapRequestMainDO validateMainMethod(ProductscrapRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
ProductscrapRequestMainDO productscrapRequestMainDO = ProductscrapRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
@ -376,7 +318,8 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
List<ProductscrapRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
List<ProductscrapRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
if(subList!=null) { |
|
|
if(subList!=null) { |
|
|
for (ProductscrapRequestDetailUpdateReqVO detailUpdateReqVO : subList) { |
|
|
for (ProductscrapRequestDetailUpdateReqVO detailUpdateReqVO : subList) { |
|
|
validateDetailMethod(detailUpdateReqVO, businesstypeDO, productputawayRequestMainDO); |
|
|
// 子表数据校验
|
|
|
|
|
|
productscrapRequestDetailService.validateDetailMethod(detailUpdateReqVO, businesstypeDO, productputawayRequestMainDO); |
|
|
} |
|
|
} |
|
|
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
List<ProductscrapRequestDetailDO> subDOList = ProductscrapRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
productscrapRequestDetailMapper.updateBatch(subDOList); |
|
|
productscrapRequestDetailMapper.updateBatch(subDOList); |
|
@ -731,5 +674,28 @@ public class ProductscrapRequestMainServiceImpl implements ProductscrapRequestMa |
|
|
PageResult<ProductscrapRequestBomRespVO> pageResult = new PageResult(myPage.getRecords(),myPage.getTotal()); |
|
|
PageResult<ProductscrapRequestBomRespVO> pageResult = new PageResult(myPage.getRecords(),myPage.getTotal()); |
|
|
return pageResult; |
|
|
return pageResult; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Transactional |
|
|
|
|
|
@Override |
|
|
|
|
|
public void updateProductscrapDetailRequestBom(Long id, List<RawscrapRequestDetailUpdateReqVO> updateReqVOList) { |
|
|
|
|
|
// 删除之前的数据
|
|
|
|
|
|
LambdaQueryWrapper<RawscrapRequestDetailDO> requestDetailDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
requestDetailDOLambdaQueryWrapper.eq(RawscrapRequestDetailDO::getMasterId,id); |
|
|
|
|
|
rawscrapRequestDetailMapper.delete(requestDetailDOLambdaQueryWrapper); |
|
|
|
|
|
// 查询子表数据
|
|
|
|
|
|
ProductscrapRequestDetailDO productscrapRequestDetailDO = productscrapRequestDetailMapper.selectById(id); |
|
|
|
|
|
ProductscrapRequestMainDO productscrapRequestMainDO = productscrapRequestMainMapper.selectById(productscrapRequestDetailDO.getMasterId()); |
|
|
|
|
|
List<RawscrapRequestDetailDO> childList = new ArrayList<>(); |
|
|
|
|
|
for(RawscrapRequestDetailUpdateReqVO rawscrapRequestDetailUpdateReqVO:updateReqVOList){ |
|
|
|
|
|
RawscrapRequestDetailDO rawscrapRequestDetailDO = RawscrapRequestDetailConvert.INSTANCE.convert(rawscrapRequestDetailUpdateReqVO); |
|
|
|
|
|
rawscrapRequestDetailDO.setMasterId(productscrapRequestDetailDO.getId()); |
|
|
|
|
|
rawscrapRequestDetailDO.setNumber(productscrapRequestDetailDO.getNumber()); |
|
|
|
|
|
// 校验--二级子表数据
|
|
|
|
|
|
rawscrapRequestDetailService.validateDetailbBom(rawscrapRequestDetailDO,productscrapRequestDetailDO,productscrapRequestMainDO); |
|
|
|
|
|
rawscrapRequestDetailDO.setId(null); |
|
|
|
|
|
childList.add(rawscrapRequestDetailDO); |
|
|
|
|
|
} |
|
|
|
|
|
rawscrapRequestDetailMapper.insertBatch(childList); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|