|
@ -51,6 +51,7 @@ import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.stdcostprice.StdcostpriceService; |
|
|
import com.win.module.wms.service.stdcostprice.StdcostpriceService; |
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
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; |
|
@ -204,15 +205,17 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
public List<PurchaseMainImportErrorVO> importPurchaseMaintList(List<PurchaseMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
public List<PurchaseMainImportErrorVO> importPurchaseMaintList(List<PurchaseMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
} |
|
|
} |
|
|
List<PurchaseMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
List<PurchaseMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
datas.forEach(createReqVO -> { |
|
|
for (PurchaseMainCreateReqVO createReqVO : datas) { |
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
|
|
PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
String messageMain = validatorPurchaseMainImport(mainDo, businesstypeDO); |
|
|
String messageMain = validatorPurchaseMainImport(mainDo); |
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
// 是否有错误数据
|
|
|
// 是否有错误数据
|
|
@ -230,18 +233,28 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
} |
|
|
} |
|
|
//写入数据
|
|
|
//写入数据
|
|
|
if (flag) { |
|
|
if (flag) { |
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
mainDo.setOrderDate(LocalDateTime.MAX); |
|
|
mainDo.setOrderDate(LocalDateTime.now()); |
|
|
|
|
|
mainDo.setTaxRate(BigDecimal.ZERO); |
|
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
|
|
mainDo.setAvailable("TRUE"); |
|
|
purchaseMainMapper.insert(mainDo); |
|
|
purchaseMainMapper.insert(mainDo); |
|
|
for ( PurchaseDetailDO detailDO : subDOList) { |
|
|
for (PurchaseDetailDO detailDO : subDOList) { |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
detailDO.setNumber(number); |
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
|
|
|
detailDO.setPlannedQty(BigDecimal.ZERO); |
|
|
|
|
|
detailDO.setShippedQty(BigDecimal.ZERO); |
|
|
|
|
|
detailDO.setReceivedQty(BigDecimal.ZERO); |
|
|
|
|
|
detailDO.setReturnedQty(BigDecimal.ZERO); |
|
|
|
|
|
detailDO.setPutawayQty(BigDecimal.ZERO); |
|
|
|
|
|
detailDO.setErpLocationCode(null); |
|
|
|
|
|
detailDO.setAvailable("TRUE"); |
|
|
|
|
|
detailDO.setStatus(OrderStatusEnum.READY.getCode()); |
|
|
} |
|
|
} |
|
|
purchaseDetailMapper.insertBatch(subDOList); |
|
|
purchaseDetailMapper.insertBatch(subDOList); |
|
|
} |
|
|
} |
|
|
}); |
|
|
} |
|
|
return errorList; |
|
|
return errorList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -261,19 +274,19 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//子表校验 校验供应商物品
|
|
|
//子表校验 校验供应商物品
|
|
|
private void validatorSupplierItemExist(String supplierCode,String itemCode) { |
|
|
private void validatorSupplierItemExist(String supplierCode, String itemCode) { |
|
|
supplieritemService.selectSupplierItemExist(supplierCode,itemCode); |
|
|
supplieritemService.selectSupplierItemExist(supplierCode, itemCode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//子表校验 校验标准成本价格
|
|
|
//子表校验 校验标准成本价格
|
|
|
private void validatorStdcostpriceExist(String supplierCode,String itemCode) { |
|
|
private void validatorStdcostpriceExist(String supplierCode, String itemCode) { |
|
|
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(supplierCode,itemCode); |
|
|
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(supplierCode, itemCode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
private PurchaseMainDO validatorMainMethod(PurchaseMainBaseVO baseVO) { |
|
|
private PurchaseMainDO validatorMainMethod(PurchaseMainBaseVO baseVO) { |
|
|
PurchaseMainDO mainDo =PurchaseMainConvert.INSTANCE.convert(baseVO); |
|
|
PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(baseVO); |
|
|
this.validatorShiftExist(mainDo.getSupplierCode()); |
|
|
this.validatorShiftExist(mainDo.getSupplierCode()); |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
@ -285,8 +298,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { |
|
|
private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { |
|
|
validatorItembasic(detailDo.getItemCode()); |
|
|
validatorItembasic(detailDo.getItemCode()); |
|
|
validatorItemPackagingExist(detailDo.getItemCode()); |
|
|
validatorItemPackagingExist(detailDo.getItemCode()); |
|
|
validatorSupplierItemExist(mainDo.getSupplierCode(),detailDo.getItemCode()); |
|
|
validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
validatorStdcostpriceExist(mainDo.getSupplierCode(),detailDo.getItemCode()); |
|
|
validatorStdcostpriceExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//新增校验
|
|
|
//新增校验
|
|
@ -294,7 +307,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(createReqVO); |
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(createReqVO); |
|
|
//子表校验
|
|
|
//子表校验
|
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
List<PurchaseDetailDO> subDOList =PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
for (PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
for (PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
} |
|
|
} |
|
@ -309,9 +322,9 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
private PurchaseMainDO validatorToUpdate(PurchaseMainUpdateReqVO updateReqVO) { |
|
|
private PurchaseMainDO validatorToUpdate(PurchaseMainUpdateReqVO updateReqVO) { |
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(updateReqVO); |
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(updateReqVO); |
|
|
//子表校验
|
|
|
//子表校验
|
|
|
List< PurchaseDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
List<PurchaseDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
List< PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList05(subList); |
|
|
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList05(subList); |
|
|
for ( PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
for (PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
} |
|
|
} |
|
|
purchaseMainMapper.updateById(purchaseMainDO); |
|
|
purchaseMainMapper.updateById(purchaseMainDO); |
|
@ -325,12 +338,28 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
* @param mainDo |
|
|
* @param mainDo |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private String validatorPurchaseMainImport(PurchaseMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
private String validatorPurchaseMainImport(PurchaseMainDO mainDo) { |
|
|
String messageMain = ""; |
|
|
String messageMain = ""; |
|
|
//主表的验证
|
|
|
//主表的验证
|
|
|
//校验供应商基础信息
|
|
|
//校验供应商基础信息
|
|
|
try { |
|
|
try { |
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(mainDo.getSupplierCode()); |
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(mainDo.getSupplierCode()); |
|
|
|
|
|
if (shiftDO == null) { |
|
|
|
|
|
messageMain += "未查找到供应商" + mainDo.getSupplierCode() + "信息" + ","; |
|
|
|
|
|
} |
|
|
|
|
|
} catch (ServiceException ex) { |
|
|
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
|
|
} |
|
|
|
|
|
if (StringUtils.isEmpty(mainDo.getNumber())) { |
|
|
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); |
|
|
|
|
|
mainDo.setNumber(number); |
|
|
|
|
|
} |
|
|
|
|
|
//校验单据号是否重复
|
|
|
|
|
|
try { |
|
|
|
|
|
PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectByNumber(mainDo.getNumber()); |
|
|
|
|
|
if (purchaseMainDO != null) { |
|
|
|
|
|
messageMain += "单据号" + mainDo.getNumber() + "已存在" + ","; |
|
|
|
|
|
} |
|
|
} catch (ServiceException ex) { |
|
|
} catch (ServiceException ex) { |
|
|
messageMain += ex.getMessage() + ","; |
|
|
messageMain += ex.getMessage() + ","; |
|
|
} |
|
|
} |
|
@ -343,7 +372,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
* @param detailDo |
|
|
* @param detailDo |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private String validatorPurchaseDetailImport(PurchaseDetailDO detailDo,PurchaseMainDO mainDo) { |
|
|
private String validatorPurchaseDetailImport(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { |
|
|
String messageDetail = ""; |
|
|
String messageDetail = ""; |
|
|
// 校验物品基础信息
|
|
|
// 校验物品基础信息
|
|
|
try { |
|
|
try { |
|
@ -367,7 +396,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
try { |
|
|
try { |
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
detailDo.setSupplierUom(supplieritemDO.getSupplierUom()); |
|
|
detailDo.setSupplierUom(supplieritemDO.getSupplierUom()); |
|
|
detailDo.setStdPackQty(supplieritemDO.getPackQty()); |
|
|
detailDo.setSupplierQty(supplieritemDO.getPackQty()); |
|
|
detailDo.setConvertRate(supplieritemDO.getConvertRate()); |
|
|
detailDo.setConvertRate(supplieritemDO.getConvertRate()); |
|
|
} catch (ServiceException ex) { |
|
|
} catch (ServiceException ex) { |
|
|
messageDetail += ex.getMessage() + ","; |
|
|
messageDetail += ex.getMessage() + ","; |
|
@ -389,7 +418,6 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
@Transactional |
|
|
@Transactional |
|
|
public Integer closePurchaseMain(Long id) { |
|
|
public Integer closePurchaseMain(Long id) { |
|
|