Browse Source

2024年7月15日17:28:13

纪新园 1 year ago
parent
commit
d08331d488

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -587,4 +587,10 @@ public class PjOrder implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal returnsBalanceAmount;
 
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private Integer version;
+
 }

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -635,6 +635,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						multiply = multiply.add(item.getAmount().multiply(order.getExchangeRate()));
 						amountCost = amountCost.add(cost.multiply(item.getOrderQuantity()));
 					}
+					item.setGoodsGrossProfit(ObjectUtils.isNull(item.getGoodsGrossProfit()) ? new BigDecimal("0.00") : item.getGoodsGrossProfit());
+					item.setOrderQuantity(ObjectUtils.isNull(item.getOrderQuantity()) ? new BigDecimal("0.00") : item.getOrderQuantity());
 				}
 				// 毛利额
 //				order.setGrossProfit(list.stream().map(OrderItems::getGoodsGrossProfit).reduce(BigDecimal.ZERO, BigDecimal::add));

+ 76 - 11
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -386,12 +386,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						if (!orderListDS.isEmpty()) {
 							BigDecimal returnCostprie = new BigDecimal("0.00");
 							for (PjOrderItems items : pjOrderItemsList) {
-								if (!"1".equals(items.getDeduplication())){
-									if (orderListDS.contains(items.getPid())){
+								if (!"1".equals(items.getDeduplication())) {
+									if (orderListDS.contains(items.getPid())) {
 										salesAmount = salesAmount.add(items.getSubTotalMoney());
 										costprie = costprie.add(items.getCostprie());
 										if ((ObjectUtils.isNotNull(items.getReturnsNumber()) &&
-											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)){
+											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)) {
 											returnAmount = returnAmount.add(items.getReturnsAmount());
 											if (ObjectUtils.isNotNull(items.getCostprie())) {
 												BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
@@ -542,12 +542,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						if (!orderListDS.isEmpty()) {
 							BigDecimal returnCostprie = new BigDecimal("0.00");
 							for (PjOrderItems items : pjOrderItemsList) {
-								if (!"1".equals(items.getDeduplication())){
-									if (orderListDS.contains(items.getPid())){
+								if (!"1".equals(items.getDeduplication())) {
+									if (orderListDS.contains(items.getPid())) {
 										salesAmount = salesAmount.add(items.getSubTotalMoney());
 										costprie = costprie.add(items.getCostprie());
 										if ((ObjectUtils.isNotNull(items.getReturnsNumber()) &&
-											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)){
+											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)) {
 											returnAmount = returnAmount.add(items.getReturnsAmount());
 											if (ObjectUtils.isNotNull(items.getCostprie())) {
 												BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
@@ -891,7 +891,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R shortcutWarehousing(PjOrder order) {
 		PjOrder pjOrder = baseMapper.selectById(order.getId());
-
+		if (!pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		PjShip pjShip = new PjShip();
 		// 获取系统编号
 		R billNo = serialClient.getBillNo(OrderTypeEnum.SHRW.getType(), OrderTypeEnum.SHRW.getType(), OrderTypeEnum.SHRW.getType());
@@ -1475,6 +1478,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				baseMapper.insert(order);
 			} else {
+				PjOrder orderVersion = baseMapper.selectById(order.getId());
+				if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+					throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+				}
+				order.setVersion(order.getVersion() + 1);
 				order.setUpdateUser(AuthUtil.getUserId());
 				order.setUpdateTime(new Date());
 				baseMapper.updateById(order);
@@ -1599,6 +1607,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				baseMapper.insert(order);
 			} else {
+				PjOrder orderVersion = baseMapper.selectById(order.getId());
+				if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+					throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+				}
+				order.setVersion(order.getVersion() + 1);
 				order.setUpdateUser(AuthUtil.getUserId());
 				order.setUpdateTime(new Date());
 				baseMapper.updateById(order);
@@ -1710,6 +1723,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setSourceCompanyName(pjOrder.getSalesCompanyName());
 		shipMapper.insert(pjShip);
 
+		if ( !pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改销售状态为待发货
 		pjOrder.setStatus(OrderTypeEnum.TOBESHIPPEDOUT.getType());
 		pjOrder.setXcxStatus(OrderTypeEnum.TOBESHIPPEDOUT.getType());
@@ -1801,6 +1818,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			throw new RuntimeException("出库已完成,禁止撤销!");
 		}
+		if ( !pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改销售状态为待发货
 		pjOrder.setStatus(OrderTypeEnum.XSDQR.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
@@ -1905,6 +1926,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateTime(new Date());
 		shipMapper.insert(pjShip);
 
+		if ( !pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改采购状态
 		pjOrder.setStatus(OrderTypeEnum.TREATWAREHOUSING.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.SCRW.getType());
@@ -2004,6 +2029,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			throw new RuntimeException("入库已完成,禁止撤销!");
 		}
+		if ( !pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改销售状态为待发货
 		pjOrder.setStatus(OrderTypeEnum.XSDQR.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
@@ -2081,6 +2110,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder checkOrderReturns(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		//审批数据
 		PjAuditProecessDTO auditProecessDTO = new PjAuditProecessDTO();
 		//获取审批级次
@@ -2169,6 +2199,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder revokeCheckOrderReturns(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		R financeProcess = auditProecessService.deteleByBillId(order.getId());
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
@@ -2198,7 +2229,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder checkOrderCGReturns(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
-
+		declare.setVersion(declare.getVersion() + 1);
 		//审批数据
 		PjAuditProecessDTO auditProecessDTO = new PjAuditProecessDTO();
 		//获取审批级次
@@ -2284,6 +2315,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder revokeCheckOrderCGReturns(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		R financeProcess = auditProecessService.deteleByBillId(order.getId());
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
@@ -2648,12 +2680,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						if (!orderListDS.isEmpty()) {
 							BigDecimal returnCostprie = new BigDecimal("0.00");
 							for (PjOrderItems items : pjOrderItemsList) {
-								if (!"1".equals(items.getDeduplication())){
-									if (orderListDS.contains(items.getPid())){
+								if (!"1".equals(items.getDeduplication())) {
+									if (orderListDS.contains(items.getPid())) {
 										salesAmount = salesAmount.add(items.getSubTotalMoney());
 										costprie = costprie.add(items.getCostprie());
 										if ((ObjectUtils.isNotNull(items.getReturnsNumber()) &&
-											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)){
+											new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0)) {
 											returnAmount = returnAmount.add(items.getReturnsAmount());
 											if (ObjectUtils.isNotNull(items.getCostprie())) {
 												BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
@@ -2814,6 +2846,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				baseMapper.insert(order);
 			} else {
+				PjOrder orderVersion = baseMapper.selectById(order.getId());
+				if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+					throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+				}
+				order.setVersion(order.getVersion() + 1);
 				order.setUpdateUser(AuthUtil.getUserId());
 				order.setUpdateTime(new Date());
 				baseMapper.updateById(order);
@@ -2991,6 +3028,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				baseMapper.insert(order);
 			} else {
+				PjOrder orderVersion = baseMapper.selectById(order.getId());
+				if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+					throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+				}
+				order.setVersion(order.getVersion() + 1);
 				order.setUpdateUser(AuthUtil.getUserId());
 				order.setUpdateTime(new Date());
 				baseMapper.updateById(order);
@@ -3108,6 +3150,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setSourceCompanyName(pjOrder.getSalesCompanyName());
 		shipMapper.insert(pjShip);
 
+		if (!pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
+
 		//修改销售状态为待发货
 		pjOrder.setStatus(OrderTypeEnum.XSDFH.getType());
 		pjOrder.setXcxStatus(OrderTypeEnum.XSDFH.getType());
@@ -3338,6 +3385,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			throw new RuntimeException("出库已完成,禁止撤销!");
 		}
+
+		if (!pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改销售状态为待发货
 		pjOrder.setStatus(OrderTypeEnum.XSDQR.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.NSCRW.getType());
@@ -3445,6 +3497,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateTime(new Date());
 		shipMapper.insert(pjShip);
 
+		if (!pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改采购状态
 		pjOrder.setStatus(OrderTypeEnum.GOODSRECEIVED.getType());
 		pjOrder.setGenerateTask(OrderTypeEnum.SCRW.getType());
@@ -3583,6 +3639,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder checkOrder(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		List<PjOrder> pjOrderList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 			.eq(PjOrder::getSrcNo, declare.getOrdNo())
 			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
@@ -3680,6 +3737,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
+		order.setVersion(order.getVersion() + 1);
 		List<Long> goodsIds = new ArrayList<>();
 		if ("XS".equals(order.getBsType()) || "TKXS".equals(order.getBsType())) {
 			PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
@@ -4051,6 +4109,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder revokeCheckOrder(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		R financeProcess = auditProecessService.deteleByBillId(order.getId());
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
@@ -4076,6 +4135,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder checkOrderCG(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 
 		//审批数据
 		PjAuditProecessDTO auditProecessDTO = new PjAuditProecessDTO();
@@ -4153,6 +4213,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder revokeCheckOrderCG(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		declare.setVersion(declare.getVersion() + 1);
 		R financeProcess = auditProecessService.deteleByBillId(order.getId());
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
@@ -4177,6 +4238,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			throw new RuntimeException("入库已完成,禁止撤销!");
 		}
+		if (!pjOrder.getVersion().equals(order.getVersion())) {
+			throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+		}
+		pjOrder.setVersion(order.getVersion() + 1);
 		//修改销售状态为待发货
 		if ("1".equals(pjOrder.getShortcutWarehousingStatus())) {
 			pjOrder.setStatus(OrderTypeEnum.XSLR.getType());