|
@@ -13,14 +13,17 @@ import com.fjhx.account.entity.account.po.AccountManagement;
|
|
|
import com.fjhx.account.service.account.AccountManagementService;
|
|
|
import com.fjhx.area.utils.CustomizeAreaUtil;
|
|
|
import com.fjhx.common.constant.SourceConstant;
|
|
|
+import com.fjhx.common.entity.InOutBo;
|
|
|
import com.fjhx.common.entity.corporation.po.Corporation;
|
|
|
import com.fjhx.common.entity.documentary.bo.DocumentaryData;
|
|
|
import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
+import com.fjhx.common.enums.InOutType;
|
|
|
import com.fjhx.common.service.corporation.CorporationService;
|
|
|
import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
|
|
|
import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.flow.entity.flow.po.FlowExample;
|
|
|
import com.fjhx.flow.service.flow.FlowExampleService;
|
|
|
+import com.fjhx.item.enums.ProductAvailableRecordType;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
import com.fjhx.purchase.entity.invoice.po.InvoiceDetails;
|
|
|
import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
|
|
@@ -29,9 +32,12 @@ import com.fjhx.purchase.entity.pay.po.PayDetail;
|
|
|
import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
|
|
|
import com.fjhx.purchase.entity.pay.vo.PayVo;
|
|
|
import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
|
|
|
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
|
|
|
import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
|
|
|
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
|
|
|
import com.fjhx.purchase.entity.subscribe.po.Subscribe;
|
|
|
import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
|
|
|
+import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
|
|
|
import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
|
|
|
import com.fjhx.purchase.service.pay.PayDetailService;
|
|
|
import com.fjhx.purchase.service.pay.PayService;
|
|
@@ -39,7 +45,6 @@ import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
|
|
|
import com.fjhx.purchase.service.subscribe.SubscribeService;
|
|
|
import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
|
|
|
import com.fjhx.sale.entity.contract.po.Contract;
|
|
|
-import com.fjhx.sale.entity.contract.po.ContractProduct;
|
|
|
import com.fjhx.sale.entity.contract.vo.ContractBudgetVo;
|
|
|
import com.fjhx.sale.entity.pack.po.PackDetail;
|
|
|
import com.fjhx.sale.entity.pack.po.PackDetailProduct;
|
|
@@ -53,14 +58,11 @@ import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProject;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseDocumentaryVo;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
|
|
|
-import com.fjhx.sale.entity.sample.po.SampleProduct;
|
|
|
import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
|
|
|
-import com.fjhx.sale.service.contract.ContractProductService;
|
|
|
import com.fjhx.sale.service.contract.ContractService;
|
|
|
import com.fjhx.sale.service.pack.PackDetailProductService;
|
|
|
import com.fjhx.sale.service.pack.PackDetailService;
|
|
|
import com.fjhx.sale.service.purchase.*;
|
|
|
-import com.fjhx.sale.service.sample.SampleProductService;
|
|
|
import com.fjhx.supply.entity.supplier.po.SupplierInfo;
|
|
|
import com.fjhx.supply.entity.supplier.po.SupplierPrice;
|
|
|
import com.fjhx.supply.entity.supplier.vo.SupplierPriceVo;
|
|
@@ -127,10 +129,6 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
@Autowired
|
|
|
private InvoiceDetailsService invoiceDetailsService;
|
|
|
@Autowired
|
|
|
- private ContractProductService contractProductService;
|
|
|
- @Autowired
|
|
|
- private SampleProductService sampleProductService;
|
|
|
- @Autowired
|
|
|
private SubscribeDetailService subscribeDetailService;
|
|
|
@Autowired
|
|
|
private AccountManagementService accountManagementService;
|
|
@@ -140,6 +138,10 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
private ContractService contractService;
|
|
|
@Autowired
|
|
|
private SubscribeService subscribeService;
|
|
|
+ @Autowired
|
|
|
+ private EhsdPurchaseProductService purchaseProductService;
|
|
|
+ @Autowired
|
|
|
+ private SubscribeDetailMapper subscribeDetailMapper;
|
|
|
|
|
|
|
|
|
* 分页
|
|
@@ -482,37 +484,63 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
|
|
|
if (ObjectUtil.isNotEmpty(purchase) && purchase.getPayStatus() != 0) {
|
|
|
throw new ServiceException("采购合同已付款,禁止作废");
|
|
|
}
|
|
|
- purchase.setStatus(FlowStatusEnum1.CANCELLATION.getKey());
|
|
|
- this.updateById(purchase);
|
|
|
- List<EhsdPurchaseProduct> list = ehsdPurchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, id));
|
|
|
- if (ObjectUtils.isEmpty(list)) {
|
|
|
- return;
|
|
|
+
|
|
|
+ this.update(q -> q
|
|
|
+ .eq(EhsdPurchase::getId, id)
|
|
|
+ .set(EhsdPurchase::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ List<InOutBo> inOutBoList = new ArrayList<>();
|
|
|
+ List<EhsdPurchaseProduct> purchaseProductList = purchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, id));
|
|
|
+ for (EhsdPurchaseProduct purchaseProduct : purchaseProductList) {
|
|
|
+
|
|
|
+ if (Objects.equals(purchaseProduct.getDataResource(), PurchaseDataResourceEnum.DATA_RESOURCE_0)) {
|
|
|
+ InOutBo inOutBo = new InOutBo();
|
|
|
+ inOutBo.setProductId(purchaseProduct.getProductId());
|
|
|
+ inOutBo.setQuantity(purchaseProduct.getQuantity());
|
|
|
+ inOutBoList.add(inOutBo);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- for (EhsdPurchaseProduct ehsdPurchaseProduct : list) {
|
|
|
- Long dataResourceId = ehsdPurchaseProduct.getDataResourceId();
|
|
|
- BigDecimal purchaseQuantity = ehsdPurchaseProduct.getQuantity();
|
|
|
-
|
|
|
-
|
|
|
- if (ehsdPurchaseProduct.getDataResource() == 1) {
|
|
|
- contractProductService.update(q -> q
|
|
|
- .eq(ContractProduct::getId, dataResourceId)
|
|
|
- .setSql("expend_quantity = expend_quantity + " + purchaseQuantity)
|
|
|
- .set(BasePo::getUpdateTime, new Date())
|
|
|
- .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
- );
|
|
|
+ productInfoService.editAvailableQuantity(inOutBoList, InOutType.OUT, id, ProductAvailableRecordType.PURCHASE_CANCEL, purchase.getCompanyId());
|
|
|
+
|
|
|
+
|
|
|
+ updateSubscribeStatus(id);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 修改申购明细状态
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateSubscribeStatus(Long businessId) {
|
|
|
+
|
|
|
+ List<Long> subscribeDetailIds = purchaseProductService.listObject(EhsdPurchaseProduct::getSubscribeDetailId, q -> q
|
|
|
+ .eq(EhsdPurchaseProduct::getPurchaseId, businessId)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<SubscribeDetail> purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(subscribeDetailIds);
|
|
|
+ Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
|
|
|
+
|
|
|
+ List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
|
|
|
+ for (SubscribeDetail subscribeDetail : subscribeDetails) {
|
|
|
+
|
|
|
+ BigDecimal count = purchaseCountMap.getOrDefault(subscribeDetail.getId(), BigDecimal.ZERO);
|
|
|
+ if (count.compareTo(subscribeDetail.getCount()) >= 0) {
|
|
|
+
|
|
|
+ subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
|
|
|
+ } else {
|
|
|
+
|
|
|
+ subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- if (ehsdPurchaseProduct.getDataResource() == 1) {
|
|
|
- sampleProductService.update(q -> q
|
|
|
- .eq(SampleProduct::getId, dataResourceId)
|
|
|
- .setSql("expend_quantity = expend_quantity + " + purchaseQuantity)
|
|
|
- .set(BasePo::getUpdateTime, new Date())
|
|
|
- .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
- );
|
|
|
+ if (count.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+
|
|
|
+ subscribeDetail.setStatus(SubscribeDetailStatusEnum.PAID_AMOUNT.getKey());
|
|
|
}
|
|
|
}
|
|
|
+ subscribeDetailService.updateBatchById(subscribeDetails);
|
|
|
}
|
|
|
|
|
|
|