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
@@ -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>