diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseclaimRequest/PurchaseclaimRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseclaimRequest/PurchaseclaimRequestMainMapper.java index 505d2802..adeac836 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseclaimRequest/PurchaseclaimRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseclaimRequest/PurchaseclaimRequestMainMapper.java @@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainExportReqVO; import com.win.module.wms.controller.purchaseclaimRequest.vo.PurchaseclaimRequestMainPageReqVO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.purchaseclaimRequest.PurchaseclaimRequestMainDO; import org.apache.ibatis.annotations.Mapper; @@ -43,6 +44,10 @@ public interface PurchaseclaimRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java index fbc7908d..31ad2861 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseclaimRequest/PurchaseclaimRequestMainServiceImpl.java @@ -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 importPurchaseclaimRequestList(List 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 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; } - }