|
@@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.fjhx.common.constant.SourceConstant;
|
|
|
import com.fjhx.common.enums.CodingRuleEnum;
|
|
|
+import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
import com.fjhx.common.service.coding.CodingRuleService;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.flow.core.FlowDelegate;
|
|
|
import com.fjhx.flow.core.FlowThreadLocalUtil;
|
|
|
import com.fjhx.flow.enums.FlowStatusEnum;
|
|
@@ -86,45 +88,13 @@ public class PurchaseFlow extends FlowDelegate {
|
|
|
public Long start(Long flowId, JSONObject submitData) {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
|
|
|
PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
|
|
|
-// purchase.setCode(CodeEnum.PURCHASE.getCode());
|
|
|
purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(), null));
|
|
|
- purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
|
|
|
purchase.setFlowId(flowId);
|
|
|
- purchaseService.save(purchase);
|
|
|
- List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
|
|
|
- if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
|
|
|
- for (PurchaseDetail s : purchaseDetailList) {
|
|
|
- s.setPurchaseId(purchase.getId());
|
|
|
- }
|
|
|
- purchaseDetailService.saveBatch(purchaseDetailList);
|
|
|
- //修改申购明细的采购状态
|
|
|
- for (PurchaseDetail purchaseDetail : purchaseDetailList) {
|
|
|
- //如果来源是申购
|
|
|
- if (ObjectUtils.isEmpty(purchaseDetail.getDataResource())) {
|
|
|
- //计算已经采购的数量
|
|
|
- List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q
|
|
|
- .eq(PurchaseDetail::getSubscribeDetailId, purchaseDetail.getSubscribeDetailId())
|
|
|
- );
|
|
|
- BigDecimal pdCount = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
|
|
|
- if (pdCount.compareTo(subscribeDetail.getCount()) >= 0) {
|
|
|
- //修改为已采购
|
|
|
- subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
|
|
|
- } else {
|
|
|
- //修改为部分采购
|
|
|
- subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
|
|
|
- }
|
|
|
- subscribeDetailService.updateById(subscribeDetail);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
- //保存其他费用信息
|
|
|
- List<PurchaseOtherFee> otherFeeList = purchase.getOtherFeeList();
|
|
|
- if (ObjectUtils.isNotEmpty(otherFeeList)) {
|
|
|
- otherFeeList.forEach(item -> item.setPurchaseId(purchase.getId()));
|
|
|
- purchaseOtherFeeService.saveBatch(otherFeeList);
|
|
|
- }
|
|
|
+ //调用公共代码
|
|
|
+ purchase = commStart(purchase, 0);
|
|
|
+
|
|
|
+
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
return purchase.getId();
|
|
|
}
|
|
@@ -190,7 +160,77 @@ public class PurchaseFlow extends FlowDelegate {
|
|
|
|
|
|
@Override
|
|
|
public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
|
|
|
+ //重新发起
|
|
|
+ if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
|
|
|
+ // 获取提交数据
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
|
|
|
+ PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
|
|
|
+ commStart(purchase, 1);
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ }
|
|
|
+ //驳回
|
|
|
+ if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
|
|
|
+ reject();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始公共代码抽取
|
|
|
+ *
|
|
|
+ * @param opType 操作类型 0直接发起 1重新发起
|
|
|
+ */
|
|
|
+ private PurchaseVo commStart(PurchaseVo purchase, Integer opType) {
|
|
|
+ if (opType == 1) {
|
|
|
+ Assert.notEmpty(purchase.getId(), "采购id不能为空");
|
|
|
+ }
|
|
|
+ purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
|
|
|
+ purchaseService.saveOrUpdate(purchase);
|
|
|
+ List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
|
|
|
+ if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
|
|
|
+ if (opType == 1) {
|
|
|
+ //先删除被删除的产品
|
|
|
+ purchaseDetailService.editLinked(purchaseDetailList, PurchaseDetail::getPurchaseId, purchase.getId());
|
|
|
+ }
|
|
|
+ for (PurchaseDetail s : purchaseDetailList) {
|
|
|
+ s.setPurchaseId(purchase.getId());
|
|
|
+ }
|
|
|
+ purchaseDetailService.saveOrUpdateBatch(purchaseDetailList);
|
|
|
+
|
|
|
+ //修改申购明细的采购状态
|
|
|
+ for (PurchaseDetail purchaseDetail : purchaseDetailList) {
|
|
|
+ //如果来源是申购
|
|
|
+ if (ObjectUtils.isEmpty(purchaseDetail.getDataResource())) {
|
|
|
+ //计算已经采购的数量
|
|
|
+ List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q
|
|
|
+ .eq(PurchaseDetail::getSubscribeDetailId, purchaseDetail.getSubscribeDetailId())
|
|
|
+ );
|
|
|
+ BigDecimal pdCount = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
|
|
|
+ if (pdCount.compareTo(subscribeDetail.getCount()) >= 0) {
|
|
|
+ //修改为已采购
|
|
|
+ subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
|
|
|
+ } else {
|
|
|
+ //修改为部分采购
|
|
|
+ subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
|
|
|
+ }
|
|
|
+ subscribeDetailService.updateById(subscribeDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存其他费用信息
|
|
|
+ List<PurchaseOtherFee> otherFeeList = purchase.getOtherFeeList();
|
|
|
+ if (ObjectUtils.isNotEmpty(otherFeeList)) {
|
|
|
+ if (opType == 1) {
|
|
|
+ //先删除被删除的产品
|
|
|
+ purchaseOtherFeeService.editLinked(otherFeeList, PurchaseOtherFee::getPurchaseId, purchase.getId());
|
|
|
+ }
|
|
|
+ otherFeeList.forEach(item -> item.setPurchaseId(purchase.getId()));
|
|
|
+ purchaseOtherFeeService.saveOrUpdateBatch(otherFeeList);
|
|
|
+ }
|
|
|
|
|
|
+ return purchase;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -200,8 +240,8 @@ public class PurchaseFlow extends FlowDelegate {
|
|
|
if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
|
|
|
purchaseService.update(q -> q
|
|
|
.eq(Purchase::getId, FlowThreadLocalUtil.getBusinessId())
|
|
|
- .set(Purchase::getPurchaseStatus, 20)
|
|
|
- .set(Purchase::getUpdateTime, new Date())
|
|
|
+ .set(Purchase::getPurchaseStatus, FlowStatusEnum1.REJECT.getKey())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
);
|
|
|
}
|