1、新增网关支持固定接口不传token调用,新增ignoreToken配置;2、新增小程序专用单板查询、单板查询订单信息接口;

This commit is contained in:
gaoqr
2026-04-07 16:52:29 +08:00
parent a644dc95d0
commit 7d9b1b98ba
20 changed files with 444 additions and 3 deletions
@@ -160,4 +160,18 @@ public class PlateController {
public CommonResult<OrdersViewCadViewInfoRespVO> getBodyViewPartCadInfo(@Validated @RequestBody OrderCadViewPlatePageReqVO orderCadViewPlatePageReqVO) {
return success(plateService.getBodyViewPartCadInfo(orderCadViewPlatePageReqVO));
}
@GetMapping("/wechat/miniprogram/cadview/info/{plateNo:[A-Fa-f0-9]{6}[A-Za-z0-9]{11}}")
@Operation(summary = "微信小程序根据板编号获取单板视图信息")
@Parameter(name = "plateNo", description = "板编号", required = true)
public CommonResult<OrderPlateWechatMiniProgramCadInfoRespVO> getPlateInfoByPlateNo(@PathVariable String plateNo) {
return success(plateService.getPlateInfoByPlateNo(plateNo));
}
@GetMapping("/wechat/miniprogram/cadview/order/info/{plateNo:[A-Fa-f0-9]{6}[A-Za-z0-9]{11}}")
@Operation(summary = "微信小程序根据板编号获取单板所属订单信息")
@Parameter(name = "plateNo", description = "板编号", required = true)
public CommonResult<OrderWechatMiniProgramCadInfoRespVO> getOrderInfoByPlateNo(@PathVariable String plateNo) {
return success(plateService.getOrderInfoByPlateNo(plateNo));
}
}
@@ -0,0 +1,71 @@
package com.cf.imes.module.executor.controller.admin.plate.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
/**
*
*
* @author Gqr
* @since 2026/4/3 17:41
*/
@Data
@Builder
@Schema(description = "管理后台 - 微信小程序 - 查看单板视图信息 Resp VO")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderPlateWechatMiniProgramCadInfoRespVO {
@Schema(description = "房间名称")
private String roomName;
@Schema(description = "柜体名称")
private String bodyName;
@Schema(description = "板编号")
private String plateNo;
@Schema(description = "板名称")
private String plateName;
@Schema(description = "自定义板编号")
private String customPlateNo;
@Schema(description = "宽度")
private BigDecimal width;
@Schema(description = "高度")
private BigDecimal height;
@Schema(description = "厚度")
private BigDecimal thickness;
@Schema(description = "左封边厚度")
private BigDecimal sealLeft;
@Schema(description = "右封边厚度")
private BigDecimal sealRight;
@Schema(description = "上封边厚度")
private BigDecimal sealUp;
@Schema(description = "下封边厚度")
private BigDecimal sealDown;
@Schema(description = "材质")
private String material;
@Schema(description = "颜色")
private String color;
@Schema(description = "备注")
private String remark;
@Schema(description = "CAD视图ID")
private Integer cadViewId;
@Schema(description = "CAD视图文件ID")
private Long cadViewFileId;
}
@@ -0,0 +1,36 @@
package com.cf.imes.module.executor.controller.admin.plate.vo;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
*
*
* @author Gqr
* @since 2026/4/7 14:54
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "管理后台 - 微信小程序 - 查看单板所属订单信息 Resp VO")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderWechatMiniProgramCadInfoRespVO {
@Schema(description = "订单信息")
private OrderRespVO order;
@Schema(description = "订单柜体列表")
private List<OrderBodyRespVO> orderBodyList;
@Schema(description = "订单部件列表")
private List<OrderComponentRespVO> orderComponentList;
}
@@ -49,6 +49,14 @@ public interface OrderService {
*/
OrderDO getOrder(Long id);
/**
* 获得订单表 order_{N}
*
* @param id 编号
* @return 订单表 order_{N}
*/
OrderDO getOrder(Long id, Long... organIds);
/**
* 获得订单表 order_{N}分页
*
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.order;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@@ -252,6 +253,18 @@ public class OrderServiceImpl implements OrderService {
return orderMapper.selectOrderOne(id, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
}
@Override
public OrderDO getOrder(Long id, Long... organIds) {
Long userOrganId = SecurityFrameworkUtils.getUserOrganId();
if (ObjectUtil.isNull(userOrganId) && ArrayUtil.isNotEmpty(organIds)) {
userOrganId = organIds[0];
}
return orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getId, id)
.eq(OrderDO::getOrganId, userOrganId)
.eq(OrderDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus()));
}
@Override
public PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO) {
PageResult<OrderDO> pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId()));
@@ -0,0 +1,21 @@
package com.cf.imes.module.executor.service.orderbody;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import java.util.List;
/**
* 订单柜体 order_body_{N} Service 接口
*
* @author Gqr
* @since 2026/4/7 15:27
*/
public interface OrderBodyService {
/**
* 根据订单ID获取订单柜体列表
*
* @param orderId 订单ID
* @return 订单柜体列表
*/
List<OrderBodyRespVO> getOrderBodyList(Long orderId, Long... organIds);
}
@@ -0,0 +1,41 @@
package com.cf.imes.module.executor.service.orderbody;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 订单柜体接口实现类 Service Impl
*
* @author Gqr
* @since 2026/4/7 15:28
*/
@Service
public class OrderBodyServiceImpl implements OrderBodyService {
@Resource
private OrderBodyMapper orderBodyMapper;
@Override
public List<OrderBodyRespVO> getOrderBodyList(Long orderId, Long... organIds) {
Long userOrganId = SecurityFrameworkUtils.getUserOrganId();
if (ObjectUtil.isNull(userOrganId) && ArrayUtil.isNotEmpty(organIds)) {
userOrganId = organIds[0];
}
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectList(new LambdaQueryWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.eq(OrderBodyDO::getOrganId, userOrganId)
);
return BeanUtil.copyToList(orderBodyDOS, OrderBodyRespVO.class);
}
}
@@ -78,7 +78,7 @@ public interface OrderComponentService {
* @param orderIds
* @return
*/
List<OrderComponentRespVO> getOrderComponentListOnOrders(List<Long> orderIds);
List<OrderComponentRespVO> getOrderComponentListOnOrders(List<Long> orderIds, Long... organId);
/**
* 查询部件下所有子部件
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.ordercomponent;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -655,11 +656,15 @@ public class OrderComponentServiceImpl implements OrderComponentService {
}
@Override
public List<OrderComponentRespVO> getOrderComponentListOnOrders(List<Long> orderIds) {
public List<OrderComponentRespVO> getOrderComponentListOnOrders(List<Long> orderIds, Long... organIds) {
Long userOrganId = SecurityFrameworkUtils.getUserOrganId();
if (ObjectUtil.isNull(userOrganId) && ArrayUtil.isNotEmpty(organIds)) {
userOrganId = organIds[0];
}
List<OrderComponentDO> orderComponentDOS = orderComponentMapper.selectList(new LambdaQueryWrapper<OrderComponentDO>()
.in(OrderComponentDO::getOrderId, orderIds)
.eq(OrderComponentDO::getDeleted, false)
.eq(OrderComponentDO::getOrganId, SecurityFrameworkUtils.getUserOrganId())
.eq(OrderComponentDO::getOrganId, userOrganId)
.select(OrderComponentDO::getId, OrderComponentDO::getName, OrderComponentDO::getPid));
return BeanUtil.copyToList(orderComponentDOS, OrderComponentRespVO.class);
}
@@ -137,4 +137,20 @@ public interface PlateService {
* @return
*/
OrdersViewCadViewInfoRespVO getBodyViewPartCadInfo(OrderCadViewPlatePageReqVO orderBodyPageRespVO);
/**
* 根据板编号获取板件信息
*
* @param plateNo
* @return
*/
OrderPlateWechatMiniProgramCadInfoRespVO getPlateInfoByPlateNo(String plateNo);
/**
* 根据板编号获取订单信息
*
* @param plateNo
* @return
*/
OrderWechatMiniProgramCadInfoRespVO getOrderInfoByPlateNo(String plateNo);
}
@@ -25,6 +25,7 @@ import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCadViewPlatePageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlateNumAndAreaRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
@@ -49,6 +50,10 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.enums.OrderItemType;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import com.cf.imes.module.executor.service.order.OrderService;
import com.cf.imes.module.executor.service.orderbody.OrderBodyService;
import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
import com.cf.imes.module.system.api.organ.OrganApi;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -111,6 +116,18 @@ public class PlateServiceImpl implements PlateService {
@Resource
private IdentifierGenerator identifierGenerator;
@Resource
private OrganApi organApi;
@Resource
private OrderService orderService;
@Resource
private OrderBodyService orderBodyService;
@Resource
private OrderComponentService orderComponentService;
private static final String FIELD_PLATE_ID = "plateId";
private static final String FIELD_OG_MATERIAL = "og.material";
private static final String FIELD_OG_BRAND = "og.brand";
@@ -958,4 +975,101 @@ public class PlateServiceImpl implements PlateService {
ordersViewCadViewInfoRespVO.setParts(BeanUtil.copyToList(partRecords, OrderViewPartPageRespVO.class));
return ordersViewCadViewInfoRespVO;
}
@Override
public OrderPlateWechatMiniProgramCadInfoRespVO getPlateInfoByPlateNo(String plateNo) {
// 1、解析组织id,查询板件信息
Integer organId = Integer.parseInt(plateNo.substring(0, 6), 16);
organApi.validOrgan(organId.longValue()).checkError();
PlateDO plateDO = plateMapper.selectOne(new LambdaQueryWrapper<PlateDO>()
.eq(PlateDO::getOrganId, organId)
.eq(PlateDO::getPlateNo, plateNo.substring(6)));
if (ObjectUtil.isNull(plateDO)) {
throw new ServiceException(PLATE_NOT_EXISTS);
}
Long orderId = plateDO.getOrderId();
// 2、根据板id查询明细
List<OrderItemDO> plateItemDOS = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItemDO>()
.eq(OrderItemDO::getPlateId, plateDO.getId())
.eq(OrderItemDO::getOrganId, organId)
.eq(OrderItemDO::getOrderId, orderId)
);
if (CollUtil.isEmpty(plateItemDOS)) {
throw new ServiceException(PLATE_NOT_EXISTS);
}
// 3、查询柜体获取图纸id
OrderItemDO plateItemDO = plateItemDOS.get(0);
// 板件cad id
Integer cadViewId = plateItemDO.getCadViewId();
OrderBodyDO orderBodyDO = orderBodyMapper.selectOne(new LambdaQueryWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getId, plateItemDO.getBodyId())
.eq(OrderBodyDO::getOrganId, organId)
);
// 图纸id
Long cadViewFileId = orderBodyDO.getCadViewFileId();
// 4、查询材料内容
GoodsDO goodsDO = goodsMapper.selectOne(new LambdaQueryWrapper<GoodsDO>()
.eq(GoodsDO::getOrderId, orderId)
.eq(GoodsDO::getId, plateDO.getGoodsId())
.eq(GoodsDO::getOrganId, organId)
);
return OrderPlateWechatMiniProgramCadInfoRespVO
.builder()
.roomName(orderBodyDO.getRoomName())
.bodyName(orderBodyDO.getName())
.plateNo(plateDO.getPlateNo())
.plateName(plateDO.getName())
.width(plateDO.getWidth())
.height(plateDO.getHeight())
.thickness(plateDO.getThickness())
.sealLeft(plateDO.getSealLeft())
.sealRight(plateDO.getSealRight())
.sealUp(plateDO.getSealUp())
.sealDown(plateDO.getSealDown())
.material(goodsDO.getMaterial())
.color(goodsDO.getColor())
.remark(plateDO.getRemark())
.cadViewFileId(cadViewFileId)
.cadViewId(cadViewId)
.build();
}
@Override
public OrderWechatMiniProgramCadInfoRespVO getOrderInfoByPlateNo(String plateNo) {
OrderWechatMiniProgramCadInfoRespVO result = new OrderWechatMiniProgramCadInfoRespVO();
// 1、解析组织id,查询板件信息
Integer organId = Integer.parseInt(plateNo.substring(0, 6), 16);
Long organIdLong = organId.longValue();
organApi.validOrgan(organId.longValue()).checkError();
PlateDO plateDO = plateMapper.selectOne(new LambdaQueryWrapper<PlateDO>()
.eq(PlateDO::getOrganId, organIdLong)
.eq(PlateDO::getPlateNo, plateNo.substring(6)));
if (ObjectUtil.isNull(plateDO)) {
throw new ServiceException(PLATE_NOT_EXISTS);
}
Long orderId = plateDO.getOrderId();
// 2、查询订单信息
OrderDO order = orderService.getOrder(orderId, organIdLong);
if (ObjectUtil.isNull(order)) {
throw new ServiceException(ORDER_NOT_EXISTS);
}
result.setOrder(BeanUtil.copyProperties(order, OrderRespVO.class));
// 3、查询柜体信息
result.setOrderBodyList(orderBodyService.getOrderBodyList(orderId, organIdLong));
// 4、查询部件信息
result.setOrderComponentList(orderComponentService.getOrderComponentListOnOrders(List.of(orderId), organIdLong));
return result;
}
}
@@ -186,6 +186,8 @@ chenfeng:
superadmin-prod-org-ignore-enable: false
ignore-urls:
- /rpc-api/**
- /admin-api/executor/plate/wechat/miniprogram/cadview/info/*
- /admin-api/executor/plate/wechat/miniprogram/cadview/order/info/*
ignore-tables:
env: # 多环境的配置项