|
|
@ -1,24 +1,75 @@ |
|
|
|
package com.win.module.wms.service.productrepairRequest; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
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.productrepairRequest.vo.ProductrepairRequestMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestMainExportReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestMainPageReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestMainUpdateReqVO; |
|
|
|
import com.win.framework.mybatis.core.util.MyBatisUtils; |
|
|
|
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.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.bom.vo.BomExportReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRecord.vo.ProductrepairRecordDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRecord.vo.ProductrepairRecordMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.productrepairRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.transaction.vo.TransactionCreateReqVO; |
|
|
|
import com.win.module.wms.convert.productrepairRecord.ConsumeRecordDetailbConvert; |
|
|
|
import com.win.module.wms.convert.productrepairRecord.ProductrepairRecordDetailConvert; |
|
|
|
import com.win.module.wms.convert.productrepairRecord.ProductrepairRecordMainConvert; |
|
|
|
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.balance.BalanceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.bom.BomDO; |
|
|
|
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.productionline.ProductionlineDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productreceiptRequest.ProductreceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRecord.ConsumeRecordDetailbDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRecord.ProductrepairRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.productrepairRecord.ProductrepairRecordMainDO; |
|
|
|
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.productrepairRecord.ConsumeRecordDetailbMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productrepairRecord.ProductrepairRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productrepairRecord.ProductrepairRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestDetailaMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestDetailbMapper; |
|
|
|
import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestMainMapper; |
|
|
|
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.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.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTREPAIR_REQUEST_MAIN_NOT_EXISTS; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 制品返修申请主 Service 实现类 |
|
|
@ -31,23 +82,258 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest |
|
|
|
|
|
|
|
@Resource |
|
|
|
private ProductrepairRequestMainMapper productrepairRequestMainMapper; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
@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 SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private ProductrepairRequestDetailaMapper productrepairRequestDetailaMapper; |
|
|
|
@Resource |
|
|
|
private ProductrepairRequestDetailbMapper productrepairRequestDetailbMapper; |
|
|
|
@Resource |
|
|
|
private RecordsettingService recordsettingService; |
|
|
|
@Resource |
|
|
|
private ProductrepairRecordMainMapper productrepairRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private ProductrepairRecordDetailMapper productrepairRecordDetailMapper; |
|
|
|
@Resource |
|
|
|
private ConsumeRecordDetailbMapper consumeRecordDetailbMapper; |
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Resource |
|
|
|
private TransactionService transactionService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createProductrepairRequestMain(ProductrepairRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
ProductrepairRequestMainDO productrepairRequestMain = ProductrepairRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
productrepairRequestMainMapper.insert(productrepairRequestMain); |
|
|
|
// 返回
|
|
|
|
return productrepairRequestMain.getId(); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("ProductRepairRequest"); |
|
|
|
ProductrepairRequestMainDO productrepairRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productrepairRequestMainDO.getStatus())) { |
|
|
|
List<ProductrepairRequestDetailaDO> detailaDOList = productrepairRequestDetailaMapper.selectList(productrepairRequestMainDO.getId()); |
|
|
|
this.generateJob(productrepairRequestMainDO, detailaDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(productrepairRequestMainDO.getId(), "ProductRepairRequest", "增加了制品返修申请", TrendsTypeEnum.CREATE); |
|
|
|
return productrepairRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
private void generateJob(ProductrepairRequestMainDO mainDO, List<ProductrepairRequestDetailaDO> detailaDOList) { |
|
|
|
//跳过任务直接生成记录
|
|
|
|
if("TRUE".equals(mainDO.getDirectCreateRecord())) { |
|
|
|
ProductrepairRecordMainCreateReqVO productrepairRecordMainCreateReqVO = new ProductrepairRecordMainCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(mainDO, productrepairRecordMainCreateReqVO); |
|
|
|
productrepairRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.TRANSFER_RECEIPT_RECORD.getCode()); |
|
|
|
productrepairRecordMainCreateReqVO.setNumber(number); |
|
|
|
//增加业务类型
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRecord"); |
|
|
|
productrepairRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
productrepairRecordMainCreateReqVO.setOutTransactionType(businesstypeDO.getOutTransactionType()); |
|
|
|
productrepairRecordMainCreateReqVO.setInTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
String interFaceType = recordsettingService.selectRecordsettingExist("ProductRepairRecord").getInterfaceType(); |
|
|
|
productrepairRecordMainCreateReqVO.setInterfaceType(interFaceType); |
|
|
|
productrepairRecordMainCreateReqVO.setExecuteTime(LocalDateTime.now()); |
|
|
|
productrepairRecordMainCreateReqVO.setActiveDate(LocalDateTime.now()); |
|
|
|
productrepairRecordMainCreateReqVO.setAvailable("TRUE"); |
|
|
|
productrepairRecordMainCreateReqVO.setDueTime(mainDO.getDueTime()); |
|
|
|
productrepairRecordMainCreateReqVO.setId(null); |
|
|
|
productrepairRecordMainCreateReqVO.setCreator(null); |
|
|
|
productrepairRecordMainCreateReqVO.setCreateTime(null); |
|
|
|
ProductrepairRecordMainDO productrepairRecordMainDO = ProductrepairRecordMainConvert.INSTANCE.convert(productrepairRecordMainCreateReqVO); |
|
|
|
productrepairRecordMainMapper.insert(productrepairRecordMainDO); |
|
|
|
|
|
|
|
//库存事务
|
|
|
|
List<TransactionCreateReqVO> transactionCreateReqVOList = new ArrayList<>(); |
|
|
|
for(ProductrepairRequestDetailaDO productrepairRequestDetailaDO : detailaDOList) { |
|
|
|
ProductrepairRecordDetailCreateReqVO productrepairRecordDetailCreateReqVO = new ProductrepairRecordDetailCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productrepairRequestDetailaDO, productrepairRecordDetailCreateReqVO); |
|
|
|
productrepairRecordDetailCreateReqVO.setNumber(number); |
|
|
|
productrepairRecordDetailCreateReqVO.setMasterId(String.valueOf(productrepairRecordMainDO.getId())); |
|
|
|
productrepairRecordDetailCreateReqVO.setInventoryStatus(productrepairRequestDetailaDO.getInventoryStatus()); |
|
|
|
ProductrepairRecordDetailDO productrepairRecordDetailDO = ProductrepairRecordDetailConvert.INSTANCE.convert(productrepairRecordDetailCreateReqVO); |
|
|
|
productrepairRecordDetailMapper.insert(productrepairRecordDetailDO); |
|
|
|
// 查询二级子表数据
|
|
|
|
List<ProductrepairRequestDetailbDO> productrepairRequestDetailbDOList = productrepairRequestDetailbMapper.selectList(productrepairRequestDetailaDO.getId()); |
|
|
|
for(ProductrepairRequestDetailbDO productrepairRequestDetailbDO:productrepairRequestDetailbDOList){ |
|
|
|
ConsumeRecordDetailbDO consumeRecordDetailbDO = ConsumeRecordDetailbConvert.INSTANCE.convert(productrepairRequestDetailbDO); |
|
|
|
consumeRecordDetailbDO.setMasterId(String.valueOf(productrepairRecordDetailDO.getId())); |
|
|
|
consumeRecordDetailbMapper.insert(consumeRecordDetailbDO); |
|
|
|
} |
|
|
|
//添加库存事务list
|
|
|
|
TransactionCreateReqVO transactionCreateReqVO = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(productrepairRecordDetailDO, 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(productrepairRecordMainDO.getBusinessType()); |
|
|
|
transactionCreateReqVO.setOwnerCode(productrepairRecordDetailDO.getFromOwnerCode()); |
|
|
|
transactionCreateReqVO.setRecordNumber(number); |
|
|
|
transactionCreateReqVO.setId(null); |
|
|
|
transactionCreateReqVO.setPackingNumber(productrepairRecordDetailDO.getPackingNumber()); |
|
|
|
transactionCreateReqVO.setBatch(productrepairRecordDetailDO.getBatch()); |
|
|
|
transactionCreateReqVO.setContainerNumber(productrepairRecordDetailDO.getContainerNumber()); |
|
|
|
transactionCreateReqVO.setAmount(BigDecimal.ZERO); |
|
|
|
transactionCreateReqVO.setWarehouseCode(productrepairRecordMainDO.getFromWarehouseCode()); |
|
|
|
transactionCreateReqVO.setLocationCode(productrepairRecordDetailDO.getToLocationCode()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
} |
|
|
|
//增加库存事务
|
|
|
|
transactionService.createTransaction(transactionCreateReqVOList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private ProductrepairRequestMainDO validatorToCreate(ProductrepairRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
// DBT——>DBT3("ProductRepairRequest")
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRequest"); |
|
|
|
ProductrepairRequestMainDO productrepairRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
// 子表处理逻辑 ProductrepairRequestDetailaDO
|
|
|
|
List<ProductrepairRequestDetailaCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
for(ProductrepairRequestDetailaCreateReqVO productrepairRequestDetailaCreateReqVO:subList){ |
|
|
|
validateDetailMethod(productrepairRequestMainDO, productrepairRequestDetailaCreateReqVO,businesstypeDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
productrepairRequestMainDO.setNumber(number); |
|
|
|
productrepairRequestMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
productrepairRequestMainMapper.insert(productrepairRequestMainDO); |
|
|
|
for(ProductrepairRequestDetailaCreateReqVO productrepairRequestDetailaCreateReqVO:subList){ |
|
|
|
ProductrepairRequestDetailaDO productrepairRequestDetailaDO = ProductrepairRequestDetailaConvert.INSTANCE.convert(productrepairRequestDetailaCreateReqVO); |
|
|
|
productrepairRequestDetailaDO.setMasterId(productrepairRequestMainDO.getId()); |
|
|
|
productrepairRequestDetailaDO.setNumber(productrepairRequestMainDO.getNumber()); |
|
|
|
productrepairRequestDetailaDO.setInventoryStatus(businesstypeDO.getOutInventoryStatuses()); |
|
|
|
productrepairRequestDetailaMapper.insert(productrepairRequestDetailaDO); |
|
|
|
List<ProductrepairRequestDetailbCreateReqVO> consumereDetailbList = productrepairRequestDetailaCreateReqVO.getChildList(); |
|
|
|
List<ProductrepairRequestDetailbDO> childList = new ArrayList<>(); |
|
|
|
for(ProductrepairRequestDetailbCreateReqVO productrepairRequestDetailbCreateReqVO:consumereDetailbList){ |
|
|
|
ProductrepairRequestDetailbDO productrepairRequestDetailbDO = ProductrepairRequestDetailbConvert.INSTANCE.convert(productrepairRequestDetailbCreateReqVO); |
|
|
|
productrepairRequestDetailbDO.setMasterId(productrepairRequestDetailaDO.getId()); |
|
|
|
childList.add(productrepairRequestDetailbDO); |
|
|
|
} |
|
|
|
productrepairRequestDetailbMapper.insertBatch(childList); |
|
|
|
} |
|
|
|
return productrepairRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
private void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO 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(PRODUCTREPAIR_REQUEST_DETAILA_UOM_ERROR,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); |
|
|
|
// 校验--物品类型 DBT——>DBT2——>IT
|
|
|
|
jobUtils.selectItembasicExist(itembasicDO.getType(),businesstypeDO); |
|
|
|
// 校验--来源库位 DBT——>DBT2——>LO
|
|
|
|
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO); |
|
|
|
// 校验--库存状态 DBT——>DBT2——>ISO
|
|
|
|
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateBalance(ProductrepairRequestDetailaBaseVO detailDo) { |
|
|
|
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); |
|
|
|
if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){ |
|
|
|
// 返修数量【qty】不能大于库存数量【banlance.qty】
|
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty()); |
|
|
|
} |
|
|
|
}else { |
|
|
|
// 余额校验异常
|
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private ProductrepairRequestMainDO validateMainMethod(ProductrepairRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) { |
|
|
|
ProductrepairRequestMainDO productrepairRequestMainDO = ProductrepairRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
// 校验--车间
|
|
|
|
workshopService.selectWorkshopExist(productrepairRequestMainDO.getWorkshopCode()); |
|
|
|
// 校验--班组
|
|
|
|
if(StringUtils.isNotEmpty(productrepairRequestMainDO.getTeam())){ |
|
|
|
TeamDO teamDO = teamService.selectTeamExist(productrepairRequestMainDO.getTeam()); |
|
|
|
if(teamDO == null){ |
|
|
|
// 提示:班组【team】无效
|
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_MAIN_TEAM_NOT_INVALID); |
|
|
|
} |
|
|
|
} |
|
|
|
// 校验--班次
|
|
|
|
if(StringUtils.isNotEmpty(productrepairRequestMainDO.getShift())){ |
|
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(productrepairRequestMainDO.getShift()); |
|
|
|
if(shiftDO == null){ |
|
|
|
// 提示:班次【shift】无效
|
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_MAIN_SHIFT_NOT_INVALID); |
|
|
|
} |
|
|
|
} |
|
|
|
// 校验--截止时间
|
|
|
|
validordurtime(productrepairRequestMainDO.getDueTime()); |
|
|
|
// 赋值逻辑
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
requestStatusState.newObject(productrepairRequestMainDO.getAutoCommit(), productrepairRequestMainDO.getAutoAgree(), productrepairRequestMainDO.getAutoExecute()); |
|
|
|
productrepairRequestMainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
productrepairRequestMainDO.setRequestTime(LocalDateTime.now()); |
|
|
|
productrepairRequestMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
productrepairRequestMainDO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
productrepairRequestMainDO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
productrepairRequestMainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
productrepairRequestMainDO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
productrepairRequestMainDO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
productrepairRequestMainDO.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
productrepairRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
productrepairRequestMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());//入库库存状态范围
|
|
|
|
productrepairRequestMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());//出库库存状态范围
|
|
|
|
return productrepairRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
private void validordurtime(LocalDateTime durtime){ |
|
|
|
if(!durtime.isAfter(LocalDateTime.now())){ |
|
|
|
throw exception(TIME_AFTER,LocalDateTime.now(),durtime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public void updateProductrepairRequestMain(ProductrepairRequestMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
validateProductrepairRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
ProductrepairRequestMainDO updateObj = ProductrepairRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(updateObj.getStatus())) { |
|
|
|
List<ProductrepairRequestDetailaDO> detailaDOList = productrepairRequestDetailaMapper.selectList(updateObj.getId()); |
|
|
|
this.generateJob(updateObj, detailaDOList); |
|
|
|
} |
|
|
|
productrepairRequestMainMapper.updateById(updateObj); |
|
|
|
trendsApi.createTrends(updateObj.getId(), "ProductRepairRequest", "更新了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -58,10 +344,12 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest |
|
|
|
productrepairRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateProductrepairRequestMainExists(Long id) { |
|
|
|
if (productrepairRequestMainMapper.selectById(id) == null) { |
|
|
|
private ProductrepairRequestMainDO validateProductrepairRequestMainExists(Long id) { |
|
|
|
ProductrepairRequestMainDO productrepairRequestMainDO = productrepairRequestMainMapper.selectById(id); |
|
|
|
if (productrepairRequestMainDO == null) { |
|
|
|
throw exception(PRODUCTREPAIR_REQUEST_MAIN_NOT_EXISTS); |
|
|
|
} |
|
|
|
return productrepairRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -88,4 +376,123 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest |
|
|
|
public PageResult<ProductrepairRequestMainDO> getProductrepairRequestMainSenior(CustomConditions conditions) { |
|
|
|
return productrepairRequestMainMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer closeProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "关闭了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer reAddeProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "打开了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer submitProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<ProductrepairRequestDetailaDO> detailaDOList = productrepairRequestDetailaMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailaDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "提交了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer refusedProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "驳回了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer agreeProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoAgree()); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
List<ProductrepairRequestDetailaDO> detailaDOList = productrepairRequestDetailaMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailaDOList); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "审批通过了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public Integer handleProductrepairRequestMain(Long id) { |
|
|
|
ProductrepairRequestMainDO mainDO = validateProductrepairRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PRODUCTREPAIR_REQUEST_MAIN_STATUS_ERROR); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用执行方法
|
|
|
|
List<ProductrepairRequestDetailaDO> detailaDOList = productrepairRequestDetailaMapper.selectList(mainDO.getId()); |
|
|
|
this.generateJob(mainDO, detailaDOList); |
|
|
|
trendsApi.createTrends(id, "ProductRepairRequest", "执行了制品返修申请", TrendsTypeEnum.UPDATE); |
|
|
|
return productrepairRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<ProductrepairRequestBomRespVO> getBomInfoPage(ProductrepairRequestDetailaPageReqVO pageVO) { |
|
|
|
IPage<ProductrepairRequestBomRespVO> myPage = MyBatisUtils.buildPage(pageVO); |
|
|
|
List<Map<String,Object>> list = jobUtils.bomDismantleList(pageVO.getItemCode(),""); |
|
|
|
List<ProductrepairRequestBomRespVO> resultList = new ArrayList<>(); |
|
|
|
for(Map<String,Object> map:list){ |
|
|
|
ProductrepairRequestBomRespVO productrepairRequestBomRespVO = new ProductrepairRequestBomRespVO(); |
|
|
|
productrepairRequestBomRespVO.setItemCode(map.get("itemCode") != null?map.get("itemCode").toString():""); |
|
|
|
productrepairRequestBomRespVO.setUom(map.get("uom") != null?map.get("uom").toString():""); |
|
|
|
productrepairRequestBomRespVO.setQty(map.get("qty") != null?map.get("qty").toString():""); |
|
|
|
productrepairRequestBomRespVO.setVersion(map.get("version") != null?map.get("version").toString():""); |
|
|
|
resultList.add(productrepairRequestBomRespVO); |
|
|
|
} |
|
|
|
myPage.setRecords(resultList); |
|
|
|
myPage.setTotal(resultList.size()); |
|
|
|
PageResult<ProductrepairRequestBomRespVO> pageResult = new PageResult(myPage.getRecords(),myPage.getTotal()); |
|
|
|
return pageResult; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|