|
@@ -11,15 +11,25 @@ import com.fjhx.entity.logistics.LogisticsDetails;
|
|
|
import com.fjhx.entity.logistics.LogisticsInfo;
|
|
|
import com.fjhx.entity.product.ProductInfo;
|
|
|
import com.fjhx.entity.purchase.Purchase;
|
|
|
+import com.fjhx.entity.quality.QualityDetails;
|
|
|
+import com.fjhx.entity.quality.QualityInfo;
|
|
|
+import com.fjhx.entity.stock.StockJournal;
|
|
|
import com.fjhx.enums.purchase.PurchaseStatusEnum;
|
|
|
+import com.fjhx.enums.stock.InTypeEnum;
|
|
|
import com.fjhx.mapper.logistics.LogisticsInfoMapper;
|
|
|
import com.fjhx.params.logistics.DeliverDetailsVo;
|
|
|
import com.fjhx.params.logistics.LogisticsInfoVo;
|
|
|
+import com.fjhx.params.stock.InStockAdd;
|
|
|
+import com.fjhx.params.stock.StockChangeVo;
|
|
|
import com.fjhx.service.apply.ApplyPurchaseService;
|
|
|
import com.fjhx.service.logistics.LogisticsDetailsService;
|
|
|
import com.fjhx.service.logistics.LogisticsInfoService;
|
|
|
import com.fjhx.service.product.ProductInfoService;
|
|
|
import com.fjhx.service.purchase.PurchaseService;
|
|
|
+import com.fjhx.service.quality.QualityDetailsService;
|
|
|
+import com.fjhx.service.quality.QualityInfoService;
|
|
|
+import com.fjhx.service.stock.StockService;
|
|
|
+import com.fjhx.uitl.code.CodeEnum;
|
|
|
import com.fjhx.uitl.kd100.KD100Util;
|
|
|
import com.fjhx.utils.Assert;
|
|
|
import com.fjhx.utils.FileClientUtil;
|
|
@@ -59,6 +69,15 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
|
|
|
@Autowired
|
|
|
private PurchaseService purchaseService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private StockService stockService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private QualityInfoService qualityInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private QualityDetailsService qualityDetailsService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<LogisticsInfo> getPage(Map<String, Object> condition) {
|
|
|
|
|
@@ -306,4 +325,82 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void inStock(InStockAdd inStockAdd) {
|
|
|
+ List<InStockAdd.InStockAddDetails> list = inStockAdd.getList();
|
|
|
+ Long logisticsInfoId = inStockAdd.getLogisticsInfoId();
|
|
|
+
|
|
|
+ StockChangeVo stockChangeVo = new StockChangeVo();
|
|
|
+ stockChangeVo.setTypeEnum(InTypeEnum.PURCHASE);
|
|
|
+ stockChangeVo.setChangeDetailsList(list);
|
|
|
+ List<StockJournal> stockJournals = stockService.changeQuantity(stockChangeVo);
|
|
|
+
|
|
|
+
|
|
|
+ Map<Long, BigDecimal> collect = list.stream().collect(Collectors.toMap(
|
|
|
+ InStockAdd.InStockAddDetails::getBusinessId,
|
|
|
+ InStockAdd.InStockAddDetails::getChangeQuantity
|
|
|
+ ));
|
|
|
+
|
|
|
+ List<LogisticsDetails> logisticsDetails = logisticsDetailsService.list(
|
|
|
+ q -> q.eq(LogisticsDetails::getLogisticsInfoId, logisticsInfoId));
|
|
|
+
|
|
|
+
|
|
|
+ boolean completeFlag = true;
|
|
|
+
|
|
|
+ for (LogisticsDetails logisticsDetail : logisticsDetails) {
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal shipmentQuantity = logisticsDetail.getShipmentQuantity();
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal receiptQuantity = logisticsDetail.getReceiptQuantity();
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal bigDecimal = ObjectUtil.defaultIfNull(collect.get(logisticsDetail.getId()), BigDecimal.ZERO);
|
|
|
+
|
|
|
+ int compareTo = receiptQuantity.add(bigDecimal).compareTo(shipmentQuantity);
|
|
|
+ if (compareTo > 0) {
|
|
|
+ throw new ServiceException("入库数量不能超过发货数量");
|
|
|
+ } else if (compareTo < 0) {
|
|
|
+ completeFlag = false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ logisticsDetail.setReceiptQuantity(receiptQuantity.add(bigDecimal));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ LogisticsInfo logisticsInfo = getById(logisticsInfoId);
|
|
|
+ Integer inStockStatus = completeFlag ? LogisticsConstant.InStockStatus.STATUS_30 : LogisticsConstant.InStockStatus.STATUS_20;
|
|
|
+ if (!inStockStatus.equals(logisticsInfo.getInStockStatus())) {
|
|
|
+ logisticsInfo.setInStockStatus(inStockStatus);
|
|
|
+ updateById(logisticsInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ QualityInfo qualityInfo = new QualityInfo();
|
|
|
+ qualityInfo.setCode(CodeEnum.QUALITY.getCode());
|
|
|
+ qualityInfo.setLogisticsInfoId(logisticsInfoId);
|
|
|
+ qualityInfo.setLogisticsInfoCode(logisticsInfo.getCode());
|
|
|
+ qualityInfo.setResultType(1);
|
|
|
+ qualityInfo.setResultType(1);
|
|
|
+ qualityInfoService.save(qualityInfo);
|
|
|
+
|
|
|
+
|
|
|
+ List<QualityDetails> qualityDetailsList = stockJournals.stream().map(item -> {
|
|
|
+ QualityDetails qualityDetails = new QualityDetails();
|
|
|
+ qualityDetails.setQualityInfoId(qualityInfo.getId());
|
|
|
+ qualityDetails.setStockJournalId(item.getId());
|
|
|
+ qualityDetails.setLogisticsDetailsId(item.getBusinessId());
|
|
|
+ qualityDetails.setProductInfoId(item.getGoodsId());
|
|
|
+ qualityDetails.setWarehouseId(item.getWarehouseId());
|
|
|
+ qualityDetails.setTotalQuantity(item.getChangeQuantity());
|
|
|
+ qualityDetails.setQualifiedQuantity(BigDecimal.ZERO);
|
|
|
+ qualityDetails.setDisqualificationQuantity(BigDecimal.ZERO);
|
|
|
+ return qualityDetails;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ qualityDetailsService.saveBatch(qualityDetailsList);
|
|
|
+ }
|
|
|
+
|
|
|
}
|