ソースを参照

更新文件位置

caifc 4 年 前
コミット
70cf40ef96

+ 1 - 1
blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java

@@ -78,7 +78,7 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService {
 		// TODO 2.8.3版本将增加:1.参数管理读取配置 2.用户管理增加解封按钮
 		int count = getFailCount(tenantId, username);
 		if (count >= FAIL_COUNT) {
-			throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
+//			throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS);
 		}
 
 		// 获取租户信息

+ 14 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java

@@ -1,6 +1,7 @@
 package org.springblade.client.feign;
 
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.common.constant.LauncherConstant;
 import org.springblade.core.mp.support.BladePage;
 import org.springblade.core.tool.api.R;
@@ -8,6 +9,8 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 @FeignClient(
 	value = LauncherConstant.APPLICATION_CLIENT_NAME
 )
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 public interface ICorpsDescClient {
 	String API_PREFIX = "/client";
 	String TOP = API_PREFIX + "/top";
+	String CORP_DETAILS = API_PREFIX + "/corpDetails";
 	String getMessage = API_PREFIX + "/getMessage";
 
 	/**
@@ -31,10 +35,20 @@ public interface ICorpsDescClient {
 
 	/**
 	 * 根据id获取客户信息
+	 *
 	 * @param Id
 	 * @return
 	 */
 	@GetMapping(getMessage)
 	R<CorpsDesc> getCorpMessage(@RequestParam("Id") Long Id);
 
+	/**
+	 * 根据租户id查询所有客户详情
+	 *
+	 * @param tenantId 租户id
+	 * @return 客户集合
+	 */
+	@GetMapping(CORP_DETAILS)
+	R<List<CorpsDescVO>> selCorpsDetails(String tenantId);
+
 }

+ 23 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/goods/dto/GoodsDescDto.java

@@ -0,0 +1,23 @@
+package org.springblade.client.goods.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springblade.client.entity.GoodsDesc;
+
+/**
+ *
+ *
+ * @author  caifc
+ * @date 2021-10-21 15:41
+*/
+@Data
+@AllArgsConstructor
+public class GoodsDescDto extends GoodsDesc {
+	private static final long serialVersionUID = 1L;
+
+
+	@ApiModelProperty("商品类型")
+	private String goodsTypeId;
+
+}

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

@@ -1,19 +1,3 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package com.trade.purchase.order.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;

+ 24 - 1
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderVO.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.List;
 
@@ -17,7 +18,6 @@ import java.util.List;
  * @since 2021-09-26
  */
 @Data
-@Builder
 @EqualsAndHashCode(callSuper = true)
 @ApiModel(value = "OrderVO对象", description = "销售或采购订单表")
 public class OrderVO extends Order {
@@ -60,4 +60,27 @@ public class OrderVO extends Order {
 	@ApiModelProperty(value = "修改人中文名")
 	private String updateUserName;
 
+	/**
+	 * 要求到货日期
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd"
+	)
+	@ApiModelProperty(value = "要求到货日期")
+	private String arrivalDateStart;
+
+	/**
+	 * 要求到货日期
+	 */
+	@ApiModelProperty(value = "要求到货日期")
+	private String arrivalDateEnd;
+
+	/**
+	 * 供应商名称
+	 */
+	@ApiModelProperty(value = "供应商名称")
+	private String corpName;
+
+
+
 }

+ 24 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -1,10 +1,13 @@
 package org.springblade.client.corps.feign;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.client.corps.assemble.mapstruct.CorpsDescMapstructMapper;
 import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.core.mp.support.BladePage;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -14,6 +17,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
@@ -21,6 +27,8 @@ import springfox.documentation.annotations.ApiIgnore;
 public class CorpsDescClient implements ICorpsDescClient {
 	private final ICorpsDescService service;
 
+	private final CorpsDescMapstructMapper corpsDescMapstructMapper;
+
 	@Override
 	public BladePage<CorpsDesc> top(Integer current, Integer size) {
 		Query query = new Query();
@@ -35,4 +43,20 @@ public class CorpsDescClient implements ICorpsDescClient {
 	public R<CorpsDesc> getCorpMessage(Long Id) {
 		return R.data(service.getById(Id));
 	}
+
+	/**
+	 * 根据租户id查询所有客户详情
+	 *
+	 * @param tenantId 租户id
+	 * @return 客户集合
+	 */
+	@Override
+	@GetMapping(CORP_DETAILS)
+	public R<List<CorpsDescVO>> selCorpsDetails(String tenantId) {
+
+		List<CorpsDesc> corpsDescList = service.list(Wrappers.<CorpsDesc>lambdaQuery().select(CorpsDesc::getId, CorpsDesc::getCname)
+			.eq(CorpsDesc::getTenantId, tenantId));
+		List<CorpsDescVO> corpsDescVOList = corpsDescList.stream().map(corpsDescMapstructMapper::toVo).collect(Collectors.toList());
+		return R.data(corpsDescVOList);
+	}
 }

+ 4 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.client.goods.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -102,7 +103,9 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 		GoodsDesc desc = baseMapper.selectById(goodsDesc.getId());
 		//获取商品类别
 		List<String> list = goodsTypeDescService.selectTypeId(goodsDesc.getId());
-		desc.setGoodsTypeId(String.join(",", list));
+		if (CollectionUtils.isNotEmpty(list)) {
+			desc.setGoodsTypeId(String.join(",", list));
+		}
 		return desc;
 	}
 

+ 1 - 1
blade-service/blade-purchase-sales/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 #服务器端口
 server:
-  port: 10000
+  port: 9015
   profile: D:/ruoyi/uploadPath
 
 #数据源配置

+ 15 - 2
blade-service/trade-purchase/pom.xml

@@ -11,8 +11,7 @@
 
     <artifactId>trade-purchase</artifactId>
     <name>${project.artifactId}</name>
-    <version>${bladex.project.version}</version>
-    <packaging>jar</packaging>
+    <version>2.8.2.RELEASE</version>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
@@ -20,6 +19,20 @@
     </properties>
 
     <dependencies>
+
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok-mapstruct-binding</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>trade-purchase-api</artifactId>

+ 1 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/PurchaseApplication.java

@@ -14,7 +14,7 @@ import org.springframework.context.annotation.ComponentScan;
  */
 @EnableBladeFeign
 @SpringCloudApplication
-@EnableFeignClients({"com.trade"})
+@EnableFeignClients({"org.springblade", "com.trade"})
 @ComponentScan(value = {"com.trade.purchase.*"})
 @MapperScan({"com.trade.purchase.**.mapper.**", "com.trade.purchase.**.assemble.mapstruct.**"})
 // @SeataCloudApplication

+ 2 - 2
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderCodeMaker.java

@@ -34,14 +34,14 @@ public class DefaultOrderCodeMaker implements IOrderCodeMaker {
 	@Override
 	public void generate(Order order) {
 		DateTime time = new DateTime(DateTime.now().toDate());
-		String timeFormat = time.toString("yyMMdd");
+		String timeFormat = time.toString("yyyyMM");
 		String key = String.format(ORDER_CODE_KEY, timeFormat);
 		Long id = redis.incr(key);
 		int i = 2;
 		if (id < i) {
 			redis.expireAt(key, time.plusMonths(1).toDate());
 		}
-		String newId = String.format("%05d", id);
+		String newId = String.format("%03d", id);
 		order.setSysNo(order.getBillType() + timeFormat + newId);
 	}
 

+ 4 - 3
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

@@ -16,6 +16,7 @@ import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.vo.OrderItemsVO;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -69,13 +70,13 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 	private Order saveOrder(OrderSubmitDto order) {
 		order.setStatus(order.getOrderStatus().getStatus());
 		order.setBillType(order.getOrderTypeEnum().getType());
-		if (Objects.isNull(order.getSysNo())) {
+		if (Func.isBlank(order.getSysNo())) {
 			orderCodeMaker.generate(order);
 		}
-		if (Objects.isNull(order.getTenantId())) {
+		if (Func.isBlank(order.getTenantId())) {
 			order.setTenantId(AuthUtil.getTenantId());
 		}
-		if (order.getBusinesDate() == null) {
+		if (Func.isEmpty(order.getBusinesDate())) {
 			order.setBusinesDate(new Date());
 		}
 		if (Objects.isNull(order.getId())) {

+ 4 - 3
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/OrderController.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.Order;
-import com.trade.purchase.order.enums.OrderStatusEnum;
+import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.service.IOrderService;
 import com.trade.purchase.order.vo.OrderVO;
 import io.swagger.annotations.Api;
@@ -15,7 +15,6 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 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.Func;
 import org.springframework.web.bind.annotation.*;
@@ -30,7 +29,7 @@ import javax.validation.Valid;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping("/order")
+@RequestMapping("/purchase-order")
 @Api(value = "采购订单表", tags = "销售或采购订单表接口")
 public class OrderController extends BladeController {
 
@@ -79,6 +78,7 @@ public class OrderController extends BladeController {
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入order")
 	public R<String> save(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setOrderTypeEnum(OrderTypeEnum.PURCHASE);
 		return orderService.saveOrderMessage(submitDto);
 	}
 
@@ -103,6 +103,7 @@ public class OrderController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入order")
 	public R<String> submit(@Valid @RequestBody OrderSubmitDto submitDto) {
+		submitDto.setOrderTypeEnum(OrderTypeEnum.PURCHASE);
 		return orderService.submitOrderMessage(submitDto);
 	}
 

+ 55 - 10
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -1,23 +1,20 @@
 package com.trade.purchase.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.trade.purchase.exception.OrderException;
-import com.trade.purchase.order.assemble.mapstruct.OrderFeesMapstructMapper;
 import com.trade.purchase.order.assemble.mapstruct.OrderItemMapstructMapper;
 import com.trade.purchase.order.assemble.mapstruct.OrderMapstructMapper;
-import com.trade.purchase.order.component.IOrderCodeMaker;
 import com.trade.purchase.order.component.IOrderSave;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.*;
 import com.trade.purchase.order.enums.OrderStatusEnum;
-import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.service.IOrderService;
-import com.trade.purchase.order.vo.OrderFeesVO;
-import com.trade.purchase.order.vo.OrderItemsVO;
 import com.trade.purchase.order.vo.OrderVO;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
@@ -26,14 +23,17 @@ import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
-import org.springblade.client.feign.ISerialClient;
+import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -65,13 +65,57 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	private final OrderItemMapstructMapper orderItemMapstructMapper;
 
 
-
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
-		return page.setRecords(baseMapper.selectOrderPage(page, order));
+		LambdaQueryWrapper<Order> lambdaQuery = Wrappers.<Order>lambdaQuery();
+		// 组装查询条件
+		pageQueryWrapper(lambdaQuery, order);
+
+		Page<Order> orderPage = this.page(new Page<>(page.getCurrent(), page.getSize()), lambdaQuery);
+		if (CollectionUtils.isNotEmpty(orderPage.getRecords())) {
+			List<Order> records = orderPage.getRecords();
+			// 转VO
+			List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
+			// 获取客户信息
+			R<List<CorpsDescVO>> listR = corpsDescClient.selCorpsDetails(AuthUtil.getTenantId());
+			if (!listR.isSuccess() || CollectionUtils.isEmpty(listR.getData())) {
+				throw new OrderException("找不到客户信息");
+			}
+			copy.forEach(li -> {
+				Optional<CorpsDescVO> first = listR.getData().stream().filter(corp -> Objects.equals(corp.getId(), li.getCorpId())).findFirst();
+				first.ifPresent(corpsDescVO -> li.setCorpName(corpsDescVO.getCname()));
+			});
+			// todo:: 整理好map 在改
+//			List<OrderVO> orderVOList = orderPage.getRecords().stream().map().collect(Collectors.toList());
+			page.setRecords(copy);
+		}
+		page.setTotal(orderPage.getTotal());
+		return page;
 	}
 
 	/**
+	 * 组装查询条件
+	 *
+	 * @param lambdaQuery 查询信息
+	 * @param order       查询条件
+	 */
+	private void pageQueryWrapper(LambdaQueryWrapper<Order> lambdaQuery, OrderVO order) {
+		lambdaQuery.select(Order::getId, Order::getSysNo, Order::getSrcOrderNo, Order::getCorpId, Order::getPaymentType, Order::getPackageRemarks);
+		lambdaQuery.eq(Func.notNull(order.getCorpId()), Order::getCorpId, order.getCorpId());
+		lambdaQuery.eq(Func.isNotBlank(order.getPaymentType()), Order::getPaymentType, order.getPaymentType());
+		lambdaQuery.eq(Func.isNotBlank(order.getPackageRemarks()), Order::getPackageRemarks, order.getPackageRemarks());
+		lambdaQuery.eq(Func.notNull(order.getOceanFreight()), Order::getOceanFreight, order.getOceanFreight());
+		lambdaQuery.eq(Order::getTenantId, AuthUtil.getTenantId());
+		lambdaQuery.like(Func.isNotBlank(order.getSysNo()), Order::getSysNo, order.getSysNo());
+		lambdaQuery.like(Func.isNotBlank(order.getBanks()), Order::getBanks, order.getBanks());
+		lambdaQuery.like(Func.isNotBlank(order.getSrcOrderNo()), Order::getSrcOrderNo, order.getSrcOrderNo());
+		lambdaQuery.like(Func.isNotBlank(order.getBanksAccountName()), Order::getBanksAccountName, order.getBanksAccountName());
+		lambdaQuery.between(Func.isNotBlank(order.getArrivalDateStart()), Order::getRequiredArrivalDate,
+			order.getArrivalDateStart(), order.getArrivalDateEnd());
+	}
+
+
+	/**
 	 * 提交采购订单
 	 *
 	 * @param submitDto 提交信息
@@ -82,7 +126,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	public R<String> saveOrderMessage(OrderSubmitDto submitDto) {
 		// 落库
 		submitDto.setOrderStatus(OrderStatusEnum.PAUSE);
-		submitDto.setOrderTypeEnum(OrderTypeEnum.PURCHASE);
 		orderSave.save(submitDto);
 		// todo:: 是否需要加日志
 		return R.status(true);
@@ -92,7 +135,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * 提交订单信息
 	 *
 	 * @param submitDto 提交信息
-	 * @return	结果
+	 * @return 结果
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -122,6 +165,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		OrderVO vo = orderMapstructMapper.toVo(orderMessage);
 		//获取创建人中文名
 		R<User> createUser = userClient.userInfoById(vo.getCreateUser());
+
+
 		if (createUser.isSuccess()) {
 			vo.setCreateUserName(createUser.getData().getName());
 		}