|
@ -1,24 +1,85 @@ |
|
|
package com.win.module.wms.service.productdismantleRequest; |
|
|
package com.win.module.wms.service.productdismantleRequest; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
|
|
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.CustomConditions; |
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainCreateReqVO; |
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainExportReqVO; |
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainPageReqVO; |
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
import com.win.module.wms.controller.productdismantleRequest.vo.ProductdismantleRequestMainUpdateReqVO; |
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
|
|
import com.win.module.wms.controller.productdismantleRequest.vo.*; |
|
|
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaBaseVO; |
|
|
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO; |
|
|
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailbCreateReqVO; |
|
|
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
|
|
import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailaConvert; |
|
|
|
|
|
import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestDetailbConvert; |
|
|
import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestMainConvert; |
|
|
import com.win.module.wms.convert.productdismantleRequest.ProductdismantleRequestMainConvert; |
|
|
|
|
|
import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailaConvert; |
|
|
|
|
|
import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailbConvert; |
|
|
|
|
|
import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestMainConvert; |
|
|
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; |
|
|
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; |
|
|
|
|
|
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.issueRequest.IssueRequestMainDO; |
|
|
|
|
|
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.productdismantleRecord.ProductdismantleRecordDetailaDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordDetailbDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productdismantleRecord.ProductdismantleRecordMainDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailaDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestDetailbDO; |
|
|
import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; |
|
|
import com.win.module.wms.dal.dataobject.productdismantleRequest.ProductdismantleRequestMainDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailbDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO; |
|
|
|
|
|
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.team.TeamDO; |
|
|
|
|
|
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.productdismantleJob.ProductdismantleJobMainMapper; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordDetailaMapper; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordDetailbMapper; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productdismantleRecord.ProductdismantleRecordMainMapper; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailaMapper; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestDetailbMapper; |
|
|
import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestMainMapper; |
|
|
import com.win.module.wms.dal.mysql.productdismantleRequest.ProductdismantleRequestMainMapper; |
|
|
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
|
|
import com.win.module.wms.service.location.LocationService; |
|
|
|
|
|
import com.win.module.wms.service.productionline.ProductionlineService; |
|
|
|
|
|
import com.win.module.wms.service.recordsetting.RecordsettingService; |
|
|
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
|
|
import com.win.module.wms.service.team.TeamService; |
|
|
|
|
|
import com.win.module.wms.service.transaction.TransactionService; |
|
|
|
|
|
import com.win.module.wms.service.workshop.WorkshopService; |
|
|
|
|
|
import com.win.module.wms.service.workstation.WorkstationService; |
|
|
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.validation.annotation.Validated; |
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
|
|
|
import javax.management.Query; |
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.Arrays; |
|
|
import java.util.Collection; |
|
|
import java.util.Collection; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUEST_MAIN_NOT_EXISTS; |
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 制品拆解申请主 Service 实现类 |
|
|
* 制品拆解申请主 Service 实现类 |
|
@ -29,25 +90,236 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTDISMANTLE_REQUE |
|
|
@Validated |
|
|
@Validated |
|
|
public class ProductdismantleRequestMainServiceImpl implements ProductdismantleRequestMainService { |
|
|
public class ProductdismantleRequestMainServiceImpl implements ProductdismantleRequestMainService { |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private TransactionService transactionService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRecordDetailbMapper productdismantleRecordDetailbMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRecordDetailaMapper productdismantleRecordDetailaMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRequestDetailbService productdismantleRequestDetailbService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRecordMainMapper productdismantleRecordMainMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleJobMainMapper productdismantleJobMainMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private LocationService locationService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private WorkshopService workshopService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private TeamService teamService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ShiftService shiftService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductionlineService productionlineService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ItembasicService itembasicService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private WorkstationService workstationService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRequestDetailbMapper productdismantleRequestDetailbMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private AdminUserApi userApi; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private JobUtils jobUtils; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductdismantleRequestDetailaMapper productdismantleRequestDetailaMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private TrendsApi trendsApi; |
|
|
@Resource |
|
|
@Resource |
|
|
private ProductdismantleRequestMainMapper productdismantleRequestMainMapper; |
|
|
private ProductdismantleRequestMainMapper productdismantleRequestMainMapper; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
public Long createProductdismantleRequestMain(ProductdismantleRequestMainCreateReqVO createReqVO) { |
|
|
public Long createProductdismantleRequestMain(ProductdismantleRequestMainCreateReqVO createReqVO) { |
|
|
// 插入
|
|
|
// 插入
|
|
|
ProductdismantleRequestMainDO productdismantleRequestMain = ProductdismantleRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductDisassembleRequest"); |
|
|
productdismantleRequestMainMapper.insert(productdismantleRequestMain); |
|
|
ProductdismantleRequestMainDO productdismantleRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productdismantleRequestMainDO.getStatus())) { |
|
|
|
|
|
List<ProductdismantleRequestDetailaDO> detailaDOList = productdismantleRequestDetailaMapper.selectList(productdismantleRequestMainDO.getId()); |
|
|
|
|
|
this.generateJob(productdismantleRequestMainDO, detailaDOList); |
|
|
|
|
|
} |
|
|
|
|
|
trendsApi.createTrends(productdismantleRequestMainDO.getId(), "ProductdismantleRequest", "增加了制品拆解申请", TrendsTypeEnum.CREATE); |
|
|
// 返回
|
|
|
// 返回
|
|
|
return productdismantleRequestMain.getId(); |
|
|
return productdismantleRequestMainDO.getId(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void updateProductdismantleRequestMain(ProductdismantleRequestMainUpdateReqVO updateReqVO) { |
|
|
@Transactional |
|
|
|
|
|
public Long updateProductdismantleRequestMain(ProductdismantleRequestMainUpdateReqVO updateReqVO) { |
|
|
// 校验存在
|
|
|
// 校验存在
|
|
|
validateProductdismantleRequestMainExists(updateReqVO.getId()); |
|
|
validateProductdismantleRequestMainExists(updateReqVO.getId()); |
|
|
// 更新
|
|
|
// 更新
|
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductDisassembleRequest"); |
|
|
|
|
|
ProductdismantleRequestMainDO productdismantleRequestMainDO = validatorToUpdate(updateReqVO,requestsettingDO); |
|
|
|
|
|
trendsApi.createTrends(productdismantleRequestMainDO.getId(), "ProductdismantleRequest", "增加了制品拆解申请", TrendsTypeEnum.CREATE); |
|
|
|
|
|
// 返回
|
|
|
|
|
|
return productdismantleRequestMainDO.getId(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private ProductdismantleRequestMainDO validatorToUpdate(ProductdismantleRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
ProductdismantleRequestMainDO updateObj = ProductdismantleRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
ProductdismantleRequestMainDO updateObj = ProductdismantleRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
productdismantleRequestMainMapper.updateById(updateObj); |
|
|
// DBT——>DBT3("ProductdismantleRequest")
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRequest"); |
|
|
|
|
|
ProductdismantleRequestMainDO mainBo = validateMainMethod(updateObj,businesstypeDO,requestsettingDO); |
|
|
|
|
|
productdismantleRequestMainMapper.updateById(mainBo); |
|
|
|
|
|
return mainBo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private ProductdismantleRequestMainDO validatorToCreate(ProductdismantleRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
|
|
ProductdismantleRequestMainDO productdismantleRequestMainDO = ProductdismantleRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
|
|
// DBT——>DBT3("ProductdismantleRequest")
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRequest"); |
|
|
|
|
|
ProductdismantleRequestMainDO mainBo = validateMainMethod(productdismantleRequestMainDO,businesstypeDO,requestsettingDO); |
|
|
|
|
|
// 子表处理逻辑 ProductdismantleRequestDetailaDO
|
|
|
|
|
|
List<ProductdismantleRequestDetailaCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
|
|
for(ProductdismantleRequestDetailaCreateReqVO productdismantleRequestDetailaCreateReqVO:subList){ |
|
|
|
|
|
validateDetailMethod(mainBo, productdismantleRequestDetailaCreateReqVO,businesstypeDO); |
|
|
|
|
|
} |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_REPAIR_REQUEST.getCode()); |
|
|
|
|
|
mainBo.setNumber(number); |
|
|
|
|
|
mainBo.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
|
|
productdismantleRequestMainMapper.insert(mainBo); |
|
|
|
|
|
for(ProductdismantleRequestDetailaCreateReqVO productdismantleRequestDetailaCreateReqVO:subList){ |
|
|
|
|
|
ProductdismantleRequestDetailaDO detailaDO = ProductdismantleRequestDetailaConvert.INSTANCE.convert(productdismantleRequestDetailaCreateReqVO); |
|
|
|
|
|
detailaDO.setMasterId(mainBo.getId()); |
|
|
|
|
|
detailaDO.setNumber(mainBo.getNumber()); |
|
|
|
|
|
detailaDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); |
|
|
|
|
|
productdismantleRequestDetailaMapper.insert(detailaDO); |
|
|
|
|
|
List<ProductdismantleRequestDetailbCreateReqVO> consumereDetailbList = productdismantleRequestDetailaCreateReqVO.getChildList(); |
|
|
|
|
|
if (consumereDetailbList == null || consumereDetailbList.size() == 0) { |
|
|
|
|
|
throw exception(DISMANTLE_REQUEST_BOM_NOT_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
List<ProductdismantleRequestDetailbDO> childList = new ArrayList<>(); |
|
|
|
|
|
for(ProductdismantleRequestDetailbCreateReqVO productdismantleRequestDetailbCreateReqVO:consumereDetailbList){ |
|
|
|
|
|
ProductdismantleRequestDetailbDO detailbDO = ProductdismantleRequestDetailbConvert.INSTANCE.convert(productdismantleRequestDetailbCreateReqVO); |
|
|
|
|
|
validateDetailbBom(detailbDO,detailaDO,mainBo); // 创建二级子表数据
|
|
|
|
|
|
childList.add(detailbDO); |
|
|
|
|
|
} |
|
|
|
|
|
productdismantleRequestDetailbMapper.insertBatch(childList); |
|
|
|
|
|
} |
|
|
|
|
|
return mainBo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 创建 二级 子表数据 |
|
|
|
|
|
* @param detailbDO |
|
|
|
|
|
* @param detailaDO |
|
|
|
|
|
* @param mainBo |
|
|
|
|
|
*/ |
|
|
|
|
|
private void validateDetailbBom(ProductdismantleRequestDetailbDO detailbDO, ProductdismantleRequestDetailaDO detailaDO, ProductdismantleRequestMainDO mainBo) { |
|
|
|
|
|
detailbDO.setProcessCode(detailaDO.getProcessCode()); |
|
|
|
|
|
detailbDO.setBomVersion(detailaDO.getBomVersion()); |
|
|
|
|
|
detailbDO.setMasterId(detailaDO.getId()); |
|
|
|
|
|
detailbDO.setNumber(detailaDO.getNumber()); |
|
|
|
|
|
// 校验--物品基本信息
|
|
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailbDO.getItemCode()); |
|
|
|
|
|
// 赋值物品Item相关信息
|
|
|
|
|
|
detailbDO.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
|
|
detailbDO.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
|
|
detailbDO.setItemName(itembasicDO.getName()); |
|
|
|
|
|
detailbDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 校验 子表 |
|
|
|
|
|
* @param mainDO |
|
|
|
|
|
* @param detailDo |
|
|
|
|
|
* @param businesstypeDO |
|
|
|
|
|
*/ |
|
|
|
|
|
private void validateDetailMethod(ProductdismantleRequestMainDO mainDO, ProductdismantleRequestDetailaCreateReqVO detailDo, BusinesstypeDO businesstypeDO) { |
|
|
|
|
|
// 校验--生产线基本信息
|
|
|
|
|
|
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode()); |
|
|
|
|
|
detailDo.setFromLocationCode(productionlineDO.getRawLocationCode()); |
|
|
|
|
|
// 校验--物品基本信息
|
|
|
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
|
|
// 赋值物品Item相关信息
|
|
|
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
|
|
if (!itembasicDO.getUom().equals(detailDo.getUom())) { |
|
|
|
|
|
// 提示:计量单位【uom】错误,应该是【item.uom】
|
|
|
|
|
|
throw exception(ITEMBASIC_UOM_EXCEPTION,detailDo.getUom(),itembasicDO.getUom()); |
|
|
|
|
|
} |
|
|
|
|
|
// 校验--工位基础信息
|
|
|
|
|
|
if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){ |
|
|
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode()); |
|
|
|
|
|
detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); |
|
|
|
|
|
} |
|
|
|
|
|
// 校验--库存余额 TB——>TB1
|
|
|
|
|
|
validateBalance(detailDo,mainDO); |
|
|
|
|
|
// 校验--物品类型 DBT——>DBT2——>IT
|
|
|
|
|
|
jobUtils.ifInType(itembasicDO.getType(),businesstypeDO); |
|
|
|
|
|
// 校验--来源库位 DBT——>DBT2——>LO
|
|
|
|
|
|
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
|
|
// 校验--库存状态 DBT——>DBT2——>ISO
|
|
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 校验 主表 |
|
|
|
|
|
* @param productdismantleRequestMainDO |
|
|
|
|
|
* @param businesstypeDO |
|
|
|
|
|
* @param requestsettingDO |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
private ProductdismantleRequestMainDO validateMainMethod(ProductdismantleRequestMainDO productdismantleRequestMainDO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
|
|
|
|
|
|
|
|
// 校验--车间
|
|
|
|
|
|
workshopService.selectWorkshopExist(productdismantleRequestMainDO.getWorkshopCode()); |
|
|
|
|
|
// 校验--班组
|
|
|
|
|
|
teamService.selectTeamExist(productdismantleRequestMainDO.getTeam()); |
|
|
|
|
|
// 校验--班次
|
|
|
|
|
|
shiftService.selectShiftExist(productdismantleRequestMainDO.getShift()); |
|
|
|
|
|
// 校验--截止时间
|
|
|
|
|
|
validordurtime(productdismantleRequestMainDO.getDueTime()); |
|
|
|
|
|
// 赋值逻辑
|
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
|
|
requestStatusState.newObject(productdismantleRequestMainDO.getAutoCommit(), productdismantleRequestMainDO.getAutoAgree(), productdismantleRequestMainDO.getAutoExecute()); |
|
|
|
|
|
productdismantleRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
productdismantleRequestMainDO.setRequestTime(LocalDateTime.now()); |
|
|
|
|
|
productdismantleRequestMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
|
|
productdismantleRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
productdismantleRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
productdismantleRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
productdismantleRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
productdismantleRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
productdismantleRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
|
|
productdismantleRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
|
|
productdismantleRequestMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
|
|
|
|
|
|
productdismantleRequestMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
|
|
|
|
|
|
return productdismantleRequestMainDO; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void validateBalance(ProductdismantleRequestDetailaBaseVO detailDo, ProductdismantleRequestMainDO mainDO) { |
|
|
|
|
|
String inventoryStatus = detailDo.getInventoryStatus(); |
|
|
|
|
|
String[] inventoryArray = inventoryStatus.split(","); |
|
|
|
|
|
List<String> inventorystatus = Arrays.asList(inventoryArray); |
|
|
|
|
|
List<BalanceDO> list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus); |
|
|
|
|
|
if(list != null && list.size() > 0){ |
|
|
|
|
|
BalanceDO balanceDO = list.get(0); |
|
|
|
|
|
mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode()); |
|
|
|
|
|
if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ |
|
|
|
|
|
// 拆解数量【qty】不能大于库存数量【banlance.qty】
|
|
|
|
|
|
throw exception(PRODUCTDISMANTLE_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); |
|
|
|
|
|
} |
|
|
|
|
|
}else { |
|
|
|
|
|
// 余额校验异常
|
|
|
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void validordurtime(LocalDateTime durtime){ |
|
|
|
|
|
if(!durtime.isAfter(LocalDateTime.now())){ |
|
|
|
|
|
throw exception(TIME_AFTER,LocalDateTime.now(),durtime); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -58,10 +330,12 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR |
|
|
productdismantleRequestMainMapper.deleteById(id); |
|
|
productdismantleRequestMainMapper.deleteById(id); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void validateProductdismantleRequestMainExists(Long id) { |
|
|
private ProductdismantleRequestMainDO validateProductdismantleRequestMainExists(Long id) { |
|
|
if (productdismantleRequestMainMapper.selectById(id) == null) { |
|
|
ProductdismantleRequestMainDO productdismantleRequestMainDO = productdismantleRequestMainMapper.selectById(id); |
|
|
|
|
|
if ( productdismantleRequestMainDO == null) { |
|
|
throw exception(PRODUCTDISMANTLE_REQUEST_MAIN_NOT_EXISTS); |
|
|
throw exception(PRODUCTDISMANTLE_REQUEST_MAIN_NOT_EXISTS); |
|
|
} |
|
|
} |
|
|
|
|
|
return productdismantleRequestMainDO; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -88,4 +362,221 @@ public class ProductdismantleRequestMainServiceImpl implements ProductdismantleR |
|
|
public PageResult<ProductdismantleRequestMainDO> getProductdismantleRequestMainSenior(CustomConditions conditions) { |
|
|
public PageResult<ProductdismantleRequestMainDO> getProductdismantleRequestMainSenior(CustomConditions conditions) { |
|
|
return productdismantleRequestMainMapper.selectSenior(conditions); |
|
|
return productdismantleRequestMainMapper.selectSenior(conditions); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<ProductdismantleRequestMainDO> getProductdismantleRequestMainList(CustomConditions conditions) { |
|
|
|
|
|
return productdismantleRequestMainMapper.selectSeniorList(conditions); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer closeProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//增加操作记录
|
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "关闭了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer reAddProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "打开了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer submitProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//调用自动执行方法
|
|
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); |
|
|
|
|
|
} |
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "提交了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer refusedProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "驳回了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer agreeProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//调用自动执行方法
|
|
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); |
|
|
|
|
|
} |
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "审批通过了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Integer handleProductdismantleRequestMain(Long id) { |
|
|
|
|
|
ProductdismantleRequestMainDO mainDO = validateProductdismantleRequestMainExists(id); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(DISMANTLE_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//调用执行方法
|
|
|
|
|
|
this.generateJob(mainDO, productdismantleRequestDetailaMapper.selectList(mainDO.getId())); |
|
|
|
|
|
trendsApi.createTrends(id, "productdismantleRequest", "执行了制品拆解申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productdismantleRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 创建 记录 |
|
|
|
|
|
* @param mainDO |
|
|
|
|
|
* @param detailaDOList |
|
|
|
|
|
*/ |
|
|
|
|
|
private void generateJob(ProductdismantleRequestMainDO mainDO, List<ProductdismantleRequestDetailaDO> detailaDOList) { |
|
|
|
|
|
//跳过任务直接生成记录
|
|
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
|
|
ProductdismantleRecordMainDO productdismantleRecordMainDO = new ProductdismantleRecordMainDO(); |
|
|
|
|
|
BeanUtils.copyProperties(mainDO, productdismantleRecordMainDO); |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_DISASSEMBLE_RECORD.getCode()); |
|
|
|
|
|
productdismantleRecordMainDO.setNumber(number); |
|
|
|
|
|
productdismantleRecordMainDO.setRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
productdismantleRecordMainDO.setExecuteTime(LocalDateTime.now()); |
|
|
|
|
|
productdismantleRecordMainDO.setActiveDate(LocalDateTime.now()); |
|
|
|
|
|
productdismantleRecordMainDO.setAvailable("TRUE"); |
|
|
|
|
|
productdismantleRecordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
|
|
productdismantleRecordMainDO.setId(null); |
|
|
|
|
|
productdismantleRecordMainDO.setCreateTime(null); |
|
|
|
|
|
productdismantleRecordMainDO.setCreator(null); |
|
|
|
|
|
productdismantleRecordMainDO.setUpdateTime(null); |
|
|
|
|
|
productdismantleRecordMainDO.setUpdater(null); |
|
|
|
|
|
//增加业务类型
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductDisassembleRecord"); |
|
|
|
|
|
productdismantleRecordMainDO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
|
|
productdismantleRecordMainDO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
|
|
productdismantleRecordMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
|
|
productdismantleRecordMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
|
|
productdismantleRecordMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
// 接口类型
|
|
|
|
|
|
productdismantleRecordMainDO.setInterfaceType(recordsettingService.selectRecordsettingExist("ProductDisassembleRecord").getInterfaceType()); |
|
|
|
|
|
productdismantleRecordMainMapper.insert(productdismantleRecordMainDO); |
|
|
|
|
|
//库存事务
|
|
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
|
|
// 子表b 集合
|
|
|
|
|
|
List<ProductdismantleRecordDetailbDO> detailbDOList = new ArrayList<>(); |
|
|
|
|
|
for(ProductdismantleRequestDetailaDO productdismantleRequestDetailaDO : detailaDOList) { |
|
|
|
|
|
ProductdismantleRecordDetailaDO productdismantleRecordDetailaDO = new ProductdismantleRecordDetailaDO(); |
|
|
|
|
|
BeanUtils.copyProperties(productdismantleRequestDetailaDO, productdismantleRecordDetailaDO); |
|
|
|
|
|
LocationDO locationDO = locationService.selectLocation(productdismantleRecordDetailaDO.getFromLocationCode()); |
|
|
|
|
|
productdismantleRecordDetailaDO.setFromAreaCode(locationDO.getAreaCode()); |
|
|
|
|
|
productdismantleRecordDetailaDO.setFromLocationGroupCode(locationDO.getLocationGroupCode()); |
|
|
|
|
|
productdismantleRecordDetailaDO.setMasterId(productdismantleRecordMainDO.getId()); |
|
|
|
|
|
productdismantleRecordDetailaDO.setId(null); |
|
|
|
|
|
productdismantleRecordDetailaDO.setCreateTime(null); |
|
|
|
|
|
productdismantleRecordDetailaDO.setCreator(null); |
|
|
|
|
|
productdismantleRecordDetailaDO.setUpdateTime(null); |
|
|
|
|
|
productdismantleRecordDetailaDO.setUpdater(null); |
|
|
|
|
|
productdismantleRecordDetailaMapper.insert(productdismantleRecordDetailaDO); |
|
|
|
|
|
//添加库存事务list
|
|
|
|
|
|
// 出动作
|
|
|
|
|
|
TransactionCreateReqVO transactionCreateReqVOOut = new TransactionCreateReqVO(); |
|
|
|
|
|
BeanUtils.copyProperties(productdismantleRecordDetailaDO, transactionCreateReqVOOut); |
|
|
|
|
|
TransactiontypeDO transactiontypeDOOut = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
|
|
transactionCreateReqVOOut.setWorker(String.valueOf(userApi.getUser(getLoginUserId()).getId())); |
|
|
|
|
|
transactionCreateReqVOOut.setInventoryAction(transactiontypeDOOut.getInventoryAction()); |
|
|
|
|
|
transactionCreateReqVOOut.setTransactionType(transactiontypeDOOut.getCode()); |
|
|
|
|
|
transactionCreateReqVOOut.setBusinessType(productdismantleRecordMainDO.getBusinessType()); |
|
|
|
|
|
transactionCreateReqVOOut.setOwnerCode(productdismantleRecordDetailaDO.getFromOwnerCode()); |
|
|
|
|
|
transactionCreateReqVOOut.setRecordNumber(number); |
|
|
|
|
|
transactionCreateReqVOOut.setId(null); |
|
|
|
|
|
transactionCreateReqVOOut.setPackingNumber(productdismantleRecordDetailaDO.getPackingNumber()); |
|
|
|
|
|
transactionCreateReqVOOut.setBatch(productdismantleRecordDetailaDO.getBatch()); |
|
|
|
|
|
transactionCreateReqVOOut.setContainerNumber(productdismantleRecordDetailaDO.getContainerNumber()); |
|
|
|
|
|
transactionCreateReqVOOut.setAmount(BigDecimal.ZERO); |
|
|
|
|
|
transactionCreateReqVOOut.setWarehouseCode(productdismantleRecordMainDO.getFromWarehouseCode()); |
|
|
|
|
|
transactionCreateReqVOOut.setLocationCode(productdismantleRecordDetailaDO.getFromLocationCode()); |
|
|
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVOOut); |
|
|
|
|
|
// 根据申请子表a id 查询 申请 子表b
|
|
|
|
|
|
QueryWrapper queryWrapper = new QueryWrapper(); |
|
|
|
|
|
queryWrapper.eq("master_id", productdismantleRequestDetailaDO.getId().toString()); |
|
|
|
|
|
List<ProductdismantleRequestDetailbDO> productdismantleRequestDetailbDOList = productdismantleRequestDetailbMapper.selectList(queryWrapper); |
|
|
|
|
|
for(ProductdismantleRequestDetailbDO productdismantleRequestDetailbDO:productdismantleRequestDetailbDOList) { |
|
|
|
|
|
ProductdismantleRecordDetailbDO productdismantleRecordDetailbDO = new ProductdismantleRecordDetailbDO(); |
|
|
|
|
|
BeanUtils.copyProperties(productdismantleRequestDetailbDO, productdismantleRecordDetailbDO); |
|
|
|
|
|
productdismantleRecordDetailbDO.setMasterId(productdismantleRecordDetailaDO.getId()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setNumber(productdismantleRecordDetailaDO.getNumber()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setBatch("000000"); |
|
|
|
|
|
productdismantleRecordDetailbDO.setPackingNumber(""); |
|
|
|
|
|
productdismantleRecordDetailbDO.setInventoryStatus("OK"); |
|
|
|
|
|
// 根据成品物品 对应工位 查询 原料库位
|
|
|
|
|
|
WorkstationDO workstationDO = workstationService.selectWorkstationExist(productdismantleRecordDetailaDO.getWorkStationCode(),productdismantleRecordMainDO.getWorkshopCode(),productdismantleRecordDetailaDO.getProductionLineCode()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setToLocationCode(workstationDO.getRawLocationCode()); |
|
|
|
|
|
LocationDO locationDODetailb = locationService.selectLocation(workstationDO.getRawLocationCode()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setToAreaCode(locationDODetailb.getAreaCode()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setToLocationGroupCode(locationDODetailb.getLocationGroupCode()); |
|
|
|
|
|
productdismantleRecordDetailbDO.setId(null); |
|
|
|
|
|
productdismantleRecordDetailbDO.setCreateTime(null); |
|
|
|
|
|
productdismantleRecordDetailbDO.setCreator(null); |
|
|
|
|
|
productdismantleRecordDetailbDO.setUpdateTime(null); |
|
|
|
|
|
productdismantleRecordDetailbDO.setUpdater(null); |
|
|
|
|
|
detailbDOList.add(productdismantleRecordDetailbDO); |
|
|
|
|
|
//添加库存事务list
|
|
|
|
|
|
// 入动作
|
|
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
|
|
BeanUtils.copyProperties(productdismantleRecordDetailbDO, 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(productdismantleRecordMainDO.getBusinessType()); |
|
|
|
|
|
transactionCreateReqVO.setOwnerCode(""); |
|
|
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
|
|
transactionCreateReqVO.setPackingNumber(productdismantleRecordDetailbDO.getPackingNumber()); |
|
|
|
|
|
transactionCreateReqVO.setBatch(productdismantleRecordDetailbDO.getBatch()); |
|
|
|
|
|
transactionCreateReqVO.setContainerNumber(""); |
|
|
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
|
|
transactionCreateReqVO.setWarehouseCode(productdismantleRecordMainDO.getFromWarehouseCode()); |
|
|
|
|
|
transactionCreateReqVO.setLocationCode(productdismantleRecordDetailbDO.getToLocationCode()); |
|
|
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (detailbDOList != null && detailbDOList.size() > 0) { |
|
|
|
|
|
productdismantleRecordDetailbMapper.insertBatch(detailbDOList); |
|
|
|
|
|
} |
|
|
|
|
|
//增加库存事务
|
|
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
|
|
} else { |
|
|
|
|
|
throw new UtilException("该功能无任务!请到单据设置管理-申请设置功能中重新设置!"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|