Commit 48936b95900240e21098347abfcabfae6e6b84c9

Authored by yeqianyong
2 parents c228e9dd 46c368d9

Merge remote-tracking branch 'origin/master_0929' into master_0929

@@ -455,6 +455,7 @@ public class ContractDistributorStandardController extends DefaultBaseController @@ -455,6 +455,7 @@ public class ContractDistributorStandardController extends DefaultBaseController
455 } 455 }
456 456
457 // todo ymk 锁规接口待完善 457 // todo ymk 锁规接口待完善
  458 + contractDistributorStandardService.specificationLock(vo);
458 459
459 contractDistributorStandardService.cleanCacheByKey(vo.getId()); 460 contractDistributorStandardService.cleanCacheByKey(vo.getId());
460 461
@@ -2,6 +2,8 @@ package com.lframework.xingyun.sc.entity; @@ -2,6 +2,8 @@ package com.lframework.xingyun.sc.entity;
2 2
3 import com.baomidou.mybatisplus.annotation.TableName; 3 import com.baomidou.mybatisplus.annotation.TableName;
4 import com.lframework.starter.web.core.dto.BaseDto; 4 import com.lframework.starter.web.core.dto.BaseDto;
  5 +
  6 +import java.math.BigDecimal;
5 import java.time.LocalDate; 7 import java.time.LocalDate;
6 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
7 import com.baomidou.mybatisplus.annotation.FieldFill; 9 import com.baomidou.mybatisplus.annotation.FieldFill;
@@ -85,6 +87,12 @@ public class PurchaseOrderRevoke extends BaseEntity implements BaseDto { @@ -85,6 +87,12 @@ public class PurchaseOrderRevoke extends BaseEntity implements BaseDto {
85 private String confirmationVoucherFileName; 87 private String confirmationVoucherFileName;
86 88
87 /** 89 /**
  90 + * 撤销撤销数量总和(吨)(非持久化字段)
  91 + */
  92 + @TableField(exist = false)
  93 + private BigDecimal sumRevokeQuantity;
  94 +
  95 + /**
88 * 创建人ID 96 * 创建人ID
89 */ 97 */
90 @TableField(fill = FieldFill.INSERT) 98 @TableField(fill = FieldFill.INSERT)
@@ -6,6 +6,9 @@ import com.lframework.starter.bpm.service.BusinessDataHandlerService; @@ -6,6 +6,9 @@ import com.lframework.starter.bpm.service.BusinessDataHandlerService;
6 import com.lframework.starter.web.core.components.redis.RedisHandler; 6 import com.lframework.starter.web.core.components.redis.RedisHandler;
7 import com.lframework.starter.web.core.utils.JsonUtil; 7 import com.lframework.starter.web.core.utils.JsonUtil;
8 import com.lframework.xingyun.sc.entity.CorePersonnelHistory; 8 import com.lframework.xingyun.sc.entity.CorePersonnelHistory;
  9 +import com.lframework.xingyun.sc.entity.PurchaseOrderLine;
  10 +import com.lframework.xingyun.sc.entity.PurchaseOrderRevoke;
  11 +import com.lframework.xingyun.sc.entity.PurchaseOrderRevokeLine;
9 import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; 12 import com.lframework.xingyun.sc.enums.CustomerDevelopStatus;
10 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; 13 import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
11 import com.lframework.xingyun.sc.service.customer.CorePersonnelHistoryService; 14 import com.lframework.xingyun.sc.service.customer.CorePersonnelHistoryService;
@@ -13,8 +16,13 @@ import com.lframework.xingyun.sc.service.customer.CustomerCreditHistoryService; @@ -13,8 +16,13 @@ import com.lframework.xingyun.sc.service.customer.CustomerCreditHistoryService;
13 import com.lframework.xingyun.sc.service.customer.CustomerCreditService; 16 import com.lframework.xingyun.sc.service.customer.CustomerCreditService;
14 import com.lframework.xingyun.sc.service.customer.CustomerDevelopPlanService; 17 import com.lframework.xingyun.sc.service.customer.CustomerDevelopPlanService;
15 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService; 18 import com.lframework.xingyun.sc.service.order.PurchaseOrderInfoService;
  19 +import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
  20 +import com.lframework.xingyun.sc.service.order.PurchaseOrderRevokeLineService;
  21 +import com.lframework.xingyun.sc.service.order.PurchaseOrderRevokeService;
16 import com.lframework.xingyun.sc.vo.customer.credit.QueryCorePersonnelHistoryVo; 22 import com.lframework.xingyun.sc.vo.customer.credit.QueryCorePersonnelHistoryVo;
17 import com.lframework.xingyun.sc.vo.customer.credit.UpdateCustomerCreditVo; 23 import com.lframework.xingyun.sc.vo.customer.credit.UpdateCustomerCreditVo;
  24 +import com.lframework.xingyun.sc.vo.order.QueryPurchaseOrderLineVo;
  25 +import com.lframework.xingyun.sc.vo.order.QueryPurchaseOrderRevokeLineVo;
18 import lombok.extern.slf4j.Slf4j; 26 import lombok.extern.slf4j.Slf4j;
19 import org.apache.commons.collections.CollectionUtils; 27 import org.apache.commons.collections.CollectionUtils;
20 import org.apache.commons.collections4.MapUtils; 28 import org.apache.commons.collections4.MapUtils;
@@ -25,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
25 import org.springframework.stereotype.Component; 33 import org.springframework.stereotype.Component;
26 34
27 import javax.annotation.Resource; 35 import javax.annotation.Resource;
  36 +import java.math.BigDecimal;
28 import java.util.ArrayList; 37 import java.util.ArrayList;
29 import java.util.List; 38 import java.util.List;
30 import java.util.Map; 39 import java.util.Map;
@@ -48,6 +57,12 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic @@ -48,6 +57,12 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic
48 private ContractDistributorStandardService contractDistributorStandardService; 57 private ContractDistributorStandardService contractDistributorStandardService;
49 @Resource 58 @Resource
50 private PurchaseOrderInfoService purchaseOrderInfoService; 59 private PurchaseOrderInfoService purchaseOrderInfoService;
  60 + @Resource
  61 + private PurchaseOrderLineService purchaseOrderLineService;
  62 + @Resource
  63 + private PurchaseOrderRevokeService purchaseOrderRevokeService;
  64 + @Resource
  65 + private PurchaseOrderRevokeLineService purchaseOrderRevokeLineService;
51 66
52 67
53 /** 68 /**
@@ -93,6 +108,9 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic @@ -93,6 +108,9 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic
93 case "PURCHASE_ORDER": 108 case "PURCHASE_ORDER":
94 handlePurchaseOrderData(flowStatus, businessId); 109 handlePurchaseOrderData(flowStatus, businessId);
95 break; 110 break;
  111 + case "ORDER_CANCELLATION":
  112 + handlePurchaseOrderRevokeData(flowStatus, businessId);
  113 + break;
96 default: 114 default:
97 break; 115 break;
98 } 116 }
@@ -158,6 +176,62 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic @@ -158,6 +176,62 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic
158 } 176 }
159 177
160 /** 178 /**
  179 + * 订货单撤销业务数据处理
  180 + *
  181 + * @param businessId 业务ID
  182 + */
  183 + private void handlePurchaseOrderRevokeData(String flowStatus, String businessId) {
  184 + if (FlowInstanceStatus.APPROVE_PASS.getCode().equals(flowStatus)
  185 + || FlowInstanceStatus.FINISH.getCode().equals(flowStatus)) {
  186 + purchaseOrderRevokeService.updateStatus(businessId, "PASS");
  187 + //撤销单物料行
  188 + QueryPurchaseOrderRevokeLineVo vo = new QueryPurchaseOrderRevokeLineVo();
  189 + vo.setPurchaseOrderRevokeId(businessId);
  190 + List<PurchaseOrderRevokeLine> query = purchaseOrderRevokeLineService.query(vo);
  191 + PurchaseOrderRevoke revoke = purchaseOrderRevokeService.findById(businessId);
  192 + QueryPurchaseOrderLineVo vo1 = new QueryPurchaseOrderLineVo();
  193 + vo1.setPurchaseOrderId(revoke.getPurchaseOrderId());
  194 + List<PurchaseOrderLine> query1 = purchaseOrderLineService.query(vo1);
  195 + //更新订货单物料行数量
  196 + if (CollectionUtils.isNotEmpty(query)) {
  197 + //是否为全部撤销
  198 + Boolean b = true;
  199 + if (query.size() < query1.size()) {
  200 + b = false;
  201 + }
  202 + for (PurchaseOrderRevokeLine purchaseOrderRevokeLine : query) {
  203 + //原数量
  204 + BigDecimal quantity = purchaseOrderRevokeLine.getQuantity();
  205 + //撤销数量kg
  206 + BigDecimal revokeQuantity = purchaseOrderRevokeLine.getRevokeQuantity();
  207 + if (revokeQuantity == null) {
  208 + revokeQuantity = BigDecimal.ZERO;
  209 + }
  210 + if (b && !(quantity != null && quantity.compareTo(revokeQuantity) == 0)) {
  211 + b = false;
  212 + }
  213 + if (quantity != null) {
  214 + BigDecimal result = quantity.subtract(revokeQuantity);
  215 + purchaseOrderLineService.updateQuantity(purchaseOrderRevokeLine.getPurchaseOrderLineId(), result);
  216 + }
  217 + }
  218 + //更新订货单撤销状态(部分撤销、全部撤销)
  219 + if (b) {
  220 + //全部撤销
  221 + purchaseOrderInfoService.updateRevokeStatus(revoke.getPurchaseOrderId(), "ALL");
  222 + } else {
  223 + //部分撤销
  224 + purchaseOrderInfoService.updateRevokeStatus(revoke.getPurchaseOrderId(), "PARTIAL");
  225 + }
  226 + }
  227 + } else if (FlowInstanceStatus.REVOKE.getCode().equals(flowStatus)
  228 + || FlowInstanceStatus.REFUSE.getCode().equals(flowStatus)
  229 + || FlowInstanceStatus.TERMINATION.getCode().equals(flowStatus)) {
  230 + purchaseOrderRevokeService.updateStatus(businessId, "REFUSE");
  231 + }
  232 + }
  233 +
  234 + /**
161 * 客户资信业务数据处理 235 * 客户资信业务数据处理
162 * 236 *
163 * @param businessId 业务ID 237 * @param businessId 业务ID
@@ -41,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -41,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
41 41
42 import javax.annotation.Resource; 42 import javax.annotation.Resource;
43 import java.io.Serializable; 43 import java.io.Serializable;
  44 +import java.math.BigDecimal;
44 import java.time.LocalDate; 45 import java.time.LocalDate;
45 import java.time.LocalDateTime; 46 import java.time.LocalDateTime;
46 import java.util.ArrayList; 47 import java.util.ArrayList;
@@ -558,6 +559,72 @@ public class ContractDistributorStandardServiceImpl extends @@ -558,6 +559,72 @@ public class ContractDistributorStandardServiceImpl extends
558 OpLogUtil.setExtra(vo); 559 OpLogUtil.setExtra(vo);
559 } 560 }
560 561
  562 + @Override
  563 + @OpLog(type = OtherOpLogType.class, name = "合同锁规,ID:{}", params = {"#vo.id"})
  564 + @Transactional(rollbackFor = Exception.class)
  565 + public void specificationLock(UpdateContractDistributorStandardVo vo) {
  566 + ContractDistributorStandard data = getBaseMapper().selectById(vo.getId());
  567 + if (ObjectUtil.isNull(data)) {
  568 + throw new DefaultClientException("合同不存在!");
  569 + }
  570 +
  571 + List<UpdateContractDistributorLineVo> lineVoList = vo.getContractDistributorLineList();
  572 + if (CollectionUtils.isEmpty(lineVoList)) {
  573 + throw new DefaultClientException("合同行数据为空!");
  574 + }
  575 +
  576 + Wrapper<ContractDistributorStandard> childWrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class)
  577 + .eq(ContractDistributorStandard::getParentId, vo.getId());
  578 +
  579 + List<ContractDistributorStandard> childContractList = getBaseMapper().selectList(childWrapper);
  580 + BigDecimal allChildTotalQuantity = vo.getTotalQuantity().add(CollectionUtils.isEmpty(childContractList) ? new BigDecimal(0) : childContractList.get(0).getTotalQuantity());
  581 + if (allChildTotalQuantity.compareTo(data.getTotalQuantity()) > 0) {
  582 + throw new DefaultClientException("锁规总数量大于合同总数量,锁规失败!");
  583 + }
  584 +
  585 + // 判断锁规是否完成(锁规两次或锁规数量等于合同数量)
  586 + boolean checkPriceSpecLocked = CollectionUtils.isNotEmpty(childContractList) || (allChildTotalQuantity.compareTo(data.getTotalQuantity()) == 0);
  587 +
  588 + data.setId(IdUtil.getUUID());
  589 + data.setTotalQuantity(vo.getTotalQuantity());
  590 + data.setTotalAmountCapital(vo.getTotalAmountCapital());
  591 + data.setTotalAmountExcludingTax(vo.getTotalAmountExcludingTax());
  592 + data.setTotalAmountIncludingTax(vo.getTotalAmountIncludingTax());
  593 + data.setStatus("STANDARD");
  594 + data.setParentId(vo.getId());
  595 + getBaseMapper().insert(data);
  596 +
  597 + Wrapper<ContractDistributorLine> lineWrapper = Wrappers.lambdaQuery(ContractDistributorLine.class)
  598 + .eq(ContractDistributorLine::getContractId, vo.getId())
  599 + .orderByAsc(ContractDistributorLine::getShowOrder);
  600 + List<ContractDistributorLine> oldContractDistributorLineList = contractDistributorLineService.list(lineWrapper);
  601 + Map<String, ContractDistributorLine> contractDistributorLineMap = CollectionUtils.emptyIfNull(oldContractDistributorLineList)
  602 + .stream().collect(Collectors.toMap(ContractDistributorLine::getId, Function.identity()));
  603 +
  604 + for (UpdateContractDistributorLineVo lineVo : lineVoList) {
  605 + ContractDistributorLine contractDistributorLine = contractDistributorLineMap.remove(lineVo.getId());
  606 + if (contractDistributorLine == null) {
  607 + throw new DefaultClientException("合同行数据不存在!");
  608 + }
  609 +
  610 + contractDistributorLine.setId(IdUtil.getUUID());
  611 + contractDistributorLine.setContractId(data.getId());
  612 + contractDistributorLine.setQuantity(lineVo.getQuantity());
  613 + contractDistributorLine.setUnitPrice(lineVo.getUnitPrice());
  614 + contractDistributorLine.setAmountExcludingTax(lineVo.getAmountExcludingTax());
  615 + contractDistributorLine.setTotalAmount(lineVo.getTotalAmount());
  616 + contractDistributorLineService.getBaseMapper().insert(contractDistributorLine);
  617 + }
  618 +
  619 + Wrapper<ContractDistributorStandard> changeLocked = Wrappers.lambdaUpdate(ContractDistributorStandard.class)
  620 + .set(ContractDistributorStandard::getPriceSpecLocked, checkPriceSpecLocked)
  621 + .eq(ContractDistributorStandard::getId, vo.getId());
  622 + getBaseMapper().update(changeLocked);
  623 +
  624 + OpLogUtil.setVariable("id", vo.getId());
  625 + OpLogUtil.setExtra(vo);
  626 + }
  627 +
561 @CacheEvict(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #key") 628 @CacheEvict(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
562 @Override 629 @Override
563 public void cleanCacheByKey(Serializable key) { 630 public void cleanCacheByKey(Serializable key) {
@@ -28,6 +28,7 @@ import org.apache.commons.collections4.CollectionUtils; @@ -28,6 +28,7 @@ import org.apache.commons.collections4.CollectionUtils;
28 import org.springframework.transaction.annotation.Transactional; 28 import org.springframework.transaction.annotation.Transactional;
29 import org.springframework.stereotype.Service; 29 import org.springframework.stereotype.Service;
30 30
  31 +import java.math.BigDecimal;
31 import java.util.Collections; 32 import java.util.Collections;
32 import java.util.List; 33 import java.util.List;
33 34
@@ -167,6 +168,26 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde @@ -167,6 +168,26 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde
167 OpLogUtil.setExtra(vo); 168 OpLogUtil.setExtra(vo);
168 } 169 }
169 170
  171 + @OpLog(type = OtherOpLogType.class, name = "修改订货单表物料行数量,ID:{}", params = {"#id"})
  172 + @Transactional(rollbackFor = Exception.class)
  173 + @Override
  174 + public void updateQuantity(String id, BigDecimal quantity) {
  175 +
  176 + PurchaseOrderLine data = getBaseMapper().selectById(id);
  177 + if (ObjectUtil.isNull(data)) {
  178 + throw new DefaultClientException("订货单表物料行不存在!");
  179 + }
  180 +
  181 + LambdaUpdateWrapper<PurchaseOrderLine> updateWrapper = Wrappers.lambdaUpdate(PurchaseOrderLine.class)
  182 + .set(PurchaseOrderLine::getQuantity, quantity)
  183 + .eq(PurchaseOrderLine::getId, id);
  184 +
  185 + getBaseMapper().update(updateWrapper);
  186 +
  187 + OpLogUtil.setVariable("id", data.getId());
  188 + OpLogUtil.setExtra(id);
  189 + }
  190 +
170 @OpLog(type = OtherOpLogType.class, name = "删除订货单表物料行,ID:{}", params = {"#id"}) 191 @OpLog(type = OtherOpLogType.class, name = "删除订货单表物料行,ID:{}", params = {"#id"})
171 @Transactional(rollbackFor = Exception.class) 192 @Transactional(rollbackFor = Exception.class)
172 @Override 193 @Override
@@ -3,6 +3,7 @@ package com.lframework.xingyun.sc.impl.order; @@ -3,6 +3,7 @@ package com.lframework.xingyun.sc.impl.order;
3 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 3 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
4 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 import com.github.pagehelper.PageInfo; 5 import com.github.pagehelper.PageInfo;
  6 +import com.lframework.starter.bpm.service.FlowInstanceWrapperService;
6 import com.lframework.starter.common.utils.CollectionUtil; 7 import com.lframework.starter.common.utils.CollectionUtil;
7 import com.lframework.starter.web.core.impl.BaseMpServiceImpl; 8 import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
8 import com.lframework.starter.web.core.utils.PageResultUtil; 9 import com.lframework.starter.web.core.utils.PageResultUtil;
@@ -29,16 +30,21 @@ import org.springframework.transaction.annotation.Transactional; @@ -29,16 +30,21 @@ import org.springframework.transaction.annotation.Transactional;
29 import org.springframework.stereotype.Service; 30 import org.springframework.stereotype.Service;
30 31
31 import javax.annotation.Resource; 32 import javax.annotation.Resource;
  33 +import java.math.BigDecimal;
  34 +import java.math.RoundingMode;
32 import java.time.LocalDate; 35 import java.time.LocalDate;
33 import java.util.List; 36 import java.util.List;
34 37
35 @Service 38 @Service
36 public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOrderRevokeMapper, PurchaseOrderRevoke> implements PurchaseOrderRevokeService { 39 public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOrderRevokeMapper, PurchaseOrderRevoke> implements PurchaseOrderRevokeService {
  40 + private static final String BPM_FLAG = "ORDER_CANCELLATION";
37 41
38 @Resource 42 @Resource
39 private PurchaseOrderRevokeLineService purchaseOrderRevokeLineService; 43 private PurchaseOrderRevokeLineService purchaseOrderRevokeLineService;
40 @Resource 44 @Resource
41 private PurchaseOrderInfoService purchaseOrderInfoService; 45 private PurchaseOrderInfoService purchaseOrderInfoService;
  46 + @Resource
  47 + private FlowInstanceWrapperService flowInstanceWrapperService;
42 48
43 49
44 @Override 50 @Override
@@ -108,6 +114,7 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr @@ -108,6 +114,7 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr
108 OpLogUtil.setExtra(vo); 114 OpLogUtil.setExtra(vo);
109 115
110 //新增订货单撤销表物料行 116 //新增订货单撤销表物料行
  117 + BigDecimal sumRevokeQuantity = BigDecimal.ZERO;
111 if (CollectionUtil.isNotEmpty(vo.getPurchaseOrderRevokeLineList())) { 118 if (CollectionUtil.isNotEmpty(vo.getPurchaseOrderRevokeLineList())) {
112 List<PurchaseOrderRevokeLine> purchaseOrderRevokeLineList = vo.getPurchaseOrderRevokeLineList(); 119 List<PurchaseOrderRevokeLine> purchaseOrderRevokeLineList = vo.getPurchaseOrderRevokeLineList();
113 for (PurchaseOrderRevokeLine purchaseOrderRevokeLine : purchaseOrderRevokeLineList) { 120 for (PurchaseOrderRevokeLine purchaseOrderRevokeLine : purchaseOrderRevokeLineList) {
@@ -129,14 +136,25 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr @@ -129,14 +136,25 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr
129 vo1.setQuantity(purchaseOrderRevokeLine.getQuantity()); 136 vo1.setQuantity(purchaseOrderRevokeLine.getQuantity());
130 vo1.setSalesPrice(purchaseOrderRevokeLine.getSalesPrice()); 137 vo1.setSalesPrice(purchaseOrderRevokeLine.getSalesPrice());
131 vo1.setDeliveryDate(purchaseOrderRevokeLine.getDeliveryDate()); 138 vo1.setDeliveryDate(purchaseOrderRevokeLine.getDeliveryDate());
  139 + if (purchaseOrderRevokeLine.getRevokeQuantity() != null) {
  140 + BigDecimal value = new BigDecimal(String.valueOf(purchaseOrderRevokeLine.getRevokeQuantity()));
  141 + // 累加,注意要重新赋值
  142 + sumRevokeQuantity = sumRevokeQuantity.add(value);
  143 + }
132 vo1.setRevokeQuantity(purchaseOrderRevokeLine.getRevokeQuantity()); 144 vo1.setRevokeQuantity(purchaseOrderRevokeLine.getRevokeQuantity());
133 vo1.setShowOrder(purchaseOrderRevokeLine.getShowOrder()); 145 vo1.setShowOrder(purchaseOrderRevokeLine.getShowOrder());
134 purchaseOrderRevokeLineService.create(vo1); 146 purchaseOrderRevokeLineService.create(vo1);
135 } 147 }
136 } 148 }
  149 + // 转换为吨:除以 1000
  150 + BigDecimal bigDecimal = sumRevokeQuantity.divide(new BigDecimal("1000"), 6, RoundingMode.HALF_UP);
  151 + data.setSumRevokeQuantity(bigDecimal);
137 //更新订货单撤销状态为:撤销中 152 //更新订货单撤销状态为:撤销中
138 purchaseOrderInfoService.updateRevokeStatus(vo.getPurchaseOrderId(), "UNDOING"); 153 purchaseOrderInfoService.updateRevokeStatus(vo.getPurchaseOrderId(), "UNDOING");
139 154
  155 + //开启审核
  156 + flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, data);
  157 +
140 return data.getId(); 158 return data.getId();
141 } 159 }
142 160
@@ -161,12 +179,23 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr @@ -161,12 +179,23 @@ public class PurchaseOrderRevokeServiceImpl extends BaseMpServiceImpl<PurchaseOr
161 getBaseMapper().update(updateWrapper); 179 getBaseMapper().update(updateWrapper);
162 180
163 //撤销单物料行修改 181 //撤销单物料行修改
  182 + BigDecimal sumRevokeQuantity = BigDecimal.ZERO;
164 List<UpdatePurchaseOrderRevokeLineVo> voList = vo.getUpdatePurchaseOrderRevokeLineVoList(); 183 List<UpdatePurchaseOrderRevokeLineVo> voList = vo.getUpdatePurchaseOrderRevokeLineVoList();
165 if (CollectionUtil.isNotEmpty(voList)) { 184 if (CollectionUtil.isNotEmpty(voList)) {
166 for (UpdatePurchaseOrderRevokeLineVo vo1 : voList) { 185 for (UpdatePurchaseOrderRevokeLineVo vo1 : voList) {
  186 + if (vo1.getRevokeQuantity() != null) {
  187 + BigDecimal value = new BigDecimal(String.valueOf(vo1.getRevokeQuantity()));
  188 + // 累加,注意要重新赋值
  189 + sumRevokeQuantity = sumRevokeQuantity.add(value);
  190 + }
167 purchaseOrderRevokeLineService.update(vo1); 191 purchaseOrderRevokeLineService.update(vo1);
168 } 192 }
169 } 193 }
  194 + // 转换为吨:除以 1000
  195 + BigDecimal bigDecimal = sumRevokeQuantity.divide(new BigDecimal("1000"), 6, RoundingMode.HALF_UP);
  196 + data.setSumRevokeQuantity(bigDecimal);
  197 + //开启审核
  198 + flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, data);
170 199
171 OpLogUtil.setVariable("id", data.getId()); 200 OpLogUtil.setVariable("id", data.getId());
172 OpLogUtil.setExtra(vo); 201 OpLogUtil.setExtra(vo);
@@ -88,4 +88,11 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra @@ -88,4 +88,11 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra
88 */ 88 */
89 void stockContractPriceLock(UpdateContractDistributorStandardVo vo); 89 void stockContractPriceLock(UpdateContractDistributorStandardVo vo);
90 90
  91 + /**
  92 + * 锁规
  93 + *
  94 + * @param vo
  95 + */
  96 + void specificationLock(UpdateContractDistributorStandardVo vo);
  97 +
91 } 98 }
@@ -6,6 +6,8 @@ import com.lframework.xingyun.sc.entity.PurchaseOrderLine; @@ -6,6 +6,8 @@ import com.lframework.xingyun.sc.entity.PurchaseOrderLine;
6 import com.lframework.xingyun.sc.vo.order.CreatePurchaseOrderLineVo; 6 import com.lframework.xingyun.sc.vo.order.CreatePurchaseOrderLineVo;
7 import com.lframework.xingyun.sc.vo.order.QueryPurchaseOrderLineVo; 7 import com.lframework.xingyun.sc.vo.order.QueryPurchaseOrderLineVo;
8 import com.lframework.xingyun.sc.vo.order.UpdatePurchaseOrderLineVo; 8 import com.lframework.xingyun.sc.vo.order.UpdatePurchaseOrderLineVo;
  9 +
  10 +import java.math.BigDecimal;
9 import java.util.List; 11 import java.util.List;
10 12
11 /** 13 /**
@@ -47,6 +49,14 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin @@ -47,6 +49,14 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin
47 void update(UpdatePurchaseOrderLineVo vo); 49 void update(UpdatePurchaseOrderLineVo vo);
48 50
49 /** 51 /**
  52 + * 修改数量
  53 + *
  54 + * @param id 主建
  55 + * @param quantity 数量
  56 + */
  57 + void updateQuantity(String id, BigDecimal quantity);
  58 +
  59 + /**
50 * 根据ID删除 60 * 根据ID删除
51 * @param id 61 * @param id
52 * @return 62 * @return