Browse Source

Merge remote-tracking branch 'origin/master'

master
赵雪冰 2 years ago
parent
commit
4e5a1dae0e
  1. 2
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 147
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseDetailServiceImpl.java
  3. 23
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java
  4. 86
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java

2
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -1139,5 +1139,7 @@ public interface ErrorCodeConstants {
ErrorCode BACKFLUSH_REQUEST_DETAILB_NOT_EXISTS = new ErrorCode(1_000_304_001, "制品收货申请二子表不存在");
ErrorCode ENABLE_BUG = new ErrorCode(1_000_303_001, "物品不可采购 !");
}

147
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseDetailServiceImpl.java

@ -1,23 +1,52 @@
package com.win.module.wms.service.purchase;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailCreateReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailExportReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailPageReqVO;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO;
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.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.purchase.vo.*;
import com.win.module.wms.convert.purchase.PurchaseDetailConvert;
import com.win.module.wms.convert.purchase.PurchaseMainConvert;
import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.currencyexchange.CurrencyexchangeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
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.purchaseprice.PurchasepriceDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.order.OrderStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.currencyexchange.CurrencyexchangeService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
import com.win.module.wms.service.purchaseprice.PurchasepriceService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PURCHASE_DETAIL_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
import static com.win.module.wms.enums.ErrorCodeConstants.STDCOSTPRICE_NOT_EXISTS;
/**
* 采购订单子 Service 实现类
@ -30,14 +59,48 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
@Resource
private PurchaseDetailMapper purchaseDetailMapper;
@Resource
private PurchaseMainMapper purchaseMainMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private ItempackagingService itempackagingService;
@Resource
private CurrencyexchangeService currencyexchangeService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private PurchasepriceService purchasepriceService;
@Resource
private DictDataApi dictDataApi;
@Override
public Long createPurchaseDetail(PurchaseDetailCreateReqVO createReqVO) {
// 插入
PurchaseDetailDO purchaseDetail = PurchaseDetailConvert.INSTANCE.convert(createReqVO);
purchaseDetailMapper.insert(purchaseDetail);
PurchaseDetailDO purchaseDetailDO = PurchaseDetailConvert.INSTANCE.convert(createReqVO);
QueryWrapper<PurchaseMainDO> planMainDOQueryWrapper = new QueryWrapper<>();
planMainDOQueryWrapper.eq("number", purchaseDetailDO.getNumber());
PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectOne(planMainDOQueryWrapper);
validatePurchaseDetailCreate(purchaseMainDO, purchaseDetailDO);
purchaseDetailDO.setMasterId(purchaseMainDO.getId());
purchaseDetailDO.setPlannedQty(BigDecimal.ZERO);
purchaseDetailDO.setShippedQty(BigDecimal.ZERO);
purchaseDetailDO.setReceivedQty(BigDecimal.ZERO);
purchaseDetailDO.setReturnedQty(BigDecimal.ZERO);
purchaseDetailDO.setPutawayQty(BigDecimal.ZERO);
purchaseDetailDO.setErpLocationCode(null);
purchaseDetailDO.setAvailable("TRUE");
purchaseDetailDO.setStatus(OrderStatusEnum.READY.getCode());
DictDataRespDTO uom = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM,purchaseDetailDO.getUom());
purchaseDetailDO.setUom(uom.getValue());
purchaseDetailMapper.insert(purchaseDetailDO);
trendsApi.createTrends(purchaseDetailDO.getId(), "purchasePlanDetail", "增加了采购订单子表", TrendsTypeEnum.CREATE);
// 返回
return purchaseDetail.getId();
return purchaseDetailDO.getId();
}
@Override
@ -48,10 +111,12 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
PurchaseDetailDO updateObj = PurchaseDetailConvert.INSTANCE.convert(updateReqVO);
purchaseDetailMapper.updateById(updateObj);
}
@Override
public PageResult<PurchaseDetailDO> getPurchaseDetailSenior(CustomConditions conditions) {
return purchaseDetailMapper.selectSenior(conditions);
}
@Override
public void deletePurchaseDetail(Long id) {
// 校验存在
@ -91,4 +156,70 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
return purchaseDetailMapper.selectPurchaseDetail(number, lineNumber, itemCode);
}
//校验子表公共方法(适用于新增/修改)
private void validatePurchaseDetailCreate(PurchaseMainDO mainDo, PurchaseDetailDO detailDo) {
// 校验物品基础信息
ItembasicDO itembasicDO = this.validatorItembasic(detailDo.getItemCode());
if (itembasicDO != null) {
if (itembasicDO.getUom() != detailDo.getUom()) {
throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom());
}
if (itembasicDO.getUom() != detailDo.getUom()) {
throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom());
}
if ("FALSE".equals(itembasicDO.getEnableBuy())) {
throw exception(ENABLE_BUG);
}
}else {
throw exception(SCRAP_REQUEST_ITEMCODE_INVALID);
}
this.validatorItemPackagingExist(detailDo.getItemCode());
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
if (itempackagingDO != null) {
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit());
detailDo.setStdPackQty(itempackagingDO.getStdPackQty());
}
SupplieritemDO supplieritemDO = this.validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
if (supplieritemDO != null) {
detailDo.setSupplierUom(supplieritemDO.getSupplierUom());
detailDo.setSupplierQty(supplieritemDO.getPackQty());
detailDo.setConvertRate(supplieritemDO.getConvertRate());
} else {
throw exception(SUPPLIERITEM_NOT_EXISTS);
}
PurchasepriceDO purchasepriceDO = this.validatorStdcostpriceExist(mainDo.getSupplierCode(), detailDo.getItemCode());
if (purchasepriceDO != null) {
detailDo.setSinglePrice(purchasepriceDO.getPrice());
if ("CNY".equals(purchasepriceDO.getCurrency())) {
detailDo.setAmount(detailDo.getSinglePrice().multiply(detailDo.getOrderQty()));
} else {
CurrencyexchangeDO currencyexchangeDO = currencyexchangeService.selectCurrencyexchangeExist(purchasepriceDO.getCurrency(), "CNY");
detailDo.setAmount(detailDo.getSinglePrice().multiply(detailDo.getOrderQty()).multiply(currencyexchangeDO.getRate()));
}
} else {
throw exception(STDCOSTPRICE_NOT_EXISTS);
}
}
//子表校验 校验供应商基础信息
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//子表校验 校验物品标包信息
private ItempackagingDO validatorItemPackagingExist(String itemCode) {
return itempackagingService.selectItemPackagingExist(itemCode);
}
//子表校验 校验供应商物品
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) {
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
//子表校验 校验标准成本价格
private PurchasepriceDO validatorStdcostpriceExist(String supplierCode, String itemCode) {
return purchasepriceService.selectPurchasepriceExist(supplierCode, itemCode);
}
}

23
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java

@ -273,14 +273,14 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
return errorList;
}
//主表校验 校验班次基础信息
//主表校验 校验供应商基础信息
private SupplierDO validatorShiftExist(String supplierCode) {
return supplierService.selectSupplier(supplierCode);
}
//子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
private ItembasicDO validatorItembasic(String itemCode) {
return itembasicService.selectItembasic(itemCode);
}
//子表校验 校验物品标包信息
@ -311,8 +311,21 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
//校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) {
this.validatorItembasic(detailDo.getItemCode());
this.validatorItemPackagingExist(detailDo.getItemCode());
// 校验物品基础信息
ItembasicDO itembasicDO = this.validatorItembasic(detailDo.getItemCode());
if (itembasicDO != null) {
if (itembasicDO.getUom() != detailDo.getUom()) {
throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom());
}
if (itembasicDO.getUom() != detailDo.getUom()) {
throw exception(UOM_ERRORR, itembasicDO.getUom(), detailDo.getUom());
}
if ("FALSE".equals(itembasicDO.getEnableBuy())) {
throw exception(ENABLE_BUG);
}
}else {
throw exception(SCRAP_REQUEST_ITEMCODE_INVALID);
} this.validatorItemPackagingExist(detailDo.getItemCode());
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
if (itempackagingDO != null) {
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit());

86
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanDetailServiceImpl.java

@ -1,11 +1,29 @@
package com.win.module.wms.service.purchasePlan;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.pojo.CustomConditions;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.dict.dto.DictDataRespDTO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailCreateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailExportReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailPageReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailUpdateReqVO;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
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.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRecord.PurchasereceiptRecordDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchase.PurchaseDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.purchase.PurchaseMainService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -34,15 +52,56 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
@Resource
private PurchasePlanDetailMapper purchasePlanDetailMapper;
@Resource
private PurchasePlanMainMapper purchasePlanMainMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private PurchaseMainService purchaseMainService;
@Resource
private PurchaseDetailMapper purchaseDetailMapper;
@Resource
private DictDataApi dictDataApi;
@Override
public Long createPurchasePlanDetail(PurchasePlanDetailCreateReqVO createReqVO) {
// 插入
PurchasePlanDetailDO purchasePlanDetail = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO);
purchasePlanDetail.setCreateTime(LocalDateTime.now());
purchasePlanDetailMapper.insert(purchasePlanDetail);
PurchasePlanDetailDO purchasePlanDetailDO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO);
QueryWrapper<PurchasePlanMainDO> planMainDOQueryWrapper = new QueryWrapper<>();
planMainDOQueryWrapper.eq("number", purchasePlanDetailDO.getNumber());
PurchasePlanMainDO purchasePlanMainDO = purchasePlanMainMapper.selectOne(planMainDOQueryWrapper);
validatePurchasePlanDetailCreate(purchasePlanMainDO,purchasePlanDetailDO);
purchasePlanDetailDO.setMasterId(purchasePlanMainDO.getId());
purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO);
purchasePlanDetailDO.setAvailable("TRUE");
DictDataRespDTO uom = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM, purchasePlanDetailDO.getUom());
purchasePlanDetailDO.setUom(uom.getValue());
//选择已发布状态下订单号、订单行、零件号 判断订单类型
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper<>();
purchaseDetailDOQueryWrapper.eq("number", purchasePlanDetailDO.getPoNumber());
purchaseDetailDOQueryWrapper.eq("item_code", purchasePlanDetailDO.getItemCode());
purchaseDetailDOQueryWrapper.eq("line_number ", purchasePlanDetailDO.getPoLine());
PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(purchaseDetailDOQueryWrapper);
if (purchaseDetailDO != null) {
PurchaseMainDO purchaseMainDO = purchaseMainService.getPurchaseMain(purchaseDetailDO.getMasterId());
//如果是离散单
if ("DISCRETE".equals(purchaseMainDO.getType())) {
purchasePlanDetailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty()));
}
}
purchasePlanDetailDO.setId(null);
purchasePlanDetailDO.setCreator(null);
purchasePlanDetailDO.setCreateTime(null);
purchasePlanDetailDO.setUpdater(null);
purchasePlanDetailDO.setUpdateTime(null);
purchasePlanDetailMapper.insert(purchasePlanDetailDO);
trendsApi.createTrends(purchasePlanDetailDO.getId(), "purchasePlanDetail", "增加了要货计划子表", TrendsTypeEnum.CREATE);
// 返回
return purchasePlanDetail.getId();
return purchasePlanDetailDO.getId();
}
@Override
@ -103,5 +162,24 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
return newList;
}
/**
* 校验创建并赋值一些参数
* @param detailDo
* @return
*/
private void validatePurchasePlanDetailCreate( PurchasePlanMainDO purchasePlanMainDO,PurchasePlanDetailDO detailDo) {
this.validatorItembasic(detailDo.getItemCode());
this.validatorSupplierItemExist(purchasePlanMainDO.getSupplierCode(), detailDo.getItemCode());
}
//子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
}
//子表校验 校验供应商物品
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) {
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
}

Loading…
Cancel
Save