Browse Source

经销商导入订单信息

lazhaoqian 3 years ago
parent
commit
0fc8c68576

+ 24 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java

@@ -34,6 +34,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -172,6 +173,29 @@ public class OrderItemsController extends BladeController {
 		}
 		return R.data(orderItemsService.getOrderItems(order));
 	}
+	/**
+	 * 导入订单明细模板
+	 */
+	@GetMapping("/exportDealerOrder")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "导出订单明细模板")
+	public void exportDealerOrder(HttpServletResponse response) {
+		List<DealerOrderItem> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-订单明细", "订单明细数据表", list, DealerOrderItem.class);
+	}
+	/**
+	 * 导入订单明细
+	 */
+	@PostMapping("/importDealerOrder")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "导入订单明细", notes = "传入excel")
+	public R importDealerOrder(@RequestParam("file") MultipartFile file,@RequestParam(value = "storageId",required = false) Long storageId) {
+		List<DealerOrderItem> excelList = ExcelUtil.read(file, DealerOrderItem.class);
+		if (CollectionUtils.isEmpty(excelList)){
+			throw new SecurityException("数据不能为空");
+		}
+		return orderItemsService.importDealerOrder(excelList,false,storageId);
+	}
 
 
 

+ 37 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/DealerOrderItem.java

@@ -0,0 +1,37 @@
+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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 经销商订单导入商品明细
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class DealerOrderItem implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 商品编码
+	 */
+	@ExcelProperty(value = "编码(必填)")
+	private String code;
+	/**
+	 * 订货数量
+	 */
+	@ExcelProperty(value = "数量(必填)")
+	private BigDecimal orderQuantity;
+	/**
+	 * 单价
+	 */
+	@ExcelProperty(value = "单价(必填)")
+	private BigDecimal price;
+}

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

@@ -19,6 +19,7 @@ package org.springblade.purchase.sales.service;
 import org.springblade.core.tool.api.R;
 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.vo.OrderItemsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -68,6 +69,14 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	R<List<OrderItems>> importUser(List<OrderItemsExcel> data, Boolean isCovered);
 
 	/**
+	 * 经销商导入订单明细
+	 * @param data
+	 * @param isCovered
+	 * @return
+	 */
+	R<List<OrderItems>> importDealerOrder(List<DealerOrderItem> data, Boolean isCovered,Long storageId);
+
+	/**
 	 * 获取订单明细
 	 * @param order
 	 * @return

+ 58 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -32,6 +32,7 @@ import org.springblade.mocha.feign.IPriceItemClient;
 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.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderPartsMapper;
@@ -110,6 +111,63 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 		return R.data(list);
 	}
 
+	@Override
+	public R<List<OrderItems>> importDealerOrder(List<DealerOrderItem> data, Boolean isCovered,Long storageId) {
+		List<OrderItems> list = new ArrayList<>();
+		data.forEach(item -> {
+			R<GoodsDesc> goods = goodsDescClient.GoodsByCode(item.getCode());
+			if (goods.isSuccess() && goods.getData() != null) {
+				OrderItems orderItems = new OrderItems();
+				orderItems.setCode(item.getCode());
+				if (item.getOrderQuantity() == null){
+					orderItems.setOrderQuantity(BigDecimal.ZERO);
+				}else {
+					orderItems.setOrderQuantity(item.getOrderQuantity());
+				}
+				if (item.getPrice() == null){
+					orderItems.setPrice(BigDecimal.ZERO);
+				}else {
+					orderItems.setPrice(item.getPrice());
+				}
+				orderItems.setAmount(orderItems.getOrderQuantity().multiply(item.getPrice()));
+				orderItems.setCname(goods.getData().getCname());//商品名称
+				orderItems.setItemId(goods.getData().getId());//商品id
+				orderItems.setTypeno(goods.getData().getTypeno());//商品规格
+				orderItems.setItemType(goods.getData().getTypeno());//商品规格
+				orderItems.setPriceCategory("一般");//价格类别
+				orderItems.setBrandItem(goods.getData().getBrandItem());
+				//orderItems.setCorpId(goods.getData().getCorpId());//供应id
+				//orderItems.setCorpName(goods.getData().getCorpName());//供应商名称
+				orderItems.setUnit(goods.getData().getUnit());//单位
+				orderItems.setSpecsOne(goods.getData().getSpecsOne());
+				orderItems.setSpecsTwo(goods.getData().getSpecsTwo());
+				orderItems.setSize(goods.getData().getSize());
+				GoodsType goodsType = goodsDescClient.goodTypeId(goods.getData().getId());
+				orderItems.setPriceCategory(goodsType.getCname());//商品类别名称
+				if (storageId != null){
+				StockGoods stockGoods = new StockGoods();
+				stockGoods.setGoodsId(goods.getData().getId());
+				stockGoods.setTradeType(OrderTypeEnum.DEALER.getType());
+				stockGoods.setStorageId(storageId);
+				StockGoods stock = stockGoodsClient.getOneStock(stockGoods);
+					if (stock != null) {
+						orderItems.setStorageQuantity(stock.getBalanceQuantity());
+						orderItems.setPurchaseAmount(stock.getBalanceAmount().divide(stock.getBalanceQuantity(),2,BigDecimal.ROUND_HALF_UP));
+					} else {
+						orderItems.setStorageQuantity(BigDecimal.ZERO);
+						orderItems.setPurchaseAmount(BigDecimal.ZERO);
+					}
+				}else {
+					orderItems.setStorageQuantity(BigDecimal.ZERO);
+					orderItems.setPurchaseAmount(BigDecimal.ZERO);
+				}
+
+				list.add(orderItems);
+			}
+		});
+		return R.data(list);
+	}
+
 	/**
 	 * 保存订单明细信息
 	 *