|
|
@ -1,14 +1,16 @@ |
|
|
|
package com.win.module.wms.service.purchaseclaimRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.exceptions.UtilException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
|
import com.win.framework.dict.core.util.DictFrameworkUtils; |
|
|
|
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.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.purchaseclaimRequest.vo.*; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchaseclaimRequest.PurchaseclaimRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
@ -17,9 +19,11 @@ import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplierdeliverRecord.SupplierdeliverRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchaseclaimRequest.PurchaseclaimRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.purchase.PurchaseMainService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
@ -28,7 +32,6 @@ import com.win.module.wms.service.supplierdeliverRecord.SupplierdeliverRecordMai |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
@ -76,42 +79,42 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
private JobUtils jobUtils; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private TrendsApi trendsApi; |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Long createPurchaseclaimRequestMain(PurchaseclaimRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入主表
|
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMain = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
purchaseclaimRequestMain.setNumber(number); |
|
|
|
purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMain); |
|
|
|
// 插入子表
|
|
|
|
List<PurchaseclaimRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseclaimRequestDetailDO> subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (PurchaseclaimRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(purchaseclaimRequestMain.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); |
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToCreate(createReqVO,requestsettingDO); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
purchaseclaimRequestDetailMapper.insertBatch(subDOList); |
|
|
|
// 返回
|
|
|
|
return purchaseclaimRequestMain.getId(); |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); |
|
|
|
return purchaseclaimRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { |
|
|
|
public Long updatePurchaseclaimRequestMain(PurchaseclaimRequestMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); |
|
|
|
// 校验存在,如子表需要也再此校验
|
|
|
|
validatePurchaseclaimRequestMainExists(updateReqVO.getId()); |
|
|
|
validatorPurchaseclaimRequestMainExists(updateReqVO.getId()); |
|
|
|
// 更新主表
|
|
|
|
PurchaseclaimRequestMainDO updateObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
return purchaseclaimRequestMainMapper.updateById(updateObj); |
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorToUpdate(updateReqVO, requestsettingDO); |
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(purchaseclaimRequestMainDO.getStatus())) { |
|
|
|
|
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); |
|
|
|
return purchaseclaimRequestMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer deletePurchaseclaimRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
validatePurchaseclaimRequestMainExists(id); |
|
|
|
validatorPurchaseclaimRequestMainExists(id); |
|
|
|
// 删除子表数据
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
map.put("master_id", id); |
|
|
@ -120,11 +123,9 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
return purchaseclaimRequestMainMapper.deleteById(id); |
|
|
|
} |
|
|
|
|
|
|
|
private void validatePurchaseclaimRequestMainExists(Long id) { |
|
|
|
private void validatorPurchaseclaimRequestMainExists(Long id) { |
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectById(id); |
|
|
|
if (purchaseclaimRequestMainDO == null) { |
|
|
|
return; |
|
|
|
}else { |
|
|
|
throw exception(PURCHASECLAIM_REQUEST_MAIN_EXISTS); |
|
|
|
} |
|
|
|
} |
|
|
@ -154,143 +155,207 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
return purchaseclaimRequestMainMapper.selectList(exportReqVO); |
|
|
|
} |
|
|
|
|
|
|
|
private void selectUomExist(String itemUom,String uom) { |
|
|
|
if(itemUom.equals(uom)){ |
|
|
|
return; |
|
|
|
}else { |
|
|
|
throw new UtilException("提示单位"+ uom + "错误,应该是" + itemUom); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { |
|
|
|
if(shippedQty.add(qty).compareTo(orderQty) > 0){ |
|
|
|
throw new UtilException("订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); |
|
|
|
} |
|
|
|
} |
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<PurchaseclaimRequestImportErrorVO> importPurchaseclaimRequestList(List<PurchaseclaimRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
|
} |
|
|
|
List<PurchaseclaimRequestImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
String messageMain = ""; |
|
|
|
//主表校验方法
|
|
|
|
if(mode != null){ |
|
|
|
try { |
|
|
|
validatePurchaseclaimRequestMainExists(null); |
|
|
|
} catch (Exception ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
supplierService.selectSupplier(createReqVO.getSupplierCode()); |
|
|
|
} catch (Exception ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validatorPurchaseclaimRequestMainImport(mainDo, businesstypeDO); |
|
|
|
List<PurchaseclaimRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseclaimRequestDetailDO> subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (PurchaseclaimRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validatorPurchaseclaimRequestDetailImport(detailDO, mainDo); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
PurchaseclaimRequestImportErrorVO importErrorVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
List<PurchaseclaimRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseclaimRequestDetailDO> subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 新增子表数据
|
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
purchaseclaimRequestMainMapper.insert(mainDo); |
|
|
|
for (PurchaseclaimRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
|
|
|
|
//子表校验方法
|
|
|
|
try { |
|
|
|
supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(createReqVO.getSupplierCode(), |
|
|
|
detailDO.getNumber(), detailDO.getItemCode(), detailDO.getPoNumber(), detailDO.getPoLine()); |
|
|
|
} catch (Exception ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDO.getItemCode()); |
|
|
|
detailDO.setProjectCode(itembasicDO.getProject()); |
|
|
|
try { |
|
|
|
selectUomExist(itembasicDO.getUom(), detailDO.getUom()); |
|
|
|
} catch (Exception ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try { |
|
|
|
PurchaseDetailDO purchaseDetailDO = purchaseMainService.selectPurchaseDetailDoExist(detailDO.getNumber(), createReqVO.getSupplierCode() |
|
|
|
, detailDO.getItemCode(), detailDO.getPoLine()); |
|
|
|
try { |
|
|
|
ifPlanQtyBigThanOrderQty(detailDO.getPoLine(), purchaseDetailDO.getShippedQty(), detailDO.getQty(), purchaseDetailDO.getOrderQty()); |
|
|
|
}catch (Exception ex){ |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
}catch (Exception ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
try{ |
|
|
|
ValidationUtils.validate(validator,createReqVO); |
|
|
|
}catch (Exception ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
PurchaseclaimRequestDetailCreateReqVO purchaseclaimRequestDetailCreateReqVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert1(detailDO); |
|
|
|
PurchaseclaimRequestImportErrorVO importVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseclaimRequestDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
//主表没有错误 写入库里
|
|
|
|
if(!messageMain.equals("") || !messageDetail.equals("")){ |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importVO.setImportRemark(messageMain.substring(0,messageMain.length()-1)); |
|
|
|
errorList.add(importVO); |
|
|
|
}else { |
|
|
|
detailDO.setNumber(createReqVO.getNumber()); |
|
|
|
detailDO.setMasterId(createReqVO.getId()); |
|
|
|
detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_REQUEST.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if(errorList.isEmpty()){ |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
PurchaseclaimRequestMainDO existPurchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectByAsnNumberAndSupplierCode(createReqVO.getAsnNumber(), createReqVO.getSupplierCode()); |
|
|
|
if(existPurchaseclaimRequestMainDO == null && mode != 3){ |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); |
|
|
|
if(businesstypeDO != null){ |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); |
|
|
|
if(requestsettingDO != null){ |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchaseclaimRequestMainMapper.insert(createObj); |
|
|
|
purchaseclaimRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
else if(existPurchaseclaimRequestMainDO != null && mode != 2){ |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); |
|
|
|
if(businesstypeDO != null){ |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); |
|
|
|
if(requestsettingDO != null){ |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
PurchaseclaimRequestMainDO createObj = PurchaseclaimRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchaseclaimRequestMainMapper.updateById(createObj); |
|
|
|
purchaseclaimRequestDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); |
|
|
|
} |
|
|
|
purchaseclaimRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if(!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
private void validatorSupplier(String SupplierCode){ |
|
|
|
supplierService.selectSupplier(SupplierCode); |
|
|
|
} |
|
|
|
|
|
|
|
private PurchaseDetailDO validatorPurchaseDetailDo(String pnumber, String psupplierCode, String pitemCode,String poLine){ |
|
|
|
return purchaseMainService.selectPurchaseDetailDoExist(pnumber, psupplierCode, pitemCode, poLine); |
|
|
|
} |
|
|
|
|
|
|
|
private ItembasicDO validatorItembasic(String itemCode){ |
|
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
private void selectUomExist(String itemUom,String uom) { |
|
|
|
if(!itemUom.equals(uom)){ |
|
|
|
throw exception(UOM_EXCEPTION,"提示单位"+ uom + "错误,应该是" + itemUom); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private SupplierdeliverRecordDetailDO validatorSupplierdeliverRecordMainDO(String psupplierCode, String pasnNumber, String pitemCode, String ppoNumber, String ppoLine){ |
|
|
|
return supplierdeliverRecordMainService.selectSupplierdeliverRecordMainDO(psupplierCode,pasnNumber,pitemCode,ppoNumber,ppoLine); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void ifPlanQtyBigThanOrderQty(String poLine, BigDecimal shippedQty, BigDecimal qty, BigDecimal orderQty) { |
|
|
|
if(shippedQty.add(qty).compareTo(orderQty) > 0){ |
|
|
|
throw exception(QTY_EXCEPTION,"订单行"+ poLine + "的已发货数量" + shippedQty + "+计划数量" + qty + "大于订单数量" + orderQty); |
|
|
|
} |
|
|
|
} |
|
|
|
//新增校验
|
|
|
|
private PurchaseclaimRequestMainDO validatorToCreate(PurchaseclaimRequestMainCreateReqVO createReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(createReqVO,businesstypeDO,requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<PurchaseclaimRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseclaimRequestDetailDO> subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
purchaseclaimRequestMainDO.setNumber(number); |
|
|
|
purchaseclaimRequestMainMapper.insert(purchaseclaimRequestMainDO); |
|
|
|
purchaseclaimRequestDetailMapper.insertBatch(subDOList); |
|
|
|
return purchaseclaimRequestMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
//修改校验
|
|
|
|
private PurchaseclaimRequestMainDO validatorToUpdate(PurchaseclaimRequestMainUpdateReqVO updateReqVO, RequestsettingDO requestsettingDO) { |
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
PurchaseclaimRequestMainDO purchaseclaimRequestMainDO = validatorMainMethod(updateReqVO,businesstypeDO,requestsettingDO); |
|
|
|
//子表校验
|
|
|
|
List<PurchaseclaimRequestDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
List<PurchaseclaimRequestDetailDO> subDOList = PurchaseclaimRequestDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for (PurchaseclaimRequestDetailDO purchaseclaimRequestDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(purchaseclaimRequestDetailDO,purchaseclaimRequestMainDO); |
|
|
|
} |
|
|
|
purchaseclaimRequestMainMapper.updateById(purchaseclaimRequestMainDO); |
|
|
|
purchaseclaimRequestDetailMapper.updateBatch(subDOList); |
|
|
|
return purchaseclaimRequestMainDO; |
|
|
|
} |
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private PurchaseclaimRequestMainDO validatorMainMethod(PurchaseclaimRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){ |
|
|
|
PurchaseclaimRequestMainDO mainDo = PurchaseclaimRequestMainConvert.INSTANCE.convert(baseVO); |
|
|
|
this.validatorSupplier(mainDo.getSupplierCode()); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validatorDetailMethod(PurchaseclaimRequestDetailDO detailDo,PurchaseclaimRequestMainDO mainDo) { |
|
|
|
validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), mainDo.getAsnNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); |
|
|
|
PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); |
|
|
|
ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验主表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPurchaseclaimRequestMainImport(PurchaseclaimRequestMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
this.validatorSupplier(mainDo.getSupplierCode()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseclaimRequest"); |
|
|
|
if (requestsettingDO == null) { |
|
|
|
message.append("未查找到采购索赔申请的相关申请设置"); |
|
|
|
} else { |
|
|
|
mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
mainDo.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseclaimRequest"); |
|
|
|
if (businesstypeDO == null) { |
|
|
|
message.append("根据单据设置未查找到采购索赔申请的相关业务类型"); |
|
|
|
} else { |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验子表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPurchaseclaimRequestDetailImport(PurchaseclaimRequestDetailDO detailDo, PurchaseclaimRequestMainDO mainDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
if(!"".equals(mainDo.getAsnNumber())){ |
|
|
|
validatorSupplierdeliverRecordMainDO(mainDo.getSupplierCode(), detailDo.getNumber(), detailDo.getItemCode(), detailDo.getPoNumber(), detailDo.getPoLine()); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = validatorItembasic(detailDo.getItemCode()); |
|
|
|
try { |
|
|
|
this.selectUomExist(itembasicDO.getUom(), detailDo.getUom()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
PurchaseDetailDO purchaseDetailDO = validatorPurchaseDetailDo(detailDo.getNumber(), mainDo.getSupplierCode(), detailDo.getItemCode(), detailDo.getPoLine()); |
|
|
|
try { |
|
|
|
ifPlanQtyBigThanOrderQty(detailDo.getPoLine(), purchaseDetailDO.getShippedQty(), detailDo.getQty(), purchaseDetailDO.getOrderQty()); |
|
|
|
}catch (Exception ex){ |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, detailDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
} |
|
|
|