Browse Source

2022年9月29日17:44:20

纪新园 3 years ago
parent
commit
6c1bcf4681

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

@@ -612,4 +612,15 @@ public class OrderItems extends OrderBase {
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date stockTime;
 
+	/**
+	 * 货权人id
+	 */
+	@ApiModelProperty(value = "货权人id")
+	private Long purchaserId;
+	/**
+	 * 仓库id
+	 */
+	@ApiModelProperty(value = "仓库id")
+	private Long warehouseId;
+
 }

+ 11 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderItemsVO.java

@@ -1,12 +1,15 @@
 package com.trade.purchase.order.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.trade.purchase.order.entity.OrderItems;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 订单明细表视图实体类
@@ -31,4 +34,12 @@ public class OrderItemsVO extends OrderItems {
 	@ApiModelProperty(value = "60天销量")
 	private BigDecimal salesVolume;
 
+	/**
+	 * 入库日期
+	 */
+	@ApiModelProperty(value = "入库日期")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date stockTime;
+
 }

+ 5 - 0
blade-service/blade-client/src/main/java/org/springblade/client/RedisClient.java

@@ -42,6 +42,7 @@ public class RedisClient implements IRedisClient {
 		if (RedisKey.REDIS_USER.equals(type)) {
 			if (redisTemplate.hasKey(type)) {
 				redisTemplate.opsForValue().set(type, userClient.selectUserAll());
+				redisTemplate.persist(type);
 			} else {
 				redisTemplate.opsForValue().getAndSet(type, userClient.selectUserAll());
 			}
@@ -50,6 +51,7 @@ public class RedisClient implements IRedisClient {
 		if (RedisKey.REDIS_GOODS.equals(type)) {
 			if (redisTemplate.hasKey(type)) {
 				redisTemplate.opsForValue().set(type, goodsDescClient.selectGoodsDescAll());
+				redisTemplate.persist(type);
 			} else {
 				redisTemplate.opsForValue().getAndSet(type, goodsDescClient.selectGoodsDescAll());
 			}
@@ -61,6 +63,7 @@ public class RedisClient implements IRedisClient {
 			if (list.isSuccess()) {
 				if (redisTemplate.hasKey(type)) {
 					redisTemplate.opsForValue().set(type, list.getData());
+					redisTemplate.persist(type);
 				} else {
 					redisTemplate.opsForValue().getAndSet(type, list.getData());
 				}
@@ -70,6 +73,7 @@ public class RedisClient implements IRedisClient {
 		if (RedisKey.REDIS_STORAGE_TYPE.equals(type)) {
 			if (redisTemplate.hasKey(type)) {
 				redisTemplate.opsForValue().set(type, iStorageClient.selectStorageTypeAll());
+				redisTemplate.persist(type);
 			} else {
 				redisTemplate.opsForValue().getAndSet(type, iStorageClient.selectStorageTypeAll());
 			}
@@ -78,6 +82,7 @@ public class RedisClient implements IRedisClient {
 		if (RedisKey.REDIS_STORAGE_DESC.equals(type)) {
 			if (redisTemplate.hasKey(type)) {
 				redisTemplate.opsForValue().set(type, iStorageClient.selectStorageDescAll());
+				redisTemplate.persist(type);
 			} else {
 				redisTemplate.opsForValue().getAndSet(type, iStorageClient.selectStorageDescAll());
 			}

+ 13 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -38,12 +38,14 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.*;
+import org.springblade.system.cache.SysCache;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.feign.ITenantClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.excel.UserExcel;
 import org.springblade.system.user.excel.UserImporter;
+import org.springblade.system.user.feign.IUserSearchClient;
 import org.springblade.system.user.service.IUserService;
 import org.springblade.system.user.vo.UserVO;
 import org.springblade.system.user.wrapper.UserWrapper;
@@ -74,6 +76,7 @@ public class UserController {
 	private final IUserService userService;
 	private final ITenantClient tenantClient;
 	private final ISysClient sysClient;
+	private final IUserSearchClient userSearchClient;
 
 	/**
 	 * 查询单条
@@ -441,4 +444,14 @@ public class UserController {
 		return R.data(userService.selectUserSearch(user, query));
 	}
 
+	/**
+	 * 嘉通木材用户列表(库管员)
+	 */
+	@GetMapping("/MCSelectList")
+	@ApiOperationSupport(order = 3)
+	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	public R<List<User>> list() {
+		return userSearchClient.listByRole(SysCache.getRoleIds(AuthUtil.getTenantId(),"库管员"));
+	}
+
 }

+ 6 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/excel/GeneralLedgerExcel.java

@@ -125,5 +125,11 @@ public class GeneralLedgerExcel {
 	@ExcelProperty(value = "提单号")
 	private String morderNo;
 
+	/**
+	 * 状态
+	 */
+	@ExcelProperty(value = "状态")
+	private int status;
+
 
 }

+ 26 - 4
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java

@@ -1,5 +1,6 @@
 package com.trade.purchase.order.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -104,11 +105,11 @@ public class WoodHarvestingCloudController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "查询所有", notes = "传入order")
 	public R<IPage<Order>> list(Order order, Query query) {
-		/*redisClient.selectItemsIdGoods("goods");
+		redisClient.selectItemsIdGoods("goods");
 		redisClient.selectItemsIdGoods("corps");
 		redisClient.selectItemsIdGoods("storageType");
 		redisClient.selectItemsIdGoods("storageDesc");
-		redisClient.selectItemsIdGoods("user");*/
+		redisClient.selectItemsIdGoods("user");
 		IPage<Order> pages = orderService.selectOrderList(order, query);
 		return R.data(pages);
 	}
@@ -208,11 +209,11 @@ public class WoodHarvestingCloudController {
 					  @RequestParam(value = "type") String type,
 					  @RequestParam(value = "toolType", required = false) String toolType,
 					  @RequestParam(value = "status") int status,
-					  @RequestParam(value = "isIssue") String isIssue) {
+					  @RequestParam(value = "isIssue") String isIssue,@RequestParam(value = "scanningComparison", required = false) String scanningComparison) {
 		if (id == null) {
 			return R.fail("缺少必要参数");
 		}
-		return R.data(orderService.withdraw(id, type, status, isIssue, toolType));
+		return R.data(orderService.withdraw(id, type, status, isIssue, toolType,scanningComparison));
 	}
 
 	/**
@@ -393,4 +394,25 @@ public class WoodHarvestingCloudController {
 		return orderService.scanningCodeAdd(billNo, id);
 	}
 
+	/**
+	 * pc添加明细
+	 */
+	@GetMapping("/scanningCodeAddPc")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "Pc添加明细", notes = "billNo")
+	public R pcSubmit(@RequestParam(value = "purchaserId") Long purchaserId, @RequestParam(value = "storageId") Long storageId, Query query) {
+		if (ObjectUtils.isNull(purchaserId) || ObjectUtils.isNull(storageId)) {
+			return R.fail("缺少必要参数");
+		}
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(OrderItems::getIsDeleted, 0)
+			.eq(OrderItems::getPurchaserId, purchaserId)
+			.eq(OrderItems::getIsIssue, "3")
+			.eq(OrderItems::getScanningComparison, "N")
+			.eq(OrderItems::getWarehouseId, storageId);
+		IPage<OrderItems> pages = orderItemsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
 }

+ 7 - 5
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

@@ -390,7 +390,8 @@
         bo.vehicle_ship_number AS vehicleShipNumber,
         bcd1.cname AS purchaser,
         bo.morder_no AS morderNo,
-        bo.sys_no AS sysNo
+        bo.sys_no AS sysNo,
+        boi.is_Issue AS status
         FROM
         business_order_items boi
         JOIN business_order bo ON boi.pid = bo.id
@@ -402,9 +403,10 @@
         WHERE
         boi.is_deleted = 0
         AND bo.is_deleted = 0
-        and bo.status = 3
+        and bo.status = 5
         and bo.bill_type = 'RK'
         and bo.trade_type = 'CMY'
+          and boi.is_Issue = '3'
         <if test="Order.sysNo!=null and Order.sysNo != ''">
             and bo.sys_no=#{Order.sysNo}
         </if>
@@ -459,7 +461,7 @@
         <if test="Order.unit!=null and Order.unit != ''">
             and boi.unit = #{Order.unit}
         </if>
-        and (boi.is_Issue = '1' or boi.is_Issue = '2')
+        and (boi.is_Issue = '3' or boi.is_Issue = '4' or boi.is_Issue = '5' or boi.is_Issue = '6')
         order by bo.busines_date
     </select>
 
@@ -472,10 +474,10 @@
         JOIN business_order bo ON boi.pid = bo.id
         where boi.is_deleted = 0
           AND bo.is_deleted = 0
-          AND bo.STATUS = 3
+          AND bo.status = 5
           AND bo.bill_type = 'RK'
           AND bo.trade_type = 'CMY'
-          and boi.is_Issue = '1'
+          and (boi.is_Issue = '3' or boi.is_Issue = '4' or boi.is_Issue = '5' or boi.is_Issue = '6')
           and boi.tenant_id = #{tenantId}
         GROUP BY boi.item_id
     </select>

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

@@ -211,7 +211,7 @@ public interface IOrderService extends IService<Order> {
 	/**
 	 * 状态修改
 	 */
-	boolean withdraw(Long id, String type, int status, String isIssue,String toolType);
+	boolean withdraw(Long id, String type, int status, String isIssue,String toolType,String scanningComparison);
 
 	/**
 	 * 木材库列表查询

+ 33 - 19
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -258,7 +258,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<OrderItems> orderItemsList = this.getOrderItems(vo.getId(), null);
 		if (CollectionUtils.isNotEmpty(orderItemsList)) {
 			vo.setOrderItemsList(orderItemsList);
-			vo.setItemsVOList(orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
+//			vo.setItemsVOList(orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
+			List<OrderItemsVO> orderItemsVOList = orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList());
+			vo.setItemsVOList(orderItemsVOList);
 			BigDecimal orderQuantity = orderItemsList.stream().filter(it -> it.getOrderQuantity() != null)
 				.map(OrderItems::getOrderQuantity)
 				.reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -1086,6 +1088,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					items.setIsIssue("4");
 					orderItemsMapper.updateById(items);
 				}
+				orderItems.setPurchaserId(submitDto.getPurchaserId());
+				orderItems.setWarehouseId(submitDto.getStorageId());
 				orderItems.setPid(submitDto.getId());
 				orderItems.setCreateTime(new Date());
 				orderItems.setCreateUser(AuthUtil.getUserId());
@@ -1158,6 +1162,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							throw new Error("捆包号:" + orderItems.getBillNo() + "不允许重复");
 						}
 					}
+					orderItems.setStockTime(submitDto.getStockTime());
 				} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(submitDto.getBillType())) {
 					if (ObjectUtils.isNull(orderItems.getId())) {
 						orderItems.setIsIssue("4");
@@ -1168,6 +1173,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItemsMapper.updateById(items);
 					}
 				}
+				orderItems.setPurchaserId(submitDto.getPurchaserId());
+				orderItems.setWarehouseId(submitDto.getStorageId());
 				orderItems.setPid(submitDto.getId());
 				orderItems.setTenantId(AuthUtil.getTenantId());
 				orderItems.setBalanceNumber(orderItems.getStorageInQuantity());//结余量
@@ -1253,6 +1260,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderItems.setTenantId(AuthUtil.getTenantId());
 				orderItems.setBalanceNumber(orderItems.getStorageInQuantity());//结余量
 				orderItems.setBalanceMoney(orderItems.getStorageAmount());//结余金额
+				orderItems.setPurchaserId(submitDto.getPurchaserId());
+				orderItems.setWarehouseId(submitDto.getStorageId());
 				List<OrderItems> orderItemsBillNo = new ArrayList<>();
 				//入库明细添加逻辑
 				if (OrderTypeEnum.WAREHOUSING.getType().equals(submitDto.getBillType())) {
@@ -1856,12 +1865,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderItems.setUpdateTime(new Date());
 					orderItems.setUpdateUser(AuthUtil.getUserId());
 					RKorderItems.setScanningComparison("Y");
-					RKorderItems.setIsIssue("7");
+					RKorderItems.setIsIssue("5");
 					orderItemsMapper.updateById(RKorderItems);
 					orderItems.setUpdateTime(new Date());
 					orderItems.setUpdateUser(AuthUtil.getUserId());
 					orderItems.setScanningComparison("Y");
-					orderItems.setIsIssue("7");
+					orderItems.setIsIssue("5");
 					orderItemsMapper.updateById(orderItems);
 				}
 			} else if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {//入库手动修改货物状态为在库
@@ -1877,6 +1886,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderItemsMapper.updateById(orderItems);
 				}
 			}
+			order.setStatus(2);
 			order.setConfirmStatus("1");
 			order.setUpdateTime(new Date());
 			order.setUpdateUser(AuthUtil.getUserId());
@@ -2031,7 +2041,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public boolean withdraw(Long id, String type, int status, String isIssue, String toolType) {
+	public boolean withdraw(Long id, String type, int status, String isIssue, String toolType,String scanningComparison) {
 		Order order = baseMapper.selectById(id);
 		if (OrderTypeEnum.WAREHOUSING.getType().equals(type)) {
 			if ("app".equals(toolType)) {
@@ -2052,14 +2062,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			CKOrderItemsLambdaQueryWrapper
 				.eq(OrderItems::getIsDeleted, 0)
 				.eq(OrderItems::getPid, order.getId())
-				.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
 				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 			List<OrderItems> CKOrderItemsList = orderItemsMapper.selectList(CKOrderItemsLambdaQueryWrapper);
 			for (OrderItems orderItems : CKOrderItemsList) {
 				OrderItems Rk = new OrderItems();
 				Rk.setId(orderItems.getSrcItemId());
-				orderItems.setIsIssue(isIssue);
 				Rk.setIsIssue(isIssue);
+				Rk.setScanningComparison(scanningComparison);
+				orderItems.setIsIssue(isIssue);
+				orderItems.setScanningComparison(scanningComparison);
 				orderItemsMapper.updateById(Rk);
 				orderItemsMapper.updateById(orderItems);
 			}
@@ -2264,23 +2275,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		RKlambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId())
 			.eq(Order::getIsDeleted, 0)
 			.eq(Order::getSysNo, order.getOrderNo())
-			.eq(Order::getBillType, billNo)
-			.eq(Order::getTradeType, "3");
+			.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
+			.eq(Order::getTradeType, OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType());
 		Order RKOrder = baseMapper.selectOne(RKlambdaQueryWrapper);
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
 			.eq(OrderItems::getIsDeleted, 0)
 			.eq(OrderItems::getPid, RKOrder.getId())
 			.eq(OrderItems::getIsIssue, "3")
-			.eq(OrderItems::getScanningComparison, "N")
-			.eq(OrderItems::getSubmitPay, 1);
+			.eq(OrderItems::getScanningComparison, "N");
 		List<OrderItems> orderItemsList = orderItemsService.list(lambdaQueryWrapper);
 		for (OrderItems orderItems : orderItemsList) {
 			if (orderItems.getBillNo().equals(billNo)) {
+				//库区
+				StorageDesc storageDesc = iStorageClient.findById(orderItems.getStorageId());
+				if (ObjectUtils.isNotNull(storageDesc)) {
+					orderItems.setStorageName(storageDesc.getCname());
+				}
+				//获取商品编码,名称,规格编码,规格型号
+				R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(orderItems.getItemId());
+				if (goodsMessage.isSuccess() && goodsMessage.getData() != null) {
+					orderItems.setCname(goodsMessage.getData().getCname());
+				}
 				return R.data(orderItems);
 			}
 		}
-		return R.fail("该货物不在本单据中");
+		return R.data("该货物不在本单据中");
 	}
 
 	/**
@@ -2450,12 +2470,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			items.setItemType("仓储费");
 
 			//获取入库日期
-			LambdaQueryWrapper<OrderItems> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			orderLambdaQueryWrapper
-				.eq(OrderItems::getPid, pid)
-				.eq(OrderItems::getBillType, OrderTypeEnum.OUT_WAREHOUSING.getType())
-				.eq(OrderItems::getIsDeleted, 0)
-				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 			List<OrderItems> orderItemsList = order.getOrderItemsList();
 			StringBuilder text = new StringBuilder();
 			Long feeUnitId = 0l;
@@ -2473,13 +2487,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				//获取仓储费协议
 				LambdaQueryWrapper<Agreement> agreementLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				agreementLambdaQueryWrapper
-					.eq(Agreement::getCorpId, order.getPurchaserId())
+					.eq(Agreement::getCorpId, orderItems.getPurchaserId())
 					.eq(Agreement::getFeetypeId, "0")
 					.eq(Agreement::getDelFlag, "0")
 					.eq(Agreement::getStatus, "0")
 					.eq(Agreement::getTenantId, AuthUtil.getTenantId())
 					.apply("FIND_IN_SET(" + orderItems.getItemId() + ",goods_id)")
-					.apply("FIND_IN_SET(" + order.getStorageId() + ",warehouse_id)");
+					.apply("FIND_IN_SET(" + orderItems.getWarehouseId() + ",warehouse_id)");
 				Agreement agreement = agreementService.getOne(agreementLambdaQueryWrapper);
 				if (agreement == null) {
 					throw new SecurityException("未找到仓储费协议");