Browse Source

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

lazhaoqian 3 năm trước cách đây
mục cha
commit
6d5464249d

+ 10 - 0
blade-service-api/blade-land-api/src/main/java/org/springblade/land/entity/OrderTrack.java

@@ -55,6 +55,16 @@ public class OrderTrack implements Serializable {
 	@ApiModelProperty(value = "车牌号")
 	private String plateNo;
 	/**
+	 * 经度处理
+	 */
+	@ApiModelProperty(value = "经度处理")
+	private Double longitude;
+	/**
+	 * 纬度处理
+	 */
+	@ApiModelProperty(value = "纬度处理")
+	private Double latitude;
+	/**
 	 * 经度
 	 */
 	@ApiModelProperty(value = "经度")

+ 9 - 0
blade-service-api/blade-project-api/pom.xml

@@ -14,4 +14,13 @@
     <version>2.8.2.RELEASE</version>
     <packaging>jar</packaging>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-client-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
 </project>

+ 5 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/HandoverItem.java

@@ -16,17 +16,20 @@
  */
 package org.springblade.project.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springblade.client.entity.CommonFile;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 交接单明细表实体类
@@ -122,5 +125,7 @@ public class HandoverItem implements Serializable {
 	@ApiModelProperty(value = "是否已删除(0-否、1-是)")
 	private Integer isDeleted;
 
+	@TableField(exist = false)
+	private List<CommonFile> fileList;
 
 }

+ 4 - 6
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -163,8 +163,6 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			baseMapper.insert(delivery);
 
 			if (ObjectUtil.isNotEmpty(delivery.getOrgId()) && ObjectUtil.isNotEmpty(delivery.getSrcId())) {
-				Order orderTemp = new Order();
-				orderTemp.setId(delivery.getSrcId());
 				if (delivery.getBillType().equals(OrderTypeEnum.RECEIPT.getType())) {
 					Order temp = new Order();
 					temp.setId(delivery.getOrgId());
@@ -173,14 +171,14 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 					temp.setCreateFreightTime(new Date());
 					temp.setOrderStatus("待发货");
 					orderDescClient.updateOrder(temp);
-
-					orderTemp.setOrderStatus("待发货");
 				} else {
+					Order orderTemp = new Order();
+					orderTemp.setId(delivery.getSrcId());
 					orderTemp.setCreateFreight(1);
 					orderTemp.setCreateFreightUser(AuthUtil.getUserName());
 					orderTemp.setCreateFreightTime(new Date());
+					orderDescClient.updateOrder(orderTemp);
 				}
-				orderDescClient.updateOrder(orderTemp);
 			}
 		} else {
 			if (delivery.getLogisticsConfirm() == 0 || delivery.getAssistantConfirm() == 0) {
@@ -266,7 +264,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			List<Map<String, Object>> storageMessage = iStorageClient.getStorageMessage(selectById.getStorageId());
 			selectById.setStorageMap(storageMessage);
 		}
-		if (selectById.getAllotStorageId() != null){
+		if (selectById.getAllotStorageId() != null) {
 			//调拨仓库信息
 			List<Map<String, Object>> storageMessage = iStorageClient.getStorageMessage(selectById.getAllotStorageId());
 			selectById.setAllotStorageMap(storageMessage);

+ 23 - 0
blade-service/blade-land/src/main/java/org/springblade/land/controller/OrderTrackController.java

@@ -33,6 +33,9 @@ import org.springblade.land.vo.OrderTrackVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 陆运订单轨迹表 控制器
@@ -71,6 +74,26 @@ public class OrderTrackController extends BladeController {
 	}
 
 	/**
+	 * 陆运定位点列表
+	 */
+	@GetMapping("/location-list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入orderTrack")
+	public R<List<List<Double>>> locationList(OrderTrack orderTrack) {
+		List<List<Double>> data = new ArrayList<>();
+
+		List<OrderTrack> trackList = orderTrackService.list(Condition.getQueryWrapper(orderTrack));
+		trackList.forEach(track -> {
+			List<Double> temp = new ArrayList<>();
+			temp.add(track.getLongitude());
+			temp.add(track.getLatitude());
+			data.add(temp);
+		});
+
+		return R.data(data);
+	}
+
+	/**
 	 * 自定义分页 陆运订单轨迹表
 	 */
 	@GetMapping("/page")

+ 29 - 8
blade-service/blade-land/src/main/java/org/springblade/land/handler/JobHandler.java

@@ -16,6 +16,9 @@ import org.springblade.land.service.IOrderItemService;
 import org.springblade.land.service.IOrderTrackService;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -41,43 +44,61 @@ public class JobHandler {
 
 	@XxlJob("locateJobHandler")
 	public ReturnT<String> locateJobHandler(String param) throws Exception {
+		// 创建线程池
+		ExecutorService pool = new ThreadPoolExecutor(5, 200, 0L,
+			TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
+			Executors.defaultThreadFactory(),
+			new ThreadPoolExecutor.AbortPolicy());
+
 		try {
 			JSONObject json = JSON.parseObject(param);
 			String tenantId = json.getString("tenantId");
 			String token = getToken(json);
 
 			List<OrderItem> itemList = orderItemService.list(new LambdaQueryWrapper<OrderItem>()
+				.select(OrderItem::getId, OrderItem::getPlateNo)
 				.in(OrderItem::getStatus, 2, 3, 5, 6)
 				.eq(OrderItem::getKind, 2)
 				.eq(OrderItem::getIsDeleted, 0)
 				.eq(OrderItem::getTenantId, tenantId)
 			);
 
-			// 创建线程池
-			ExecutorService newFixedThreadPool = new ThreadPoolExecutor(5, 200, 0L,
-				TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
-				Executors.defaultThreadFactory(),
-				new ThreadPoolExecutor.AbortPolicy());
 			for (OrderItem item : itemList) {
-				newFixedThreadPool.execute(() -> {
+				Future<String> result = pool.submit(() -> {
 					// 业务处理
 					try {
 						String data = getData(json, token, item.getPlateNo());
 						OrderTrack track = JSON.parseObject(data, OrderTrack.class);
 						if (!ObjectUtil.isEmpty(track)) {
+							// 计算并组装经纬度
+							BigDecimal divisor = new BigDecimal("600000");
+							BigDecimal longitude = new BigDecimal(track.getLon()).divide(divisor, 6, RoundingMode.HALF_UP);
+							BigDecimal latitude = new BigDecimal(track.getLat()).divide(divisor, 6, RoundingMode.HALF_UP);
+
 							track.setItemId(item.getId());
 							track.setPlateNo(item.getPlateNo());
+							track.setLongitude(longitude.doubleValue());
+							track.setLatitude(latitude.doubleValue());
+							track.setCreateTime(new Date());
 							orderTrackService.save(track);
 						}
+						return null;
 					} catch (Exception e) {
 						XxlJobLogger.log(e);
+						return e.getMessage();
 					}
 				});
+
+				if (!StringUtil.isEmpty(result.get())) {
+					return new ReturnT<>(ReturnT.FAIL_CODE, result.get());
+				}
 			}
-			return ReturnT.SUCCESS;
+			return new ReturnT<>("获取数据成功");
 		} catch (Exception e) {
 			XxlJobLogger.log(e);
-			return ReturnT.FAIL;
+			return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
+		} finally {
+			pool.shutdown();
 		}
 	}
 

+ 14 - 4
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/SalesPolicyClient.java

@@ -3,6 +3,7 @@ package org.springblade.mocha.feign;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.mocha.entity.SalesPolicy;
 import org.springblade.mocha.entity.SalesPolicyItem;
@@ -12,6 +13,9 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 @NonDS
 @ApiIgnore()
 @RestController
@@ -25,16 +29,22 @@ public class SalesPolicyClient implements ISalesPolicyClient {
 	@Override
 	@GetMapping(GET_POLICY_NAME)
 	public String getPolicyName(Long id) {
-		SalesPolicyItem item = salesPolicyItemService.getOne(new LambdaQueryWrapper<SalesPolicyItem>()
+		List<SalesPolicyItem> itemList = salesPolicyItemService.list(new LambdaQueryWrapper<SalesPolicyItem>()
 			.eq(SalesPolicyItem::getItemId, id)
 			.eq(SalesPolicyItem::getIsDeleted, 0)
-			.last("limit 1")
 		);
-		if (ObjectUtil.isEmpty(item) || ObjectUtil.isEmpty(item.getPid())) {
+
+		if (CollectionUtil.isEmpty(itemList)) {
 			return null;
 		}
 
-		SalesPolicy policy = salesPolicyService.getById(item.getPid());
+		List<Long> idList = itemList.stream().map(SalesPolicyItem::getPid).distinct().collect(Collectors.toList());
+		SalesPolicy policy = salesPolicyService.getOne(new LambdaQueryWrapper<SalesPolicy>()
+			.in(SalesPolicy::getId, idList)
+			.eq(SalesPolicy::getIsDeleted, 0)
+			.last("limit 1")
+		);
+
 		if (ObjectUtil.isEmpty(policy) || ObjectUtil.isEmpty(policy.getCname())) {
 			return null;
 		}

+ 22 - 1
blade-service/blade-project/src/main/java/org/springblade/project/controller/HandoverItemController.java

@@ -22,6 +22,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CommonFile;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -33,6 +34,7 @@ import org.springblade.project.vo.HandoverItemVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 交接单明细表 控制器
@@ -42,7 +44,7 @@ import javax.validation.Valid;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/handoveritem")
+@RequestMapping("/handover-item")
 @Api(value = "交接单明细表", tags = "交接单明细表接口")
 public class HandoverItemController extends BladeController {
 
@@ -122,5 +124,24 @@ public class HandoverItemController extends BladeController {
 		return R.status(handoverItemService.removeHandoverItem(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 附件上传
+	 */
+	@PostMapping("/file")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "附件上传", notes = "传入fileList")
+	public R file(@RequestBody List<CommonFile> fileList) {
+		return R.status(handoverItemService.file(fileList));
+	}
+
+	/**
+	 * 附件列表
+	 */
+	@GetMapping("/file-list")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "附件列表", notes = "传入id")
+	public R fileList(Long id) {
+		return R.data(handoverItemService.fileList(id));
+	}
 
 }

+ 19 - 2
blade-service/blade-project/src/main/java/org/springblade/project/service/IHandoverItemService.java

@@ -16,10 +16,11 @@
  */
 package org.springblade.project.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.client.entity.CommonFile;
 import org.springblade.project.entity.HandoverItem;
 import org.springblade.project.vo.HandoverItemVO;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.List;
 
@@ -48,4 +49,20 @@ public interface IHandoverItemService extends IService<HandoverItem> {
 	 */
 	boolean removeHandoverItem(List<Long> idList);
 
+	/**
+	 * 附件上传
+	 *
+	 * @param fileList
+	 * @return
+	 */
+	boolean file(List<CommonFile> fileList);
+
+	/**
+	 * 附件列表
+	 *
+	 * @param id
+	 * @return
+	 */
+	List<CommonFile> fileList(Long id);
+
 }

+ 29 - 0
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/HandoverItemServiceImpl.java

@@ -18,12 +18,18 @@ package org.springblade.project.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CommonFile;
+import org.springblade.client.feign.ICommonFileClient;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.project.entity.HandoverItem;
 import org.springblade.project.mapper.HandoverItemMapper;
 import org.springblade.project.service.IHandoverItemService;
 import org.springblade.project.vo.HandoverItemVO;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -33,8 +39,11 @@ import java.util.List;
  * @since 2022-04-07
  */
 @Service
+@AllArgsConstructor
 public class HandoverItemServiceImpl extends ServiceImpl<HandoverItemMapper, HandoverItem> implements IHandoverItemService {
 
+	private final ICommonFileClient commonFileClient;
+
 	@Override
 	public IPage<HandoverItemVO> selectHandoverItemPage(IPage<HandoverItemVO> page, HandoverItemVO handoverItem) {
 		return page.setRecords(baseMapper.selectHandoverItemPage(page, handoverItem));
@@ -51,4 +60,24 @@ public class HandoverItemServiceImpl extends ServiceImpl<HandoverItemMapper, Han
 		return true;
 	}
 
+	@Override
+	public boolean file(List<CommonFile> fileList) {
+		fileList.forEach(file -> {
+			if (ObjectUtil.isEmpty(file.getId())) {
+				file.setSource("SERVICE_HANDOVER_ITEM");
+			}
+		});
+		commonFileClient.saveList(fileList);
+		return true;
+	}
+
+	@Override
+	public List<CommonFile> fileList(Long id) {
+		R<List<CommonFile>> fileList = commonFileClient.getList(id, "SERVICE_HANDOVER_ITEM");
+		if (fileList.isSuccess() && fileList.getData() != null) {
+			return fileList.getData();
+		}
+		return Collections.emptyList();
+	}
+
 }

+ 13 - 0
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/HandoverServiceImpl.java

@@ -25,6 +25,8 @@ import org.springblade.check.dto.AuditProecessDTO;
 import org.springblade.check.entity.AuditPathsActs;
 import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.feign.ICheckClient;
+import org.springblade.client.entity.CommonFile;
+import org.springblade.client.feign.ICommonFileClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -61,6 +63,8 @@ public class HandoverServiceImpl extends ServiceImpl<HandoverMapper, Handover> i
 
 	private final ICheckClient checkClient;
 
+	private final ICommonFileClient commonFileClient;
+
 	@Override
 	public IPage<HandoverVO> selectHandoverPage(IPage<HandoverVO> page, HandoverVO handover) {
 		return page.setRecords(baseMapper.selectHandoverPage(page, handover));
@@ -125,6 +129,15 @@ public class HandoverServiceImpl extends ServiceImpl<HandoverMapper, Handover> i
 				item.setUpdateTime(new Date());
 				handoverItemMapper.updateById(item);
 			}
+
+			List<CommonFile> fileList = item.getFileList();
+			fileList.forEach(file -> {
+				if (ObjectUtil.isEmpty(file.getId())) {
+					file.setPid(item.getId());
+					file.setSource("SERVICE_HANDOVER_ITEM");
+				}
+			});
+			commonFileClient.saveList(fileList);
 		});
 		return handoverId;
 	}

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

@@ -110,7 +110,6 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 			if (goods.isSuccess() && goods.getData() != null) {
 				OrderItems orderItems = new OrderItems();
 				orderItems.setCode(item.getCode());
-				orderItems.setPriceType(salesPolicyClient.getPolicyName(goods.getData().getId()));
 				orderItems.setOrderQuantity(item.getOrderQuantity());
 				orderItems.setCname(goods.getData().getCname());//商品名称
 				orderItems.setItemId(goods.getData().getId());//商品id

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

@@ -41,6 +41,7 @@ import org.springblade.common.utils.NumToWords;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Items;
@@ -269,6 +270,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				// 金额求和
 				BigDecimal amount = list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 				BigDecimal grossProfit = amount.subtract(reduce.add(order.getPredictOceanFreight())).subtract(order.getThisUsedProfit() == null ? BigDecimal.ZERO : order.getThisUsedProfit());
+
+				// 毛利额添加应收费用(除包装费)
+				Long feeId = 0L;
+				R<FeesDesc> fees = feesDescClient.getFeesByName("包装费");
+				if (fees.isSuccess() && ObjectUtil.isNotEmpty(fees.getData())) {
+					feeId = fees.getData().getId();
+				}
+				List<OrderFees> feeList = orderFeesService.list(new LambdaQueryWrapper<OrderFees>().eq(OrderFees::getPid, order.getId()).ne(OrderFees::getItemId, feeId).eq(OrderFees::getIsDeleted, 0));
+				BigDecimal totalFee = feeList.stream().map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				grossProfit = grossProfit.add(totalFee);
+
 				BigDecimal grossProfitRate = new BigDecimal(BigInteger.ZERO);
 				if (amount.compareTo(BigDecimal.ZERO) > 0) {
 					grossProfitRate = (grossProfit.divide(amount, RoundingMode.CEILING)).multiply(new BigDecimal(100));
@@ -517,6 +529,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						items.setAmount(items.getPurchaseAmount().multiply(items.getOrderQuantity()));
 						items.setPid(selectById.getId());
 						items.setId(null);
+						items.setSubmitPay(0);
 						items.setCreateTime(new Date());
 						items.setCreateUser(SecureUtil.getUserId());
 						items.setUpdateTime(null);