Merge branch 'main' of ssh://192.168.1.205:9922/cf_devdept2/cf_imes_server

This commit is contained in:
lym
2024-05-21 17:41:45 +08:00
43 changed files with 510 additions and 33 deletions
@@ -71,6 +71,12 @@
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
</dependency>
<!-- redis 相关 -->
<dependency>
<groupId>com.cf.imes</groupId>
<artifactId>cf-spring-boot-starter-redis</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,81 @@
package com.cf.imes.framework.mybatis;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.cf.imes.framework.common.enums.UserTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class OAuth2AccessTokenDO {
/**
* 编号,数据库递增
*/
private Long id;
/**
* 访问令牌
*/
private String accessToken;
/**
* 刷新令牌
*/
private String refreshToken;
/**
* 用户编号
*/
private Long userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 客户端编号
*
* 关联 {@link OAuth2ClientDO#getId()}
*/
private String clientId;
/**
* 授权范围
*/
private List<String> scopes;
/**
* 过期时间
*/
private LocalDateTime expiresTime;
/**
* 是否大型数据库
*/
private Boolean large;
/**
* 数据库编号
*/
private Integer dbNo;
/**
* 数据表编号
*/
private Integer tableNo;
/**
* 数据源编码
*/
private String dataCode;
/**
* 组织id
*/
private Long organId;
/**
* 用户昵称
*/
private String nickname;
/**
* 是否超级管理员
*/
private Boolean isSupAdmin;
}
@@ -1,13 +1,23 @@
package com.cf.imes.framework.mybatis.core.handler;
import cn.hutool.core.util.StrUtil;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.mybatis.OAuth2AccessTokenDO;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.web.core.util.WebFrameworkUtils;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* 通用参数填充实现类
*
@@ -17,6 +27,17 @@ import java.util.Objects;
*/
public class DefaultDBFieldHandler implements MetaObjectHandler {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Autowired
private HttpServletRequest request;
private static final String AUTHORIZATION_BEARER = "Bearer";
private static final String OAUTH2_ACCESS_TOKEN = "oauth2_access_token:%s";
@Override
public void insertFill(MetaObject metaObject) {
if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BaseDO) {
@@ -34,6 +55,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
//Long userId = WebFrameworkUtils.getLoginUserId();
String loginUserName = WebFrameworkUtils.getLoginUserName();
// 当前登录用户不为空,创建人为空,则当前登录用户为创建人
if (Objects.nonNull(loginUserName) && Objects.isNull(baseDO.getCreator())) {
baseDO.setCreator(loginUserName);
@@ -42,9 +64,32 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
if (Objects.nonNull(loginUserName) && Objects.isNull(baseDO.getUpdater())) {
baseDO.setUpdater(loginUserName);
}
}
// 从请求中获取到 Token
String authorization = obtainAuthorization(request, "Authorization", "token");
Long organId = null;
/**
* 用户首次密码登陆的时候,不会有token带入,直接捕捉异常抛出即可,组织ID后续会根据用户登录的组织进行填入,
* 这里的组织ID字段填入即使为空也可,后续的请求中都会带有token,再从缓存中获取到 token 数据,再获取组织ID,填入即可
*/
try {
// 获取 token 对应的缓存数据,并得到组织 ID
OAuth2AccessTokenDO oAuth2AccessTokenDO = get(authorization);
organId = oAuth2AccessTokenDO.getOrganId();
}catch (Exception e){
}
this.strictInsertFill(metaObject, "organId", Long.class, organId );
}
@Override
public void updateFill(MetaObject metaObject) {
// 更新时间为空,则以当前时间为更新时间
@@ -60,5 +105,46 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
if (Objects.nonNull(loginUserName) && Objects.isNull(modifier)) {
setFieldValByName("updater", loginUserName, metaObject);
}
// 从请求中获取到 Token
String authorization = obtainAuthorization(request, "Authorization", "token");
Long organId = null;
try {
// 获取 token 对应的缓存数据,并得到组织 ID
OAuth2AccessTokenDO oAuth2AccessTokenDO = get(authorization);
organId = oAuth2AccessTokenDO.getOrganId();
}catch (Exception e){
}
this.strictUpdateFill(metaObject, "organId", Long.class, organId );
}
// 从请求中获取到 token
public static String obtainAuthorization(HttpServletRequest request,
String headerName, String parameterName) {
// 1. 获得 Token。优先级:Header > Parameter
String token = request.getHeader(headerName);
if (StrUtil.isEmpty(token)) {
token = request.getParameter(parameterName);
}
if (!StringUtils.hasText(token)) {
return null;
}
// 2. 去除 Token 中带的 Bearer
int index = token.indexOf(AUTHORIZATION_BEARER + " ");
return index >= 0 ? token.substring(index + 7).trim() : token;
}
// 从缓存中获取到缓存的数据
public OAuth2AccessTokenDO get(String accessToken) {
String redisKey = String.format(OAUTH2_ACCESS_TOKEN, accessToken);
return JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(redisKey), OAuth2AccessTokenDO.class);
}
}
@@ -1,6 +1,7 @@
package com.cf.imes.module.executor.controller.admin.plan.bo;
import com.cf.imes.module.executor.controller.admin.plan.vo.OptimizeParamRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OptimizePlateDetialRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO;
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
@@ -26,6 +27,10 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
public class OrderSource {
@Schema(description = "优化时数据")
private List<OptimizePlateDetialRespVO> optimizePlateDetialRespVO;
@Schema(description = "机台数据")
private MachineDTO machineDTO;
@@ -0,0 +1,46 @@
package com.cf.imes.module.executor.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 优化时对应的数据")
@Data
public class OptimizePlateDetialRespVO {
@Schema(description = "大板名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String plateName;
@Schema(description = "材料", requiredMode = Schema.RequiredMode.REQUIRED)
private String material;
@Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED)
private String color;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer texture;
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private Double thickness;
@Schema(description = "小板数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Long plateNum;
@Schema(description = "大板数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Long boardNum;
@Schema(description = "余料板数量", requiredMode = Schema.RequiredMode.REQUIRED)
private String remainPlateNum;
@Schema(description = "前N", requiredMode = Schema.RequiredMode.REQUIRED)
private Double topN;
@Schema(description = "最后", requiredMode = Schema.RequiredMode.REQUIRED)
private Double eventually;
@Schema(description = "开料刀", requiredMode = Schema.RequiredMode.REQUIRED)
private String knifeName;
@Schema(description = "尺寸规格", requiredMode = Schema.RequiredMode.REQUIRED)
private String spec;
}
@@ -13,6 +13,7 @@ public class PlateDetialRespVO {
@Schema(description = "板件ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "房间名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String roomName;
@@ -20,13 +21,19 @@ public class PlateDetialRespVO {
@Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String bodyName;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String orderId;
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long goodsId;
@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String goodsName;
@Schema(description = "板编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String plateNo;
@@ -38,34 +45,111 @@ public class PlateDetialRespVO {
@Schema(description = "板长", requiredMode = Schema.RequiredMode.REQUIRED)
private Double height;
@Schema(description = "板宽", requiredMode = Schema.RequiredMode.REQUIRED)
private Double width;
@Schema(description = "板厚", requiredMode = Schema.RequiredMode.REQUIRED)
private Double thickness;
@Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal splitWidth;
@Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal splitHeight;
@Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal splitThickness;
@Schema(description = "是否异性-是否弧形地脚,不处理异形", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isSpecialShaped;
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealLeft;
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealRight;
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealUp;
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal sealDown;
@Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
private BigDecimal area;
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer texture;
@Schema(description = "孔面类型,0 正面 1 反面 2 侧面", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer holeFace;
@Schema(description = "排孔类型,0 正纹 1 反面 2 随意面", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer holeArrange;
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28477")
private Short unregularPointCount;
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20823")
private Short frontHoleCount;
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3441")
private Short backHoleCount;
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "25509")
private Short sideHoleCount;
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "31547")
private Short frontModelCount;
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "26725")
private Short backModelCount;
@Schema(description = "是否门板", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isDoor;
@Schema(description = "是否孤形对角", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isArcAcross;
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12800")
private Long moduleTypeId;
@Schema(description = "是否造型", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isSculpt;
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer filterType;
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
private Double offsetX;
@Schema(description = "异型偏移 y", requiredMode = Schema.RequiredMode.REQUIRED)
private Double offsetY;
@@ -74,6 +158,10 @@ public class PlateDetialRespVO {
private String remark;
@Schema(description = "是否作废", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isCancel;
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer type;
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.goods;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.math.BigDecimal;
@@ -29,6 +30,9 @@ public class GoodsDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,9 +1,8 @@
package com.cf.imes.module.executor.dal.dataobject.managePlate;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.math.BigDecimal;
@@ -73,9 +72,8 @@ public class ManagePlateDO extends BaseDO {
*/
private String remark;
/**
* 组织id
*/
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.module;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -27,6 +28,9 @@ public class ModuleDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.moduleitem;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
@@ -25,6 +26,9 @@ public class ModuleItemDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -22,13 +22,17 @@ import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderDO extends OrganBaseDO {
public class OrderDO extends BaseDO {
/**
* 生产单号,主键
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 父单号
*/
@@ -50,7 +54,7 @@ public class OrderDO extends OrganBaseDO {
*/
private Integer orderSort;
/**
* 数据类型,1文件导入 2API 3数据源
* 数据类型,0文件导入 1API 2数据源
*/
private Integer dataType;
/**
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.orderBody;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -24,6 +25,10 @@ public class OrderBodyDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.orderGroup;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -26,6 +27,9 @@ public class OrderGroupDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.orderItem;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
@@ -17,13 +18,14 @@ import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderItemDO {
public class OrderItemDO {
/**
* 明细编号
*/
@TableId
private Long id;
/**
* 生产单号
*/
@@ -64,9 +66,8 @@ public class OrderItemDO {
* 部件数量
*/
private Double num;
/**
* 组织id
*/
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -47,6 +47,7 @@ public class OrderModuleExtraDO{
/**
* 组织数据
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,6 +1,7 @@
package com.cf.imes.module.executor.dal.dataobject.orderParts;
import com.cf.imes.framework.mybatis.core.type.JsonLongSetTypeHandler;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -27,6 +28,9 @@ public class OrderPartsDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.plan;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -29,6 +30,9 @@ public class PlanDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 排单号
*/
@@ -35,6 +35,7 @@ public class PlanItemDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.plate;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
@@ -38,6 +39,9 @@ public class PlateDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,8 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.plate;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
@@ -78,6 +76,7 @@ public class PlateGoodDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.process;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -27,6 +28,9 @@ public class OrderProcessDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.processStep;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -30,6 +31,9 @@ public class ProcessStepDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -1,8 +1,12 @@
package com.cf.imes.module.executor.dal.dataobject.processStepItem;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
@TableName(value = "order_process_step_item", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users
@@ -16,6 +20,10 @@ public class OrderProcessStepItemDO {
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 工序项目名
private String name;
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.dal.dataobject.rawgoods;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@@ -27,6 +28,9 @@ public class RawGoodsDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 生产单号
*/
@@ -96,4 +96,9 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
List<PlateDetialRespVO> selectPlateDetialListByIds(@Param("orderIds") List<Long> orderIds);
List<OptimizePlateDetialRespVO> selectPlate(@Param("orderId") Long orderId);
List<OptimizePlateDetialRespVO> selectPlateListByOrderIds(@Param("orderIds") List<Long> orderIds);
}
@@ -301,6 +301,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
OrderSource orderSource = new OrderSource();
List<OptimizePlateDetialRespVO> optimizePlateDetialRespVO = plateMapper.selectPlate(orderId);
List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrderId, orderId)
);
@@ -311,6 +313,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderModelDO> orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL);
orderSource.setOptimizePlateDetialRespVO(optimizePlateDetialRespVO);
orderSource.setPlan(planDO);
orderSource.setOrderList(Collections.singletonList(orderDO));
orderSource.setPlateList(plateDOS);
@@ -336,6 +339,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderItemDO> orderItemDOS = orderItemMapper.selectJoinList(OrderItemDO.class, wrapper);
List<Long> orderIds = orderItemDOS.stream().map(OrderItemDO::getOrderId).collect(Collectors.toList());
List<OptimizePlateDetialRespVO> optimizePlateDetialRespVOS = plateMapper.selectPlateListByOrderIds(orderIds);
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
List<GoodsDO> goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX<GoodsDO>().in(GoodsDO::getOrderId, orderIds));
@@ -344,6 +349,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderModelDO> orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL);
return OrderSource.builder()
.optimizePlateDetialRespVO(optimizePlateDetialRespVOS)
.orderList(orderDOS)
.plan(planDO)
.goodsList(goodsDOS)
@@ -111,7 +111,7 @@ public class PlateServiceImpl implements PlateService {
// 获取到当前登录用户的信息
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
// 查询生产单下的大板余料板,排单状态的信息
// 查询生产单下的大板,余料板,排单状态的信息
PlateDetailRespVO plateDetailRespVO = plateMapper.selectPlateNumList(reqVO);
plateDetailRespVO.setCompanyId(loginUser.getId());
@@ -116,6 +116,7 @@
<resultMap id="PlateDetialMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetialRespVO">
<result property="itemId" column="itemId"/>
<result property="goodsName" column="goodsName"/>
<result property="bodyName" column="bodyName"/>
<result property="roomName" column="roomName"/>
<result property="processGroupName" column="processGroupName"/>
@@ -128,11 +129,13 @@
select distinct op.*,
oi.id as itemId,
ogs.goods_name as goodsName,
ob.name as bodyName,
ob.room_name as roomName,
og.name as processGroupName,
CASE WHEN op.unregular_point_count = 0 and op.front_hole_count = 0 and op.back_hole_count = 0 and op.side_hole_count = 0 THEN false ELSE true END AS hasHole
from order_plate op
left join order_goods ogs on op.goods_id = ogs.id
join order_item oi on op.id = oi.plate_id
join order_body ob on oi.body_id = ob.id
left join order_group og on oi.group_id = og.id
@@ -147,11 +150,13 @@
select distinct op.*,
oi.id as itemId,
ogs.goods_name as goodsName,
ob.name as bodyName,
ob.room_name as roomName,
og.name as processGroupName,
CASE WHEN op.unregular_point_count = 0 and op.front_hole_count = 0 and op.back_hole_count = 0 and op.side_hole_count = 0 THEN false ELSE true END AS hasHole
from order_plate op
left join order_goods ogs on op.goods_id = ogs.id
join order_item oi on op.id = oi.plate_id
join order_body ob on oi.body_id = ob.id
left join order_group og on oi.group_id = og.id
@@ -167,4 +172,69 @@
</select>
<resultMap id="PlateMap" type="com.cf.imes.module.executor.controller.admin.plan.vo.OptimizePlateDetialRespVO">
<result property="boardNum" column="boardNum"/>
<result property="plateNum" column="plateNum"/>
<result property="texture" column="texture"/>
<result property="plateName" column="plateName"/>
<result property="material" column="material"/>
<result property="color" column="color"/>
<result property="thickness" column="thickness"/>
<result property="spec" column="spec"/>
<result property="remainPlateNum" column="remainPlateNum"/>
</resultMap>
<select id="selectPlate"
resultMap="PlateMap"
parameterType="java.lang.Long">
select count(distinct og.id) as boardNum,
count(distinct op.id) as plateNum,
op.texture as texture,
og.goods_name as plateName,
og.material as material,
og.color as color,
og.thickness as thickness,
og.spec as spec,
orp.count as remainPlateNum
from order_goods og
left join order_plate op on og.id = op.goods_id
left join plate p on og.goods_id = p.id
left join order_remain_plate orp on op.id = orp.plan_id
where og.order_id = #{orderId}
group by plateName,material,color,thickness,spec,remainPlateNum,texture;
</select>
<select id="selectPlateListByOrderIds"
resultMap="PlateMap"
parameterType="java.lang.Long">
select count(distinct og.id) as boardNum,
count(distinct op.id) as plateNum,
op.texture as texture,
og.goods_name as plateName,
og.material as material,
og.color as color,
og.thickness as thickness,
og.spec as spec,
orp.count as remainPlateNum
from order_goods og
left join order_plate op on og.id = op.goods_id
left join plate p on og.goods_id = p.id
left join order_remain_plate orp on op.id = orp.plan_id
where og.order_id in
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
#{orderIds}
</foreach>
group by plateName,material,color,thickness,spec,remainPlateNum,texture;
</select>
</mapper>
@@ -1,6 +1,8 @@
package com.cf.imes.module.manage.dal.dataobject.pack;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -23,6 +25,7 @@ public class OrderBodyDO extends BaseDO {
private Long orderId;
// 组织 ID,默认为1
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 房间ID
@@ -1,9 +1,7 @@
package com.cf.imes.module.manage.dal.dataobject.patching;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
@@ -15,7 +13,7 @@ import lombok.*;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PatchDetailDO extends OrganBaseDO {
public class PatchDetailDO extends BaseDO {
// 补板ID
@@ -25,7 +23,8 @@ public class PatchDetailDO extends OrganBaseDO {
// 生产单号
private Long orderId;
// 组织 ID
// 组织 ID,默认为1
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 总面积
@@ -1,6 +1,8 @@
package com.cf.imes.module.manage.dal.dataobject.plate;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -24,6 +26,7 @@ public class OrderPlateDO extends BaseDO {
private Long orderId;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 板名称
@@ -77,6 +77,7 @@ public class PlateDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,6 +1,8 @@
package com.cf.imes.module.manage.dal.dataobject.process;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -35,6 +37,7 @@ public class OrderDO extends BaseDO {
private String phoneNumber;
// 组织 id
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 经销商
@@ -1,11 +1,9 @@
package com.cf.imes.module.manage.dal.dataobject.process;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
@TableName(value = "order_process_step_item", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users
@@ -20,6 +18,10 @@ public class OrderProcessStepItemNDO {
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 工序项目名
private String name;
@@ -1,9 +1,7 @@
package com.cf.imes.module.manage.dal.dataobject.process;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -27,6 +25,7 @@ public class OrderProcessStepNDO extends BaseDO {
private Long orderId;
//组织ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 完成时间
@@ -1,9 +1,7 @@
package com.cf.imes.module.manage.dal.dataobject.process;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
@@ -74,5 +72,6 @@ public class ProcessDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,6 +1,8 @@
package com.cf.imes.module.manage.dal.dataobject.query;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@@ -45,6 +47,7 @@ public class OrderItemDO {
private Float num;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
@@ -1,9 +1,12 @@
package com.cf.imes.module.manage.dal.dataobject.query;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
@TableName("order_package_n")
@@ -20,6 +23,10 @@ public class OrderPackageDO extends BaseDO {
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 生产单号
private Long orderNo;
@@ -35,8 +42,6 @@ public class OrderPackageDO extends BaseDO {
// 包裹状态,0未封包,1已封包,2已入库,3已出库
private Integer status;
// 组织ID
private Long organId;
// 备注
private String remark;
@@ -1,6 +1,8 @@
package com.cf.imes.module.manage.dal.dataobject.query;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -23,6 +25,7 @@ public class OrderPartsNDO extends BaseDO {
private Long orderId;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 商品ID
@@ -1,5 +1,6 @@
package com.cf.imes.module.manage.dal.dataobject.remainplaten;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
@@ -26,6 +27,9 @@ public class RemainPlateDO extends BaseDO {
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 排单 ID
*/
@@ -79,5 +79,6 @@ public class ProcessDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -27,6 +27,7 @@ public class ProcessGroupDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 工序组名称
@@ -23,6 +23,7 @@ public class ProcessUserDO {
/**
* 组织 ID
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 工序 ID