lazhaoqian 3 лет назад
Родитель
Сommit
0cb6625790
14 измененных файлов с 203 добавлено и 16 удалено
  1. 6 0
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/entity/SalesPolicyItem.java
  2. 24 1
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java
  3. 1 1
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  4. 1 1
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  5. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderVO.java
  6. 1 1
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  7. 1 1
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java
  8. 15 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  9. 26 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java
  10. 37 3
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java
  11. 31 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PolicyExcel.java
  12. 9 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java
  13. 43 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java
  14. 3 3
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

+ 6 - 0
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/entity/SalesPolicyItem.java

@@ -183,5 +183,11 @@ public class SalesPolicyItem implements Serializable {
 	 */
 	@ApiModelProperty(value = "供应商名称")
 	private String corpName;
+	/**
+	 * 订货数量
+	 */
+	@ApiModelProperty(value = "订货数量")
+	@TableField(exist = false)
+	private BigDecimal orderQuantity;
 
 }

+ 24 - 1
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/ISalesPolicyClient.java

@@ -1,6 +1,8 @@
 package org.springblade.mocha.feign;
 
 import org.springblade.common.constant.LauncherConstant;
+import org.springblade.mocha.entity.SalesPolicy;
+import org.springblade.mocha.entity.SalesPolicyItem;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -17,7 +19,8 @@ public interface ISalesPolicyClient {
 
 	String API_PREFIX = "/client";
 	String GET_POLICY_NAME = API_PREFIX + "/get-policy-name";
-
+	String GET_POLICY = API_PREFIX + "/getPolicy";
+	String GET_POLICY_ITEM = API_PREFIX + "/getPolicyItem";
 	/**
 	 * 获取商品所属政策名
 	 *
@@ -26,5 +29,25 @@ public interface ISalesPolicyClient {
 	 */
 	@GetMapping(GET_POLICY_NAME)
 	String getPolicyName(@RequestParam("id") Long id);
+	/**
+	 * 根据政策名获取政策
+	 *
+	 * @param id 政策id
+	 * @return 政策名
+	 */
+	@GetMapping(GET_POLICY)
+	SalesPolicy getPolicy(@RequestParam("id") Long id);
+	/**
+	 * 根据政策名获取政策
+	 *
+	 * @param code 商品编码
+	 * @param pid 政策主表id
+	 * @param salesType 销售政策类别 1特价促销 2买赠促销
+	 * @return 政策名
+	 */
+	@GetMapping(GET_POLICY_ITEM)
+	SalesPolicyItem getPolicyItem(@RequestParam("code") String code,
+								  @RequestParam("pid") Long pid,
+								  @RequestParam("salesType") String salesType);
 
 }

+ 1 - 1
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -933,5 +933,5 @@ public class Order implements Serializable {
 	 * 箱重量
 	 */
 	@ApiModelProperty(value = "箱重量")
-	private BigDecimal cntrWeight;
+	private BigDecimal cartonWeight;
 }

+ 1 - 1
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java

@@ -494,5 +494,5 @@ public class OrderItems implements Serializable {
 	 * 箱重量
 	 */
 	@ApiModelProperty(value = "箱重量")
-	private BigDecimal cntrWeight;
+	private BigDecimal cartonWeight;
 }

+ 5 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderVO.java

@@ -132,4 +132,9 @@ public class OrderVO extends Order {
 	 */
 	@ApiModelProperty(value = "货物id")
 	private Long itemId;
+	/**
+	 * 删除的id
+	 */
+	@ApiModelProperty(value = "删除的id")
+	private String ids;
 }

+ 1 - 1
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java

@@ -763,5 +763,5 @@ public class Order extends OrderBase {
 	 * 箱重量
 	 */
 	@ApiModelProperty(value = "箱重量")
-	private BigDecimal cntrWeight;
+	private BigDecimal cartonWeight;
 }

+ 1 - 1
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -468,5 +468,5 @@ public class OrderItems extends OrderBase {
 	 * 箱重量
 	 */
 	@ApiModelProperty(value = "箱重量")
-	private BigDecimal cntrWeight;
+	private BigDecimal cartonWeight;
 }

+ 15 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -224,6 +224,20 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			List<DeliveryFiles> deliveryFilesList = deliveryFilesService.saveDeliveryFilesList(delivery.getId(), delivery.getDeliveryFilesList());
 			delivery.setDeliveryFilesList(deliveryFilesList);
 		}
+		//国内需要保存总重量总体积
+		if (delivery.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())){
+			LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted,0);
+			lambdaQueryWrapper.eq(DeliveryItems::getTenantId,SecureUtil.getTenantId());
+			lambdaQueryWrapper.eq(DeliveryItems::getPid,delivery.getId());
+			lambdaQueryWrapper.eq(DeliveryItems::getGoodType,0);
+			List<DeliveryItems> list = deliveryItemsService.list(lambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(list)){
+				delivery.setTotalWeight(list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getActualWeight().multiply(y.getActualQuantity())), BigDecimal::add));//重量
+				delivery.setTotalVolumn(list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getContainerVolume().multiply(y.getActualQuantity())), BigDecimal::add));//体积
+				baseMapper.updateById(delivery);
+			}
+		}
 		return R.data(delivery);
 	}
 
@@ -714,7 +728,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		if (select == null) {
 			throw new SecurityException("未查到相关数据,操作失败");
 		}
-		if (select.getDeliveryStatus() == null || !"已收货".equals(select.getDeliveryStatus())) {
+		if (select.getDeliveryStatus() == null || !DeliveryStatusEnum.REVOCATION.getType().equals(select.getDeliveryStatus())) {
 			throw new SecurityException("此单据已撤回或者不存在,禁止重复操作");
 		}
 

+ 26 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java

@@ -2,8 +2,11 @@ package org.springblade.mocha.feign;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
+import org.checkerframework.checker.units.qual.A;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
@@ -13,6 +16,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -52,4 +56,26 @@ public class SalesPolicyClient implements ISalesPolicyClient {
 		return policy.getCname();
 	}
 
+	@Override
+	public SalesPolicy getPolicy(Long id) {
+		LambdaQueryWrapper<SalesPolicy> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SalesPolicy::getIsDeleted,0);
+		lambdaQueryWrapper.eq(SalesPolicy::getTenantId, SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(SalesPolicy::getId,id);
+		lambdaQueryWrapper.le(SalesPolicy::getStartTime,new Date());
+		lambdaQueryWrapper.ge(SalesPolicy::getEndTime,new Date());
+		return salesPolicyService.getOne(lambdaQueryWrapper);
+	}
+
+	@Override
+	public SalesPolicyItem getPolicyItem(String code,Long pid,String salesType) {
+		LambdaQueryWrapper<SalesPolicyItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(SalesPolicyItem::getIsDeleted,0);
+		lambdaQueryWrapper.eq(SalesPolicyItem::getTenantId, SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(SalesPolicyItem::getCode,code);
+		lambdaQueryWrapper.eq(SalesPolicyItem::getPid,pid);
+		lambdaQueryWrapper.eq(Func.isNotEmpty(salesType),SalesPolicyItem::getSalesType,salesType);
+		return salesPolicyItemService.getOne(lambdaQueryWrapper);
+	}
+
 }

+ 37 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java

@@ -39,9 +39,11 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.excel.DatasetExcel;
 import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
+import org.springblade.purchase.sales.excel.PolicyExcel;
 import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springblade.purchase.sales.vo.DatasetVO;
 import org.springblade.purchase.sales.vo.OrderItemsVO;
+import org.springblade.purchase.sales.vo.OrderVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -273,11 +275,11 @@ public class OrderItemsController extends BladeController {
 	@PostMapping("/removeList")
 	@ApiOperationSupport(order = 18)
 	@ApiOperation(value = "批量删除 订单明细表", notes = "传入ids")
-	public R removeList(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		if (StringUtils.isBlank(ids)){
+	public R removeList(@RequestBody OrderVO orderVO) {
+		if (StringUtils.isBlank(orderVO.getIds())){
 			throw new SecurityException("请选择要删除的数据");
 		}
-		List<Long> list = Func.toLongList(ids);
+		List<Long> list = Func.toLongList(orderVO.getIds());
 		if (CollectionUtils.isNotEmpty(list)){
 			list.stream().forEach(item ->{
 				OrderItems orderItems = new OrderItems();
@@ -289,5 +291,37 @@ public class OrderItemsController extends BladeController {
 		}
 		return R.fail("删除失败");
 	}
+	/**
+	 * 导入订单明细模板
+	 */
+	@GetMapping("/policy")
+	@ApiOperationSupport(order = 19)
+	@ApiOperation(value = "导入销售模板")
+	public void policy(HttpServletResponse response) {
+		List<PolicyExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-销售政策", "销售政策", list, PolicyExcel.class);
+	}
+
+	/**
+	 * 导入销售政策
+	 * @param file 文件
+	 * @param policyName 政策名
+	 * @param salesType 销售政策类别 1特价促销 2买赠促销
+	 * @return
+	 */
+	@PostMapping("/importPolicy")
+	@ApiOperationSupport(order = 20)
+	@ApiOperation(value = "导入销售政策", notes = "传入excel")
+	public R importPolicy(@RequestParam("file") MultipartFile file,@RequestParam("policyName") Long policyName,
+						  @RequestParam("salesType") String salesType) {
+		List<PolicyExcel> excelList = ExcelUtil.read(file, PolicyExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		if (policyName == null){
+			throw new SecurityException("政策名不能为空");
+		}
+		return orderItemsService.importPolicy(excelList, false,policyName,salesType);
+	}
 
 }

+ 31 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PolicyExcel.java

@@ -0,0 +1,31 @@
+package org.springblade.purchase.sales.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售订单导入销售政策
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class PolicyExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 商品编码
+	 */
+	@ExcelProperty(value = "大字(必填)")
+	private String code;
+	/**
+	 * 订货数量
+	 */
+	@ExcelProperty(value = "数量(必填)")
+	private BigDecimal orderQuantity;
+}

+ 9 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java

@@ -23,6 +23,7 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
+import org.springblade.purchase.sales.excel.PolicyExcel;
 import org.springblade.purchase.sales.excel.orderItemStat;
 import org.springblade.purchase.sales.vo.*;
 
@@ -201,5 +202,13 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	 * @return
 	 */
 	IPage<DatasetVO> dataset(IPage<DatasetVO> page, DatasetVO datasetVO);
+	/**
+	 * 订单明细导入政策
+	 *
+	 * @param data
+	 * @param isCovered
+	 * @return
+	 */
+	R<Map<String,Object>> importPolicy(List<PolicyExcel> data, Boolean isCovered,Long policyName,String salesType);
 
 }

+ 43 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -34,12 +34,16 @@ import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.mocha.entity.SalesPolicy;
+import org.springblade.mocha.entity.SalesPolicyItem;
 import org.springblade.mocha.feign.IPriceItemClient;
+import org.springblade.mocha.feign.ISalesPolicyClient;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.entity.OrderParts;
 import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
+import org.springblade.purchase.sales.excel.PolicyExcel;
 import org.springblade.purchase.sales.excel.orderItemStat;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderPartsMapper;
@@ -54,10 +58,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 订单明细表 服务实现类
@@ -98,6 +99,8 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 	private final IStorageClient iStorageClient;
 
 	private final OrderPartsMapper orderPartsMapper;
+	//获取政策
+	private final ISalesPolicyClient salesPolicyClient;
 
 	@Override
 	public IPage<OrderItemsVO> selectOrderItemsPage(IPage<OrderItemsVO> page, OrderItemsVO orderItems) {
@@ -572,4 +575,40 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 		return page.setRecords(baseMapper.dataset(page, datasetVO));
 	}
 
+	@Override
+	public R<Map<String,Object>> importPolicy(List<PolicyExcel> data, Boolean isCovered,Long policyName,String salesType) {
+		Map<String,Object> map = new HashMap<>();
+		//查找政策
+		SalesPolicy policy = salesPolicyClient.getPolicy(policyName);
+		if (policy == null){
+			throw new SecurityException("未找到政策信息");
+		}
+		StringBuffer stringBuffer = new StringBuffer();//导入失败的商品
+		List<SalesPolicyItem> list = new ArrayList<>();
+		//根据商品编码和主政策id查政策明细
+		for(int i=0;i<data.size();i++)
+		{
+			PolicyExcel policyExcel = data.get(i);
+			if (StringUtils.isBlank(policyExcel.getCode())){
+				stringBuffer.append(policyExcel.getCode()+",");
+				data.remove(i);
+				continue;
+			}
+			if (policyExcel.getOrderQuantity() == null){
+				policyExcel.setOrderQuantity(BigDecimal.ZERO);
+			}
+			SalesPolicyItem policyItem = salesPolicyClient.getPolicyItem(policyExcel.getCode(), policy.getId(),salesType);
+			if (policyItem == null){
+				stringBuffer.append(policyExcel.getCode()+",");
+				data.remove(i);
+				continue;
+			}
+			policyItem.setOrderQuantity(policyExcel.getOrderQuantity());
+			list.add(policyItem);
+		}
+		map.put("list",list);
+		map.put("message",stringBuffer.toString());
+		return R.data(map);
+	}
+
 }

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

@@ -275,7 +275,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				//总重量求和
 				BigDecimal cntrVolumn = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrVolumn().multiply(y.getOrderQuantity())), BigDecimal::add);
 				//总体积求和
-				BigDecimal cartonWeight = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrWeight().multiply(y.getOrderQuantity())), BigDecimal::add);
+				BigDecimal cartonWeight = list.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCartonWeight().multiply(y.getOrderQuantity())), BigDecimal::add);
 				// 毛利额添加应收费用(除包装费)
 				Long feeId = 0L;
 				R<FeesDesc> fees = feesDescClient.getFeesByName("包装费");
@@ -297,7 +297,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				//总重量
 				orderMessage.setCntrVolumn(cntrVolumn);
 				//总提价
-				orderMessage.setCntrWeight(cartonWeight);
+				orderMessage.setCartonWeight(cartonWeight);
 			} else if (CollectionUtils.isNotEmpty(list) && order.getTradeType().equals(OrderTypeEnum.EXPORT.getType())) {
 				// 出口的毛利额=销售价 * 汇率 - (采购价+配件价格)    毛利率 =毛利额/(采购单价+配件价格)
 				// 金额求和
@@ -557,7 +557,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						//总重量求和
 						selectById.setCntrVolumn(orderList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrVolumn().multiply(y.getOrderQuantity())), BigDecimal::add));
 						//总体积求和
-						selectById.setCntrWeight(orderList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCntrWeight().multiply(y.getOrderQuantity())), BigDecimal::add));
+						selectById.setCartonWeight(orderList.stream().reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getCartonWeight().multiply(y.getOrderQuantity())), BigDecimal::add));
 					}
 					baseMapper.updateById(selectById);
 				}