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 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; 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.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailCreateReqVO; import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailExportReqVO; import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailPageReqVO; import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.wms.controller.purchase.vo.PurchaseDetailUpdateReqVO; 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.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.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.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.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; 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 实现类 * 采购订单子 Service 实现类
@ -30,14 +59,48 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
@Resource @Resource
private PurchaseDetailMapper purchaseDetailMapper; 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 @Override
public Long createPurchaseDetail(PurchaseDetailCreateReqVO createReqVO) { public Long createPurchaseDetail(PurchaseDetailCreateReqVO createReqVO) {
// 插入 // 插入
PurchaseDetailDO purchaseDetail = PurchaseDetailConvert.INSTANCE.convert(createReqVO); PurchaseDetailDO purchaseDetailDO = PurchaseDetailConvert.INSTANCE.convert(createReqVO);
purchaseDetailMapper.insert(purchaseDetail); 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 @Override
@ -48,10 +111,12 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
PurchaseDetailDO updateObj = PurchaseDetailConvert.INSTANCE.convert(updateReqVO); PurchaseDetailDO updateObj = PurchaseDetailConvert.INSTANCE.convert(updateReqVO);
purchaseDetailMapper.updateById(updateObj); purchaseDetailMapper.updateById(updateObj);
} }
@Override @Override
public PageResult<PurchaseDetailDO> getPurchaseDetailSenior(CustomConditions conditions) { public PageResult<PurchaseDetailDO> getPurchaseDetailSenior(CustomConditions conditions) {
return purchaseDetailMapper.selectSenior(conditions); return purchaseDetailMapper.selectSenior(conditions);
} }
@Override @Override
public void deletePurchaseDetail(Long id) { public void deletePurchaseDetail(Long id) {
// 校验存在 // 校验存在
@ -91,4 +156,70 @@ public class PurchaseDetailServiceImpl implements PurchaseDetailService {
return purchaseDetailMapper.selectPurchaseDetail(number, lineNumber, itemCode); 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; return errorList;
} }
//主表校验 校验班次基础信息 //主表校验 校验供应商基础信息
private SupplierDO validatorShiftExist(String supplierCode) { private SupplierDO validatorShiftExist(String supplierCode) {
return supplierService.selectSupplier(supplierCode); return supplierService.selectSupplier(supplierCode);
} }
//子表校验 校验供应商基础信息 //子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) { private ItembasicDO validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode); return itembasicService.selectItembasic(itemCode);
} }
//子表校验 校验物品标包信息 //子表校验 校验物品标包信息
@ -311,8 +311,21 @@ public class PurchaseMainServiceImpl implements PurchaseMainService {
//校验子表公共方法(适用于新增/修改) //校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { 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()); ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode());
if (itempackagingDO != null) { if (itempackagingDO != null) {
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); 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; 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.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.PurchasePlanDetailCreateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailExportReqVO; 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.PurchasePlanDetailPageReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanDetailUpdateReqVO; 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.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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -34,15 +52,56 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
@Resource @Resource
private PurchasePlanDetailMapper purchasePlanDetailMapper; 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 @Override
public Long createPurchasePlanDetail(PurchasePlanDetailCreateReqVO createReqVO) { public Long createPurchasePlanDetail(PurchasePlanDetailCreateReqVO createReqVO) {
// 插入 // 插入
PurchasePlanDetailDO purchasePlanDetail = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO); PurchasePlanDetailDO purchasePlanDetailDO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO);
purchasePlanDetail.setCreateTime(LocalDateTime.now()); QueryWrapper<PurchasePlanMainDO> planMainDOQueryWrapper = new QueryWrapper<>();
purchasePlanDetailMapper.insert(purchasePlanDetail); 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 @Override
@ -103,5 +162,24 @@ public class PurchasePlanDetailServiceImpl implements PurchasePlanDetailService
return newList; 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