纪新园 1 год назад
Родитель
Сommit
a4eca7358e

+ 29 - 12
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ISerialClient.java

@@ -19,34 +19,51 @@ public interface ISerialClient {
 	String billNO = API_PREFIX + "/billNO";
 	String GET_NO = API_PREFIX + "/getNo";
 	String BILL_NO_LOS = API_PREFIX + "/billNOLos";
+	String BILL_NO_DATE = API_PREFIX + "/billNOByDate";
+
 	/**
 	 * 生成系统编号
-	 * @param type 编号类型
-	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 *
+	 * @param type       编号类型
+	 * @param tradeType  贸易类型(枚举:国内、进口、出口)
 	 * @param serialType 模块类型
 	 * @return
 	 */
 	@GetMapping(billNO)
-	R getBillNo(@RequestParam("type") String type,@RequestParam("tradeType") String tradeType,@RequestParam("serialType")String serialType);
+	R getBillNo(@RequestParam("type") String type, @RequestParam("tradeType") String tradeType, @RequestParam("serialType") String serialType);
+
 	/**
 	 * 生成系统编号
-	 * @param type 编号类型
-	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 *
+	 * @param type       编号类型
+	 * @param tradeType  贸易类型(枚举:国内、进口、出口)
 	 * @param serialType 模块类型
-	 * @param tenantId 租户id
+	 * @param tenantId   租户id
 	 * @return
 	 */
 	@GetMapping(GET_NO)
-	R getNo(@RequestParam("type") String type,@RequestParam("tradeType") String tradeType,@RequestParam("serialType")String serialType,@RequestParam("tenantId")String tenantId);
+	R getNo(@RequestParam("type") String type, @RequestParam("tradeType") String tradeType, @RequestParam("serialType") String serialType, @RequestParam("tenantId") String tenantId);
 
 	/**
 	 * 生成系统编号货运
-	 * @param billType  编号类型
-	 * @param seaType    @ApiModelProperty(value = "进出口, E=出口 I=进口")
-	 * @param businessType  业务类型
-	 * @param type  编号规则
+	 *
+	 * @param billType     编号类型
+	 * @param seaType      @ApiModelProperty(value = "进出口, E=出口 I=进口")
+	 * @param businessType 业务类型
+	 * @param type         编号规则
 	 * @return
 	 */
 	@GetMapping(BILL_NO_LOS)
-	R getBillNoLos(@RequestParam("billType") String billType, @RequestParam("seaType") String seaType,@RequestParam("businessType")  String businessType, @RequestParam("type") String type);
+	R getBillNoLos(@RequestParam("billType") String billType, @RequestParam("seaType") String seaType, @RequestParam("businessType") String businessType, @RequestParam("type") String type);
+
+	/**
+	 * 生成系统编号
+	 *
+	 * @param type       编号类型
+	 * @param tradeType  贸易类型(枚举:国内、进口、出口)
+	 * @param serialType 模块类型
+	 * @return
+	 */
+	@GetMapping(BILL_NO_DATE)
+	R getBillNoByDate(@RequestParam("type") String type, @RequestParam("tradeType") String tradeType, @RequestParam("serialType") String serialType, @RequestParam("date") String date);
 }

+ 6 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java

@@ -743,4 +743,10 @@ public class Delivery implements Serializable {
 	@ApiModelProperty(value = "航次")
 	private String voyage;
 
+	/**
+	 * 工号
+	 */
+	@ApiModelProperty(value = "工号")
+	private String jobNumber;
+
 }

+ 15 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/feign/SerialClient.java

@@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import java.util.Date;
+
 @NonDS
 @ApiIgnore()
 @RestController
@@ -55,4 +57,17 @@ public class SerialClient implements ISerialClient {
 	public R getBillNoLos(String billType, String seaType, String businessType, String type) {
 		return R.data(serialService.getBillNoLos(billType,seaType,businessType,type));
 	}
+
+	/**
+	 * 生成系统编号
+	 * @param type 编号类型
+	 * @param tradeType 贸易类型(枚举:国内、进口、出口)
+	 * @param serialType 模块类型
+	 * @return
+	 */
+	@Override
+	@GetMapping(BILL_NO_DATE)
+	public R getBillNoByDate(String type, String tradeType, String serialType, String date) {
+		return R.data(serialService.getBillNoByDate(type,tradeType,serialType,date));
+	}
 }

+ 4 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/ISerialService.java

@@ -21,6 +21,8 @@ import org.springblade.client.vo.SerialVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
+
 /**
  * 系统自动生成流水号 服务类
  *
@@ -65,4 +67,6 @@ public interface ISerialService extends IService<Serial> {
 	 * @return
 	 */
 	String getBillNoLos(String billType, String seaType, String businessType, String type);
+
+	String getBillNoByDate(String type, String tradeType, String serialType, String date);
 }

+ 68 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/service/impl/SerialServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.client.serial.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import net.logstash.logback.encoder.org.apache.commons.lang3.time.DateFormatUtils;
 import org.springblade.client.entity.Serial;
@@ -28,6 +29,9 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 /**
@@ -222,4 +226,68 @@ public class SerialServiceImpl extends ServiceImpl<SerialMapper, Serial> impleme
 		return type + "-" + billType + billNo;
 	}
 
+	@Override
+	public String getBillNoByDate(String type, String tradeType, String serialType, String dateOld) {
+		if (ObjectUtils.isNull(dateOld)) {
+			throw new RuntimeException("日期不能为空");
+		}
+		Date date;
+		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			date = dateFormat.parse(dateOld);
+		} catch (ParseException e) {
+			throw new RuntimeException("日期格式不正确");
+		}
+		String billNo = null;
+		String yyyyMM = null;
+		if (tradeType.equals("CK")) {
+			yyyyMM = DateFormatUtils.format(date, "yy");
+		} else {
+			yyyyMM = DateFormatUtils.format(date, "yyyyMM");
+		}
+		Serial billNoSerial = new Serial();
+		billNoSerial.setBillType(type);
+		billNoSerial.setTradeType(tradeType);
+		billNoSerial.setBillPrefix(yyyyMM);
+		billNoSerial.setTenantId(SecureUtil.getTenantId());
+		billNoSerial.setIsDeleted(0);
+		billNoSerial.setSerialType(serialType);
+		Serial serial = baseMapper.selectOne(new QueryWrapper<Serial>().setEntity(billNoSerial));
+		if (tradeType.equals("CK")) {
+			yyyyMM = DateFormatUtils.format(date, "yyMMdd");
+			if (serial != null) {
+				serial.setSerial(serial.getSerial() + 1);
+				baseMapper.updateById(serial);
+				if (serial.getSerial() <= 9) {
+					billNo = "00" + serial.getSerial() + "-" + yyyyMM;
+				} else if (serial.getSerial() <= 99) {
+					billNo = "0" + serial.getSerial() + "-" + yyyyMM;
+				} else {
+					billNo = "" + serial.getSerial() + "-" + yyyyMM;
+				}
+			} else {
+				billNo = "001-" + yyyyMM;
+				billNoSerial.setSerial(1);
+				baseMapper.insert(billNoSerial);
+			}
+		} else {
+			if (serial != null) {
+				serial.setSerial(serial.getSerial() + 1);
+				baseMapper.updateById(serial);
+				if (serial.getSerial() <= 9) {
+					billNo = yyyyMM + "00" + serial.getSerial();
+				} else if (serial.getSerial() <= 99) {
+					billNo = yyyyMM + "0" + serial.getSerial();
+				} else {
+					billNo = yyyyMM + "" + serial.getSerial();
+				}
+			} else {
+				billNo = yyyyMM + "001";
+				billNoSerial.setSerial(1);
+				baseMapper.insert(billNoSerial);
+			}
+		}
+		return type + billNo;
+	}
+
 }

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

@@ -48,7 +48,6 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.Delivery;
-import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.feign.IDeliveryClient;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
@@ -302,7 +301,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							}
 							documentRecoveryService.removeById(documentRecovery.get(0).getId());
 						} else {
-							R clientBillNo = serialClient.getBillNo(substring, order.getTradeType(), order.getBillType());
+							R clientBillNo;
+							if (order.getBillType().equals(OrderTypeEnum.ENQUIRY.getType())) {
+								DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+								String date2 = dateFormat.format(order.getBusinesDate());
+								clientBillNo = serialClient.getBillNoByDate(substring, order.getTradeType(), order.getBillType(), date2);
+							} else {
+								clientBillNo = serialClient.getBillNo(substring, order.getTradeType(), order.getBillType());
+							}
 							if (!clientBillNo.isSuccess()) {
 								TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 								return R.fail(500, "生成订单编号失败");
@@ -454,6 +460,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				if (order.getTradeType().equals(OrderTypeEnum.DOMESTIC.getType())) {
 					order.setMorderNo(order.getOrderNo());
 				}
+			} else {
+				String yyyyMM = DateFormatUtils.format(order.getBusinesDate(), "yyMMdd");
+				if (order.getBillType().equals(OrderTypeEnum.ENQUIRY.getType())) {
+					String orderNo = order.getOrderNo().substring(0, order.getOrderNo().indexOf("-")+1);
+					orderNo = orderNo + yyyyMM;
+					order.setOrderNo(orderNo);
+				}
 			}
 			order.setTenantId(SecureUtil.getTenantId());
 			order.setUpdateTime(date);
@@ -6088,22 +6101,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				sendMessage.setCreateTime(new Date());
 				sendMessage.setPageLabel(selectOrder.getPageLabel());
 				sendMessage.setPageStatus(selectOrder.getPageStatus());
-				if (true) {
+				if (2 == order.getPurchaseStatusType()) {
+					sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已预计货好,请查看");
 					sendMessage.setUrl("/exportTrade/salesContract/index");
 					sendMessage.setToUserId(selectOrder.getCreateUser());
 					sendMessage.setToUserName(selectOrder.getCreateUserName());
-					if (1 == order.getPurchaseStatusType()) {
-						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "正在排产中,请查看");
-					} else if (2 == order.getPurchaseStatusType()) {
-						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已预计货好,请查看");
-					} else if (3 == order.getPurchaseStatusType()) {
-						sendMessage.setMessageBody("您的销售订单" + selectOrder.getOrderNo() + "已采购完成,请查看");
-						deliveryClient.updateBySrcId(selectOrder.getId(), "FH", selectOrder.getTradeType());
-					}
 					R save = messageClient.save(sendMessage);
 					if (!save.isSuccess()) {
 						throw new SecurityException("发送消息失败");
 					}
+				} else if (3 == order.getPurchaseStatusType()) {
+					deliveryClient.updateBySrcId(selectOrder.getId(), "FH", selectOrder.getTradeType());
 				}
 				if (true) {
 					sendMessage.setUrl("/exportTrade/invoice/index");
@@ -8524,6 +8532,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (CollectionUtils.isNotEmpty(orderItemsList)) {
 			amount = amount.add(orderItemsList.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
+		List<OrderFees> orderFeesList = orderFeesService.list(new LambdaQueryWrapper<OrderFees>()
+			.eq(OrderFees::getIsDeleted, 0)
+			.eq(OrderFees::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderFees::getFeesType, 1)
+			.eq(OrderFees::getPid, order.getId()));
+		if (CollectionUtils.isNotEmpty(orderFeesList)) {
+			BigDecimal amountCny = orderFeesList.stream().filter(e -> "CNY".equals(e.getCurrency())).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amountUsd = orderFeesList.stream().filter(e -> "USD".equals(e.getCurrency())).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			if ("CNY".equals(order.getCurrency())) {
+				amountUsd = amountUsd.multiply(order.getExchangeRate());
+				amount = amount.add(amountCny).add(amountUsd);
+			} else {
+				amountCny = amountCny.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
+				amount = amount.add(amountUsd).add(amountCny);
+			}
+		}
 		if (order.getThisUsedProfit() != null) {
 			amount = amount.subtract(order.getThisUsedProfit());
 		}
@@ -8534,7 +8558,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		items.setItemType(itemType);
 		items.setCorpId(order.getCorpId());
 		items.setSrcParentId(order.getId());
-		items.setCurrency("CNY");
+		items.setCurrency(order.getCurrency());
 		items.setExchangeRate(new BigDecimal(1));
 		items.setTaxRate(BigDecimal.ZERO);
 		items.setSrcType(1);
@@ -8544,7 +8568,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		items.setQuantity(new BigDecimal(1));
 		items.setPrice(price);
 		items.setUnit("条");
-		items.setRemarks(order.getOrderRemark());
+		items.setRemarks(order.getPaymentTypeDescription());
 		//获取费用id
 		R<FeesDesc> fees = feesDescClient.getFeesByName("货款");
 		if (fees.isSuccess() && fees.getData() != null) {