|
|
@ -5,13 +5,14 @@ import cn.hutool.core.exceptions.UtilException; |
|
|
|
import cn.hutool.json.JSONObject; |
|
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.win.framework.common.enums.CommonStatusEnum; |
|
|
|
import com.win.framework.common.exception.ServiceException; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
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.purchase.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.convert.purchase.PurchaseDetailConvert; |
|
|
@ -25,6 +26,7 @@ import com.win.module.wms.dal.dataobject.purchase.PurchaseDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.shift.ShiftDO; |
|
|
|
import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO; |
|
|
|
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO; |
|
|
@ -36,6 +38,7 @@ import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.enums.order.OrderStatusEnum; |
|
|
|
import com.win.module.wms.enums.plan.PlanStatusEnum; |
|
|
|
import com.win.module.wms.enums.plan.PurchasePlanStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
import com.win.module.wms.service.currencyexchange.CurrencyexchangeService; |
|
|
|
import com.win.module.wms.service.documentSwitch.SwitchService; |
|
|
@ -48,10 +51,8 @@ import com.win.module.wms.service.shift.ShiftService; |
|
|
|
import com.win.module.wms.service.stdcostprice.StdcostpriceService; |
|
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
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; |
|
|
@ -105,29 +106,38 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
private PurchasePlanMainService purchasePlanMainService; |
|
|
|
@Resource |
|
|
|
private PurchasePlanDetailMapper purchasePlanDetailMapper; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createPurchaseMain(PurchaseMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
PurchaseMainDO purchaseMain = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchaseMainMapper.insert(purchaseMain); |
|
|
|
// 返回
|
|
|
|
return purchaseMain.getId(); |
|
|
|
// 插入主表
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseOrder"); |
|
|
|
PurchaseMainDO purchaseMainDO = validatorToCreate(createReqVO); |
|
|
|
//调用自动执行方法
|
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(purchaseMainDO.getStatus())) { |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseOrder", "增加了采购订单", TrendsTypeEnum.CREATE); |
|
|
|
return purchaseMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageResult<PurchaseMainDO> getPurchaseMainSenior(CustomConditions conditions) { |
|
|
|
return purchaseMainMapper.selectSenior(conditions); |
|
|
|
public Long updatePurchaseMain(PurchaseMainUpdateReqVO updateReqVO) { |
|
|
|
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseOrder"); |
|
|
|
// 校验存在,如子表需要也再此校验
|
|
|
|
validatePurchaseMainExists(updateReqVO.getId()); |
|
|
|
// 更新主表
|
|
|
|
PurchaseMainDO purchaseMainDO = validatorToUpdate(updateReqVO); |
|
|
|
if (RequestStatusEnum.HANDLING.getCode().equals(purchaseMainDO.getStatus())) { |
|
|
|
} |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE); |
|
|
|
return purchaseMainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updatePurchaseMain(PurchaseMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
validatePurchaseMainExists(updateReqVO.getId()); |
|
|
|
// 更新
|
|
|
|
PurchaseMainDO updateObj = PurchaseMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
purchaseMainMapper.updateById(updateObj); |
|
|
|
public PageResult<PurchaseMainDO> getPurchaseMainSenior(CustomConditions conditions) { |
|
|
|
return purchaseMainMapper.selectSenior(conditions); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -200,132 +210,186 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
} |
|
|
|
List<PurchaseMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//校验供应商基础信息
|
|
|
|
try { |
|
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode()); |
|
|
|
BeanUtils.copyProperties(createReqVO, shiftDO); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
|
|
|
|
//校验供应商送货策略
|
|
|
|
// try {
|
|
|
|
// RuleRespVO ruleRespVO = ruleService.deliverGoods(null, createReqVO.getSupplierCode(), null);
|
|
|
|
// String json = ruleRespVO.getConfiguration();
|
|
|
|
// } catch (ServiceException ex) {
|
|
|
|
// importRemark += ex.getMessage() + ",";
|
|
|
|
// }
|
|
|
|
//子表的验证
|
|
|
|
|
|
|
|
BusinesstypeDO businesstypeDO = new BusinesstypeDO(); |
|
|
|
PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = validatorPurchaseMainImport(mainDo, businesstypeDO); |
|
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ","; |
|
|
|
} |
|
|
|
purchaseDetailDO.setProjectCode(itembasicDO.getCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (PurchaseDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validatorPurchaseDetailImport(detailDO, mainDo); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
PurchaseMainImportErrorVO importErrorVO = PurchaseDetailConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验物品标包信息
|
|
|
|
try { |
|
|
|
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode()); |
|
|
|
purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit()); |
|
|
|
purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
mainDo.setOrderDate(LocalDateTime.MAX); |
|
|
|
purchaseMainMapper.insert(mainDo); |
|
|
|
for ( PurchaseDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
} |
|
|
|
purchaseDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
// 校验供应商物品
|
|
|
|
try { |
|
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode()); |
|
|
|
purchaseDetailDO.setSupplierUom(supplieritemDO.getSupplierUom()); |
|
|
|
purchaseDetailDO.setStdPackQty(supplieritemDO.getPackQty()); |
|
|
|
purchaseDetailDO.setConvertRate(supplieritemDO.getConvertRate()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//主表校验 校验供应商基础信息
|
|
|
|
private void validatorShiftExist(String supplierCode) { |
|
|
|
shiftService.selectShiftExist(supplierCode); |
|
|
|
} |
|
|
|
|
|
|
|
// 校验标准成本价格
|
|
|
|
try { |
|
|
|
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(createReqVO.getSupplierCode(), purchaseDetailDO.getItemCode()); |
|
|
|
purchaseDetailDO.setSinglePrice(stdcostpriceDO.getPrice()); |
|
|
|
if ("CNY".equals(stdcostpriceDO.getCurrency())) { |
|
|
|
purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty())); |
|
|
|
} else { |
|
|
|
CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY"); |
|
|
|
purchaseDetailDO.setAmount(purchaseDetailDO.getSinglePrice().multiply(purchaseDetailDO.getOrderQty()).multiply(currencyexchangeDO.getRate())); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
//子表校验 校验供应商基础信息
|
|
|
|
private void validatorItembasic(String itemCode) { |
|
|
|
itembasicService.selectItembasic(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
PurchaseDetailCreateReqVO purchaseDetailCreateReqVO = PurchaseDetailConvert.INSTANCE.convert1(purchaseDetailDO); |
|
|
|
PurchaseMainImportErrorVO importVO = PurchaseDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO); |
|
|
|
//进行子表的错误统计
|
|
|
|
//主表没有错误 写入库里
|
|
|
|
if (!messageMain.equals("") || !messageDetail.equals("")) { |
|
|
|
importVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importVO); |
|
|
|
} else { |
|
|
|
purchaseDetailDO.setNumber(createReqVO.getNumber()); |
|
|
|
purchaseDetailDO.setMasterId(createReqVO.getId()); |
|
|
|
purchaseDetailDO.setShippedQty(new BigDecimal(0)); |
|
|
|
purchaseDetailDO.setReceivedQty(new BigDecimal(0)); |
|
|
|
purchaseDetailDO.setReturnedQty(new BigDecimal(0)); |
|
|
|
purchaseDetailDO.setPutawayQty(new BigDecimal(0)); |
|
|
|
purchaseDetailDO.setErpLocationCode(null); |
|
|
|
purchaseDetailDO.setStatus(CommonStatusEnum.ENABLE.getStatus()); |
|
|
|
} |
|
|
|
} |
|
|
|
//子表校验 校验物品标包信息
|
|
|
|
private void validatorItemPackagingExist(String itemCode) { |
|
|
|
itempackagingService.selectItemPackagingExist(itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
if (errorList.isEmpty()) { |
|
|
|
// 判断如果不存在,在进行插入
|
|
|
|
PurchaseMainDO existPurchaseclaimRequestMainDO = purchaseMainMapper.selectByNumber(createReqVO.getNumber()); |
|
|
|
if (existPurchaseclaimRequestMainDO == null && mode != 3) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
createReqVO.setOrderDate(LocalDateTime.now()); |
|
|
|
createReqVO.setVersion(null); |
|
|
|
createReqVO.setTaxRate(null); |
|
|
|
PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchaseMainMapper.insert(createObj); |
|
|
|
purchaseDetailMapper.insertBatch(subDOList); |
|
|
|
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) { |
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
if (businesstypeDO != null) { |
|
|
|
createReqVO.setBusinessType(businesstypeDO.getCode()); |
|
|
|
} |
|
|
|
createReqVO.setOrderDate(LocalDateTime.now()); |
|
|
|
createReqVO.setVersion(null); |
|
|
|
createReqVO.setTaxRate(null); |
|
|
|
PurchaseMainDO createObj = PurchaseMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchaseMainMapper.updateById(createObj); |
|
|
|
purchaseDetailMapper.updateBatch(subDOList); |
|
|
|
} |
|
|
|
//子表校验 校验供应商物品
|
|
|
|
private void validatorSupplierItemExist(String supplierCode,String itemCode) { |
|
|
|
supplieritemService.selectSupplierItemExist(supplierCode,itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
//子表校验 校验标准成本价格
|
|
|
|
private void validatorStdcostpriceExist(String supplierCode,String itemCode) { |
|
|
|
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(supplierCode,itemCode); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//校验主表公共方法(适用于新增/修改)
|
|
|
|
private PurchaseMainDO validatorMainMethod(PurchaseMainBaseVO baseVO) { |
|
|
|
PurchaseMainDO mainDo =PurchaseMainConvert.INSTANCE.convert(baseVO); |
|
|
|
this.validatorShiftExist(mainDo.getSupplierCode()); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
return mainDo; |
|
|
|
} |
|
|
|
|
|
|
|
//校验子表公共方法(适用于新增/修改)
|
|
|
|
private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { |
|
|
|
validatorItembasic(detailDo.getItemCode()); |
|
|
|
validatorItemPackagingExist(detailDo.getItemCode()); |
|
|
|
validatorSupplierItemExist(mainDo.getSupplierCode(),detailDo.getItemCode()); |
|
|
|
validatorStdcostpriceExist(mainDo.getSupplierCode(),detailDo.getItemCode()); |
|
|
|
} |
|
|
|
|
|
|
|
//新增校验
|
|
|
|
private PurchaseMainDO validatorToCreate(PurchaseMainCreateReqVO createReqVO) { |
|
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(createReqVO); |
|
|
|
//子表校验
|
|
|
|
List<PurchaseDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchaseDetailDO> subDOList =PurchaseDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
for (PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); |
|
|
|
purchaseMainDO.setNumber(number); |
|
|
|
purchaseMainMapper.insert(purchaseMainDO); |
|
|
|
purchaseDetailMapper.insertBatch(subDOList); |
|
|
|
return purchaseMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
//修改校验
|
|
|
|
private PurchaseMainDO validatorToUpdate(PurchaseMainUpdateReqVO updateReqVO) { |
|
|
|
PurchaseMainDO purchaseMainDO = validatorMainMethod(updateReqVO); |
|
|
|
//子表校验
|
|
|
|
List< PurchaseDetailUpdateReqVO> subList = updateReqVO.getSubList(); |
|
|
|
List< PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList05(subList); |
|
|
|
for ( PurchaseDetailDO purchaseDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(purchaseDetailDO, purchaseMainDO); |
|
|
|
} |
|
|
|
purchaseMainMapper.updateById(purchaseMainDO); |
|
|
|
purchaseDetailMapper.updateBatch(subDOList); |
|
|
|
return purchaseMainDO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验主表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPurchaseMainImport(PurchaseMainDO mainDo, BusinesstypeDO businesstypeDO) { |
|
|
|
String messageMain = ""; |
|
|
|
//主表的验证
|
|
|
|
//校验供应商基础信息
|
|
|
|
try { |
|
|
|
ShiftDO shiftDO = shiftService.selectShiftExist(mainDo.getSupplierCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageMain += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return messageMain; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验子表导入,并赋值一些参数 |
|
|
|
* |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatorPurchaseDetailImport(PurchaseDetailDO detailDo,PurchaseMainDO mainDo) { |
|
|
|
String messageDetail = ""; |
|
|
|
// 校验物品基础信息
|
|
|
|
try { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
if (itembasicDO.getUom() != detailDo.getUom()) { |
|
|
|
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ","; |
|
|
|
} |
|
|
|
}); |
|
|
|
//错误不为空并非部分更新,手工回滚
|
|
|
|
if (!errorList.isEmpty() && !updatePart) { |
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
|
|
|
detailDo.setProjectCode(itembasicDO.getCode()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return errorList; |
|
|
|
// 校验物品标包信息
|
|
|
|
try { |
|
|
|
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); |
|
|
|
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); |
|
|
|
detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
// 校验供应商物品
|
|
|
|
try { |
|
|
|
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
|
detailDo.setSupplierUom(supplieritemDO.getSupplierUom()); |
|
|
|
detailDo.setStdPackQty(supplieritemDO.getPackQty()); |
|
|
|
detailDo.setConvertRate(supplieritemDO.getConvertRate()); |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
// 校验标准成本价格
|
|
|
|
try { |
|
|
|
StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(mainDo.getSupplierCode(), detailDo.getItemCode()); |
|
|
|
detailDo.setSinglePrice(stdcostpriceDO.getPrice()); |
|
|
|
if ("CNY".equals(stdcostpriceDO.getCurrency())) { |
|
|
|
detailDo.setAmount(detailDo.getSinglePrice().multiply(detailDo.getOrderQty())); |
|
|
|
} else { |
|
|
|
CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(stdcostpriceDO.getCurrency(), "CNY"); |
|
|
|
detailDo.setAmount(detailDo.getSinglePrice().multiply(detailDo.getOrderQty()).multiply(currencyexchangeDO.getRate())); |
|
|
|
} |
|
|
|
} catch (ServiceException ex) { |
|
|
|
messageDetail += ex.getMessage() + ","; |
|
|
|
} |
|
|
|
return messageDetail; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer closePurchaseMain(Long id) { |
|
|
@ -486,6 +550,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
throw new ServiceException(PURCHASE_MAIN_NUMBERNO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新采购订单表的已收货数量
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
@ -514,7 +579,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
for (PurchaseDetailDO purchaseDetailDO : purchaseDetailDOList) { |
|
|
|
//如果是离散单
|
|
|
|
if ("DISCRETE".equals(purchaseMainDO.getType())) { |
|
|
|
if (purchaseDetailDO.getReceivedQty() .compareTo(purchaseDetailDO.getOrderQty())==0 |
|
|
|
if (purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty()) == 0 |
|
|
|
|| purchaseDetailDO.getReceivedQty().compareTo(purchaseDetailDO.getOrderQty().multiply(new BigDecimal(1).add(purchaseDetailDO.getOverReceivingPercent()))) |
|
|
|
>= 0) { |
|
|
|
purchaseDetailDO.setAvailable("FALSE"); |
|
|
@ -534,6 +599,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
throw new ServiceException(PURCHASE_MAIN_NUMBERNO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新采购订单表的已发货数量
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
@ -565,6 +631,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { |
|
|
|
throw new ServiceException(PURCHASE_MAIN_NUMBERNO); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//更新采购订单表的已发货数量
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|