|
@ -1,6 +1,8 @@ |
|
|
package com.win.module.wms.service.productionreturnRequest; |
|
|
package com.win.module.wms.service.productionreturnRequest; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
|
|
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.framework.common.util.validation.ValidationUtils; |
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
@ -15,7 +17,11 @@ import com.win.module.wms.convert.productionreturnRequest.ProductionreturnReques |
|
|
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; |
|
|
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestDetailConvert; |
|
|
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; |
|
|
import com.win.module.wms.convert.productionreturnRequest.ProductionreturnRequestMainConvert; |
|
|
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.issueRequest.IssueRequestDetailDO; |
|
|
|
|
|
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.itembasic.ItembasicDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; |
|
|
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; |
|
|
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; |
|
|
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; |
|
|
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; |
|
|
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.productionreturnRequest.ProductionreturnRequestDetailDO; |
|
@ -25,24 +31,29 @@ import com.win.module.wms.dal.dataobject.productionreturnRequest.Productionretur |
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; |
|
|
import com.win.module.wms.dal.dataobject.workshop.WorkshopDO; |
|
|
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; |
|
|
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; |
|
|
|
|
|
import com.win.module.wms.dal.mysql.productionreturnJob.ProductionreturnJobMainMapper; |
|
|
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; |
|
|
import com.win.module.wms.dal.mysql.productionreturnRequest.ProductionreturnRequestMainMapper; |
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
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.service.businesstype.BusinesstypeService; |
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
import com.win.module.wms.service.productionline.ProductionlineService; |
|
|
import com.win.module.wms.service.productionline.ProductionlineService; |
|
|
import com.win.module.wms.service.productionlineitem.ProductionlineitemService; |
|
|
import com.win.module.wms.service.productionlineitem.ProductionlineitemService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
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.service.workstation.WorkstationService; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
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.validation.Validator; |
|
|
import javax.validation.Validator; |
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Collection; |
|
|
import java.util.Collection; |
|
@ -60,6 +71,10 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
@Validated |
|
|
@Validated |
|
|
public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService { |
|
|
public class ProductionreturnRequestMainServiceImpl implements ProductionreturnRequestMainService { |
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
private ItempackagingService itempackagingService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ProductionreturnJobMainMapper productionreturnJobMainMapper; |
|
|
@Resource |
|
|
@Resource |
|
|
private BusinesstypeService businesstypeService; |
|
|
private BusinesstypeService businesstypeService; |
|
|
@Resource |
|
|
@Resource |
|
@ -86,6 +101,8 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
private SerialNumberApi serialNumberApi; |
|
|
private SerialNumberApi serialNumberApi; |
|
|
@Resource |
|
|
@Resource |
|
|
private TrendsApi trendsApi; |
|
|
private TrendsApi trendsApi; |
|
|
|
|
|
|
|
|
|
|
|
private String itemCodetype; |
|
|
@Override |
|
|
@Override |
|
|
@Transactional |
|
|
@Transactional |
|
|
public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) { |
|
|
public Long createProductionreturnRequestMain(ProductionreturnRequestMainCreateReqVO createReqVO) { |
|
@ -102,7 +119,7 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { |
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了合格退料申请", TrendsTypeEnum.CREATE); |
|
|
trendsApi.createTrends(productionreturnRequestMainDO.getId(), "ProductionreturnRequest", "增加了生产退料申请", TrendsTypeEnum.CREATE); |
|
|
// 返回
|
|
|
// 返回
|
|
|
return createReqVO.getId(); |
|
|
return createReqVO.getId(); |
|
|
} |
|
|
} |
|
@ -112,8 +129,14 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) { |
|
|
public void updateProductionreturnRequestMain(ProductionreturnRequestMainUpdateReqVO updateReqVO) { |
|
|
// 校验存在
|
|
|
// 校验存在
|
|
|
validateProductionreturnRequestMainExists(updateReqVO.getId()); |
|
|
validateProductionreturnRequestMainExists(updateReqVO.getId()); |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest"); |
|
|
BusinesstypeDO businesstypeDO = null; |
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("IssueRequest"); |
|
|
// 判断是否合格退料
|
|
|
|
|
|
if (updateReqVO.getIsOK()) { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToStoreRequest"); |
|
|
|
|
|
} else { |
|
|
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ReturnToHOldRequest"); |
|
|
|
|
|
} |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("MaterialReturnRequest"); |
|
|
ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
ProductionreturnRequestMainDO productionreturnRequestMainDO = validatorMainMethod(updateReqVO, businesstypeDO, requestsettingDO); |
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { |
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(productionreturnRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
@ -133,10 +156,12 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
productionreturnRequestMainMapper.deleteById(id); |
|
|
productionreturnRequestMainMapper.deleteById(id); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void validateProductionreturnRequestMainExists(Long id) { |
|
|
private ProductionreturnRequestMainDO validateProductionreturnRequestMainExists(Long id) { |
|
|
if (productionreturnRequestMainMapper.selectById(id) == null) { |
|
|
ProductionreturnRequestMainDO productionreturnRequestMainDO = productionreturnRequestMainMapper.selectById(id); |
|
|
|
|
|
if ( productionreturnRequestMainDO == null) { |
|
|
throw exception(PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS); |
|
|
throw exception(PRODUCTIONRETURN_REQUEST_MAIN_NOT_EXISTS); |
|
|
} |
|
|
} |
|
|
|
|
|
return productionreturnRequestMainDO; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -219,18 +244,52 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
//子表校验
|
|
|
//子表校验
|
|
|
List<ProductionreturnRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<ProductionreturnRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
List<ProductionreturnRequestDetailDO> subDOList = ProductionreturnRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
|
|
// 子表 物品类型
|
|
|
|
|
|
itemCodetype = ""; |
|
|
for (ProductionreturnRequestDetailDO detailDO : subDOList) { |
|
|
for (ProductionreturnRequestDetailDO detailDO : subDOList) { |
|
|
validatorDetailMethod(detailDO,mainDo); |
|
|
validatorDetailMethod(detailDO,mainDo); |
|
|
} |
|
|
} |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCTION_RETURN_REQUEST.getCode()); |
|
|
mainDo.setNumber(number); |
|
|
mainDo.setNumber(number); |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "审批中")); |
|
|
productionreturnRequestMainMapper.insert(mainDo); |
|
|
productionreturnRequestMainMapper.insert(mainDo); |
|
|
|
|
|
// 拆解后 子表集合
|
|
|
|
|
|
List<ProductionreturnRequestDetailDO> subDOListPack = new ArrayList<>(); |
|
|
for (ProductionreturnRequestDetailDO detailDO : subDOList) { |
|
|
for (ProductionreturnRequestDetailDO detailDO : subDOList) { |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
|
|
|
// 获取标包信息
|
|
|
|
|
|
ItempackagingDO itemPackagingDO = itempackagingService.selectItemPackagingExist(detailDO.getItemCode()); |
|
|
|
|
|
// 获取标包数量
|
|
|
|
|
|
BigDecimal itemPackagingDOQty = itemPackagingDO.getStdPackQty(); |
|
|
|
|
|
// 库存余额输入数量
|
|
|
|
|
|
BigDecimal detailDOQty = detailDO.getQty(); |
|
|
|
|
|
// 判断 库存余额输入的数量 大于 标包数 进行拆分
|
|
|
|
|
|
if (detailDO.getQty().compareTo(itemPackagingDO.getStdPackQty()) == 1 ) { |
|
|
|
|
|
// 库存余额 除以 标包 保留0位 具体子表 例如:保留1位 1.60-1.6 1.61-1.7 1.66-1.7 -1.62--1.7
|
|
|
|
|
|
// 拆分数据总条数 bdCount
|
|
|
|
|
|
BigDecimal bdCount = detailDOQty.divide(itemPackagingDOQty,0, BigDecimal.ROUND_UP); |
|
|
|
|
|
int forInt = bdCount.intValue(); |
|
|
|
|
|
// 最后一条数据 插入数量 residueQty = 库存余额数 - (拆分数据总条数-1)*标包数
|
|
|
|
|
|
BigDecimal residueQty = detailDOQty.subtract(itemPackagingDOQty.multiply(bdCount.subtract(new BigDecimal(1)))); |
|
|
|
|
|
for(int i = 0; i < forInt; i++) { |
|
|
|
|
|
ProductionreturnRequestDetailDO detailDOPack = new ProductionreturnRequestDetailDO(); |
|
|
|
|
|
BeanUtils.copyProperties(detailDO, detailDOPack); |
|
|
|
|
|
// 最后一条数据 插入数量
|
|
|
|
|
|
if (i == (forInt-1) ) { |
|
|
|
|
|
detailDOPack.setQty(residueQty); |
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
|
|
detailDOPack.setQty(itemPackagingDO.getStdPackQty()); |
|
|
|
|
|
} |
|
|
|
|
|
subDOListPack.add(detailDOPack); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
// 判断 库存余额输入的数量 小于等于 标包数
|
|
|
|
|
|
subDOListPack.add(detailDO); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
productionreturnRequestDetailMapper.insertBatch(subDOList); |
|
|
productionreturnRequestDetailMapper.insertBatch(subDOListPack); |
|
|
return mainDo; |
|
|
return mainDo; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -254,16 +313,24 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); |
|
|
this.ifUomSuccess(itembasicDO.getUom(), detailDo.getUom()); |
|
|
validatorProductionline(detailDo.getProductionLineCode()); |
|
|
// 校验 子表数据 物品类型要一致性(创建标签时 前端好判断 否则前端无法实现)
|
|
|
ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode()); |
|
|
if (itemCodetype.equals("")) { |
|
|
detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode()); |
|
|
itemCodetype = itembasicDO.getType(); |
|
|
WorkstationDO workstationDO = validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); |
|
|
|
|
|
if(workstationDO != null){ |
|
|
|
|
|
detailDo.setFromLocationCode(workstationDO.getRawLocationCode()); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
if (!itemCodetype.equals(itembasicDO.getType())) { |
|
|
|
|
|
throw new UtilException("物品代码:" + detailDo.getItemCode() + " 物品类型不一致!"); |
|
|
|
|
|
} |
|
|
|
|
|
validatorProductionline(detailDo.getProductionLineCode()); |
|
|
|
|
|
// ProductionlineitemDO productionlineitemDO = validatorProductionlineitem(detailDo.getProductionLineCode(), detailDo.getItemCode());
|
|
|
|
|
|
// detailDo.setFromLocationCode(productionlineitemDO.getRawLocationCode());
|
|
|
|
|
|
validatorWorkStation(mainDo.getWorkshopCode(), detailDo.getProductionLineCode(), detailDo.getWorkStationCode()); |
|
|
|
|
|
// if(workstationDO != null){
|
|
|
|
|
|
// detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
|
|
|
|
|
|
// }
|
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
List<String> inventoryStatus = new ArrayList<>(); |
|
|
inventoryStatus.add(detailDo.getInventoryStatus()); |
|
|
inventoryStatus.add(detailDo.getInventoryStatus()); |
|
|
validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus); |
|
|
// TODO:管理精度校验, 暂时注释
|
|
|
|
|
|
// validatorManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(), inventoryStatus);
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -393,4 +460,157 @@ public class ProductionreturnRequestMainServiceImpl implements ProductionreturnR |
|
|
private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List<String> inventoryStatus){ |
|
|
private void validatorManagementAccuracy(String itemCode,String packingNumber,String batch,String locationCode,List<String> inventoryStatus){ |
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); |
|
|
jobUtils.selectlocationReturnManagementAccuracy(itemCode,packingNumber,batch,locationCode,inventoryStatus); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer closeProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.close(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//增加操作记录
|
|
|
|
|
|
trendsApi.createTrends(id, "productionreturnRequest", "关闭了生产收料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer reAddProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.reAdd(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
|
|
trendsApi.createTrends(id, "issueRequest", "打开了生产收料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer submitProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.submit(mainDO.getAutoAgree(), mainDO.getAutoExecute()); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//调用自动执行方法
|
|
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
// 审批通过 生成标签
|
|
|
|
|
|
this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
|
|
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
|
|
} |
|
|
|
|
|
trendsApi.createTrends(id, "issueRequest", "提交了生产收料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer refusedProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.refused(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
trendsApi.createTrends(id, "issueRequest", "驳回了生产收料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer agreeProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.agree(mainDO.getAutoExecute()); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_MAIN_ERROR); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
// 审批通过 生成标签
|
|
|
|
|
|
this.generateLabel(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
|
|
//调用自动执行方法
|
|
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
|
|
} |
|
|
|
|
|
trendsApi.createTrends(id, "issueRequest", "审批通过了生产收料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public Integer handleProductionreturnRequestMain(Long id) { |
|
|
|
|
|
ProductionreturnRequestMainDO mainDO = validateProductionreturnRequestMainExists(id); |
|
|
|
|
|
// 校验存在存在下级单据
|
|
|
|
|
|
Long count = productionreturnJobMainMapper.selectByRequestNumber(mainDO.getNumber()); |
|
|
|
|
|
if(count > 0) { |
|
|
|
|
|
throw new ServiceException(PRODUCTIONRETURN_REQUEST_JOB_EXISTS); |
|
|
|
|
|
} |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(mainDO.getStatus()); |
|
|
|
|
|
boolean flag = requestStatusState.handle(); |
|
|
|
|
|
if(!flag) { |
|
|
|
|
|
throw new ServiceException(ISSUE_REQUEST_MAIN_CANNOT_HANDLE); |
|
|
|
|
|
} |
|
|
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
//调用执行方法
|
|
|
|
|
|
this.generateJob(mainDO, productionreturnRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
|
|
trendsApi.createTrends(id, "issueRequest", "执行了发料申请", TrendsTypeEnum.UPDATE); |
|
|
|
|
|
return productionreturnRequestMainMapper.updateById(mainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 创建标签 |
|
|
|
|
|
* @param mainDO |
|
|
|
|
|
* @param detailDO |
|
|
|
|
|
*/ |
|
|
|
|
|
private void generateLabel (ProductionreturnRequestMainDO mainDO, List<ProductionreturnRequestDetailDO> detailDO) { |
|
|
|
|
|
// 查询 mainDO.packingNumber 在包装表中,是否存在,如果存在不创建标签,如果不存在,创建
|
|
|
|
|
|
// PackageDO packageDO =
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 创建任务 OR 创建记录 |
|
|
|
|
|
* @param mainDO |
|
|
|
|
|
* @param detailDO |
|
|
|
|
|
*/ |
|
|
|
|
|
private void generateJob (ProductionreturnRequestMainDO mainDO, List<ProductionreturnRequestDetailDO> detailDO) { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<ProductionreturnRequestMainDO> getProductionreturnRequestMainList(CustomConditions conditions) { |
|
|
|
|
|
return productionreturnRequestMainMapper.selectSeniorList(conditions); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|