|
|
@ -28,6 +28,7 @@ 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; |
|
|
@ -166,6 +167,8 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
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); |
|
|
@ -173,7 +176,6 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
List<PurchaseclaimRequestImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
String messageMain = ""; |
|
|
|
int detailErrorCount = 0; |
|
|
|
//主表校验方法
|
|
|
|
if(mode != null){ |
|
|
|
try { |
|
|
@ -229,55 +231,66 @@ public class PurchaseclaimRequestMainServiceImpl implements PurchaseclaimRequest |
|
|
|
PurchaseclaimRequestDetailCreateReqVO purchaseclaimRequestDetailCreateReqVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert1(detailDO); |
|
|
|
PurchaseclaimRequestImportErrorVO importVO = PurchaseclaimRequestDetailConvert.INSTANCE.convert(createReqVO, purchaseclaimRequestDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
if(!messageDetail.isEmpty()){ |
|
|
|
detailErrorCount ++; |
|
|
|
//主表没有错误 写入库里
|
|
|
|
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)); |
|
|
|
} |
|
|
|
//如果子表没有全错
|
|
|
|
if(detailErrorCount != subDOList.size()){ |
|
|
|
//主表没有错误 写入库里
|
|
|
|
if(messageMain == null){ |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
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); |
|
|
|
} //反之 跳出本次循环 进行下一个主表的循环
|
|
|
|
if(messageMain != null || messageDetail != null) { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
String messageAll = messageMain+ messageDetail; |
|
|
|
importVO.setImportRemark(messageAll.substring(0,messageAll.length()-1)); |
|
|
|
errorList.add(importVO); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if(!errorList.isEmpty()){ |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
PurchaseclaimRequestMainDO existPurchaseclaimRequestMainDO = purchaseclaimRequestMainMapper.selectByAsnNumberAndSupplierCode(createReqVO.getAsnNumber(), createReqVO.getSupplierCode()); |
|
|
|
if(existPurchaseclaimRequestMainDO == null && mode != 3){ |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseClaimRequest"); |
|
|
|
if(businesstypeDO != null){ |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
//如果子表没有错误 写库
|
|
|
|
if(messageDetail == null){ |
|
|
|
detailDO.setNumber(createReqVO.getNumber()); |
|
|
|
detailDO.setMasterId(createReqVO.getId()); |
|
|
|
detailDO.setAmount(detailDO.getQty().multiply(detailDO.getSinglePrice()).setScale(6,BigDecimal.ROUND_HALF_UP)); |
|
|
|
purchaseclaimRequestDetailMapper.insertBatch(subDOList); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseClaimRequest"); |
|
|
|
if(requestsettingDO != null){ |
|
|
|
createReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
createReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
createReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
createReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
} |
|
|
|
//如果子表全错
|
|
|
|
}else { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
String messageAll = messageMain+ messageDetail; |
|
|
|
importVO.setImportRemark(messageAll.substring(0,messageAll.length()-1)); |
|
|
|
errorList.add(importVO); |
|
|
|
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, "新增")); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_CLAIM_RECORD.getCode()); |
|
|
|
createReqVO.setNumber(number); |
|
|
|
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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if(!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|