mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
未排单创建排单新需求接口逻辑更改,相关接口逻辑更改,排单排序接口修改
This commit is contained in:
+1
-1
@@ -140,7 +140,7 @@ public class OrderPlanApiImpl implements OrderPlanApi{
|
||||
|
||||
List<Long> planIds = planItemDOS.stream().map(PlanItemDO::getPlanId).distinct().toList();
|
||||
|
||||
List<Long> planDOS = planMapper.selectPLanList(planIds,getUserOrganId());
|
||||
List<Long> planDOS = planMapper.selectPlanList(planIds,getUserOrganId());
|
||||
|
||||
if(CollUtil.isEmpty(planDOS)){
|
||||
return CommonResult.success(true);
|
||||
|
||||
+5
-2
@@ -111,8 +111,11 @@ public class PlanController {
|
||||
@PostMapping("/setSort")
|
||||
@Operation(summary = "设置排单优先级")
|
||||
@PreAuthorize("@ss.hasPermission('placeorder:priority')")
|
||||
public CommonResult<Boolean> setSort(@Valid @NotEmpty(message = "参数不能空") @RequestBody List<SortVO> sortVos) {
|
||||
return success(planService.setSort(sortVos));
|
||||
public CommonResult<Boolean> setSort(@Valid @NotEmpty(message = "参数不能空") @Size(max = 2,message = "做多两条数据") @RequestBody List<SortVO> sortVos) {
|
||||
|
||||
planService.setSort(sortVos);
|
||||
|
||||
return success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plan.bo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class GoodsNum {
|
||||
|
||||
@Schema(description = "生产单ID")
|
||||
private Long orderId;
|
||||
|
||||
|
||||
@Schema(description = "商品数量")
|
||||
private Long goodsNum;
|
||||
|
||||
}
|
||||
+4
-1
@@ -7,6 +7,7 @@ import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrder
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateDetailRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.PlanActualGoodsModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
@@ -64,11 +65,13 @@ public class OrderSource {
|
||||
private List<OrderPartsRemark> orderPartsRemarks;
|
||||
|
||||
|
||||
|
||||
@Schema(description = "生产单包裹信息")
|
||||
private List<PrintOrderPackReqVO> orderPackReqVOS;
|
||||
|
||||
|
||||
@Schema(description = "混单时选择的实际的大板信息")
|
||||
private PlanActualGoodsModelDO planActualGoodsModelDO;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plan.vo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MixConfig {
|
||||
|
||||
|
||||
@Schema(description = "是否开启混单,true 开启 false 关闭")
|
||||
private Boolean isMixed;
|
||||
|
||||
|
||||
@Schema(description = "混单方式 1 相同材质和厚度 2 相同厚度")
|
||||
private Integer mixedType;
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plan.vo;
|
||||
|
||||
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.PlanActualGoodsModelDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PlanActualGoodsList {
|
||||
|
||||
@Schema(description = "大板的分类ID")
|
||||
private List<Long> ids;
|
||||
|
||||
@Schema(description = "混单时选择的实际的大板信息")
|
||||
private PlanActualGoodsModelDO planActualGoodsModelDO;
|
||||
|
||||
|
||||
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plan.vo;
|
||||
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsRespVO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PlanActualGoodsResp {
|
||||
|
||||
|
||||
@Schema(description = "大板的分类ID")
|
||||
private List<Long> ids;
|
||||
|
||||
|
||||
@Schema(description = "页面显示的大板信息")
|
||||
private List<GoodsRespVO> goodsRespVOS;
|
||||
|
||||
|
||||
}
|
||||
+6
-1
@@ -26,7 +26,8 @@ public class PlanSaveReqVO {
|
||||
@Schema(description = "是否已投产")
|
||||
private Boolean isScheduled;
|
||||
|
||||
@Schema(description = "需要进行排单的板材信息")
|
||||
|
||||
@Schema(description = "需要进行排单的板材信息-数据不改变")
|
||||
private SavePlanPlateList savePlanPlateList;
|
||||
|
||||
|
||||
@@ -42,4 +43,8 @@ public class PlanSaveReqVO {
|
||||
private List<OrderPlateIds> deleteOrderPlateIds;
|
||||
|
||||
|
||||
@Schema(description = "混单创建排单时选择的实际的大板信息")
|
||||
private List<PlanActualGoodsList> planActualGoodsListList;
|
||||
|
||||
|
||||
}
|
||||
+2
@@ -60,6 +60,8 @@ public class PlateResList {
|
||||
private String material;
|
||||
@Schema(description = "纹路")
|
||||
private Integer texture;
|
||||
@Schema(description = "品牌")
|
||||
private String brand;
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
}
|
||||
|
||||
+6
@@ -16,6 +16,9 @@ import java.util.List;
|
||||
public class SavePlanPlateList {
|
||||
|
||||
|
||||
@Schema(description = "混单的配置项",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private MixConfig mixConfig;
|
||||
|
||||
|
||||
@Schema(description = "小板的信息列表",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@Valid
|
||||
@@ -74,6 +77,9 @@ public class SavePlanPlateList {
|
||||
private String color;
|
||||
|
||||
|
||||
@Schema(description = "大板的品牌")
|
||||
private String brand;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-1
@@ -12,6 +12,8 @@ import javax.validation.constraints.NotNull;
|
||||
@Data
|
||||
@Valid
|
||||
public class SortVO {
|
||||
|
||||
|
||||
@Schema(description = "排单id", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "排单id 不能空")
|
||||
private Long planId;
|
||||
@@ -20,8 +22,13 @@ public class SortVO {
|
||||
@NotNull(message = "排序不能空")
|
||||
private Long sort;
|
||||
|
||||
|
||||
@Schema(description = "是否置顶", requiredMode = Schema.RequiredMode.REQUIRED,example = "false")
|
||||
// @NotNull(message = "是否置顶不能空")
|
||||
private Boolean isTopUp;
|
||||
|
||||
|
||||
@Schema(description = "是否第一条数据",example = "false")
|
||||
private Boolean isOnePlan;
|
||||
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -22,12 +22,12 @@ public class GoodsPlateFilterPageReqVO extends PageParam {
|
||||
|
||||
|
||||
@Schema(description = "排单ID",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "排单ID不能为空")
|
||||
// @NotNull(message = "排单ID不能为空")
|
||||
private Long planId;
|
||||
|
||||
|
||||
@Schema(description = "厚度",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "厚度不能为空")
|
||||
// @NotNull(message = "厚度不能为空")
|
||||
private BigDecimal thickness;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public class GoodsPlateFilterPageReqVO extends PageParam {
|
||||
|
||||
|
||||
@Schema(description = "颜色",requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "颜色不能为空")
|
||||
// @NotNull(message = "颜色不能为空")
|
||||
private String color;
|
||||
|
||||
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.goods;
|
||||
|
||||
|
||||
import com.cf.imes.framework.es.core.dal.ESDocument;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "混单选择的实际的大板信息")
|
||||
public class PlanActualGoodsModelDO extends ESDocument {
|
||||
|
||||
|
||||
@Schema(description = "排单ID")
|
||||
private Long planId;
|
||||
|
||||
@Schema(description = "商品 ID")
|
||||
private String goodsId;
|
||||
|
||||
@Schema(description = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板")
|
||||
private String material;
|
||||
|
||||
@Schema(description = "颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "品牌")
|
||||
private String brand;
|
||||
|
||||
@Schema(description = "厚度")
|
||||
private BigDecimal thickness;
|
||||
|
||||
|
||||
// @Schema(description = "纹路")
|
||||
// private Integer texture;
|
||||
//
|
||||
// @Schema(description = "宽度")
|
||||
// private BigDecimal width;
|
||||
//
|
||||
// @Schema(description = "高度")
|
||||
// private BigDecimal height;
|
||||
//
|
||||
// @Schema(description = "规格")
|
||||
// private String spec;
|
||||
|
||||
|
||||
}
|
||||
+5
@@ -43,6 +43,11 @@ public class PlanDO extends BaseDO {
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否置顶,0 未置顶 1 已置顶
|
||||
*/
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 是否已投产:0未投产,1已投产
|
||||
*/
|
||||
|
||||
+3
@@ -8,6 +8,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsPageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderGoodsPlateIds;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO;
|
||||
@@ -200,6 +201,8 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
|
||||
}
|
||||
|
||||
|
||||
List<GoodsRespVO> selectNoOrderPlanGoods(@Param("ids") List<Long> ids, @Param("organId") Long organId);
|
||||
|
||||
List<Long> selectInsertGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIds") List<Long> goodsIds,@Param("organId") Long organId);
|
||||
|
||||
// 通过orderId查找板材
|
||||
|
||||
+66
-59
@@ -1,25 +1,20 @@
|
||||
package com.cf.imes.module.executor.dal.mysql.plan;
|
||||
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsAreaRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPlanStatisticsCountRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlanPageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
|
||||
|
||||
/**
|
||||
* 生产单开料排单 Mapper
|
||||
*
|
||||
@@ -28,48 +23,52 @@ import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.ge
|
||||
@Mapper
|
||||
public interface PlanMapper extends BaseMapperX<PlanDO> {
|
||||
|
||||
default PageResult<PlanDO> selectPage(PlanPageReqVO reqVO) {
|
||||
if(StringUtils.isNotBlank(reqVO.getCustomer())) {
|
||||
return selectJoinPage(reqVO, PlanDO.class, new MPJLambdaWrapperX<PlanDO>()
|
||||
.eq(PlanDO::getDeleted,false)
|
||||
.eq(PlanDO::getOrganId,getUserOrganId())
|
||||
.eqIfPresent(PlanDO::getIsScheduled,reqVO.getIsScheduled())
|
||||
.eqIfPresent(PlanDO::getId, reqVO.getId())
|
||||
.eqIfPresent(PlanDO::getSort, reqVO.getSort())
|
||||
.eqIfPresent(PlanDO::getType, reqVO.getType())
|
||||
.inIfPresent(PlanDO::getStatus, reqVO.getStatus())
|
||||
.eqIfPresent(PlanDO::getMachineId, reqVO.getMachineId())
|
||||
.betweenIfPresent(PlanDO::getPlanTime, reqVO.getPlanTime())
|
||||
.likeIfPresent(PlanDO::getOrderNos, reqVO.getOrderNos())
|
||||
.eqIfPresent(PlanDO::getRemark, reqVO.getRemark())
|
||||
.betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
|
||||
.eqIfPresent(PlanDO::getOperator, reqVO.getOperator())
|
||||
.betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime())
|
||||
.leftJoin(PlanItemDO.class, PlanItemDO::getPlanId, PlanDO::getId)
|
||||
.leftJoin(OrderDO.class, OrderDO::getId, PlanItemDO::getOrderId)
|
||||
.like(OrderDO::getCustomer, reqVO.getCustomer())
|
||||
.orderByDesc(PlanDO::getCreateTime)
|
||||
.distinct()
|
||||
);
|
||||
}
|
||||
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<PlanDO>()
|
||||
.eq(PlanDO::getDeleted,false)
|
||||
.eq(PlanDO::getOrganId,getUserOrganId())
|
||||
.eqIfPresent(PlanDO::getIsScheduled,reqVO.getIsScheduled())
|
||||
.eqIfPresent(PlanDO::getId, reqVO.getId())
|
||||
.eqIfPresent(PlanDO::getSort, reqVO.getSort())
|
||||
.eqIfPresent(PlanDO::getType, reqVO.getType())
|
||||
.inIfPresent(PlanDO::getStatus, reqVO.getStatus())
|
||||
.eqIfPresent(PlanDO::getMachineId, reqVO.getMachineId())
|
||||
.betweenIfPresent(PlanDO::getPlanTime, reqVO.getPlanTime())
|
||||
.likeIfPresent(PlanDO::getOrderNos, reqVO.getOrderNos())
|
||||
.eqIfPresent(PlanDO::getRemark, reqVO.getRemark())
|
||||
.betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
|
||||
.eqIfPresent(PlanDO::getOperator, reqVO.getOperator())
|
||||
.betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime())
|
||||
.orderByDesc(PlanDO::getCreateTime));
|
||||
}
|
||||
IPage<PlanDO> selectPlanPageList(@Param("page") IPage page,@Param(Constants.WRAPPER) Wrapper<PlanDO> wrapper);
|
||||
|
||||
|
||||
// default PageResult<PlanDO> selectPage(PlanPageReqVO reqVO) {
|
||||
// if(StringUtils.isNotBlank(reqVO.getCustomer())) {
|
||||
// return selectJoinPage(reqVO, PlanDO.class, new MPJLambdaWrapperX<PlanDO>()
|
||||
// .eq(PlanDO::getDeleted,false)
|
||||
// .eq(PlanDO::getOrganId,getUserOrganId())
|
||||
// .eqIfPresent(PlanDO::getIsScheduled,reqVO.getIsScheduled())
|
||||
// .eqIfPresent(PlanDO::getId, reqVO.getId())
|
||||
// .eqIfPresent(PlanDO::getSort, reqVO.getSort())
|
||||
// .eqIfPresent(PlanDO::getType, reqVO.getType())
|
||||
// .inIfPresent(PlanDO::getStatus, reqVO.getStatus())
|
||||
// .eqIfPresent(PlanDO::getMachineId, reqVO.getMachineId())
|
||||
// .betweenIfPresent(PlanDO::getPlanTime, reqVO.getPlanTime())
|
||||
// .likeIfPresent(PlanDO::getOrderNos, reqVO.getOrderNos())
|
||||
// .eqIfPresent(PlanDO::getRemark, reqVO.getRemark())
|
||||
// .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
|
||||
// .eqIfPresent(PlanDO::getOperator, reqVO.getOperator())
|
||||
// .betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime())
|
||||
// .leftJoin(PlanItemDO.class, PlanItemDO::getPlanId, PlanDO::getId)
|
||||
// .leftJoin(OrderDO.class, OrderDO::getId, PlanItemDO::getOrderId)
|
||||
// .like(OrderDO::getCustomer, reqVO.getCustomer())
|
||||
// .orderByDesc(PlanDO::getCreateTime)
|
||||
// .distinct()
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<PlanDO>()
|
||||
// .eq(PlanDO::getDeleted,false)
|
||||
// .eq(PlanDO::getOrganId,getUserOrganId())
|
||||
// .eqIfPresent(PlanDO::getIsScheduled,reqVO.getIsScheduled())
|
||||
// .eqIfPresent(PlanDO::getId, reqVO.getId())
|
||||
// .eqIfPresent(PlanDO::getSort, reqVO.getSort())
|
||||
// .eqIfPresent(PlanDO::getType, reqVO.getType())
|
||||
// .inIfPresent(PlanDO::getStatus, reqVO.getStatus())
|
||||
// .eqIfPresent(PlanDO::getMachineId, reqVO.getMachineId())
|
||||
// .betweenIfPresent(PlanDO::getPlanTime, reqVO.getPlanTime())
|
||||
// .likeIfPresent(PlanDO::getOrderNos, reqVO.getOrderNos())
|
||||
// .eqIfPresent(PlanDO::getRemark, reqVO.getRemark())
|
||||
// .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
|
||||
// .eqIfPresent(PlanDO::getOperator, reqVO.getOperator())
|
||||
// .betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime())
|
||||
// .orderByDesc(PlanDO::getCreateTime));
|
||||
// }
|
||||
|
||||
List<PlateOptimize> selectPlateListByPlanId(@Param("planId") Long planId, @Param("organId") Long organId);
|
||||
|
||||
@@ -103,11 +102,11 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
|
||||
|
||||
|
||||
|
||||
List<PlanDO> selectPlanIds(@Param("createTime") String createTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId);
|
||||
List<PlanDO> selectPlanIds(@Param("sort") Long sort,@Param("organId") Long organId);
|
||||
|
||||
|
||||
|
||||
List<PlanDO> selectPlanIdsFalse(@Param("createTime") String createTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId);
|
||||
List<PlanDO> selectPlanIdsFalse(@Param("sort") Long sort,@Param("organId") Long organId);
|
||||
|
||||
|
||||
List<PlanDO> selectPlanStatus(@Param("planIds") List<Long> planIds,@Param("organId") Long organId);
|
||||
@@ -116,7 +115,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
|
||||
|
||||
|
||||
|
||||
List<Long> selectPLanList(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
|
||||
List<Long> selectPlanList(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
|
||||
|
||||
|
||||
|
||||
@@ -129,13 +128,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
|
||||
}
|
||||
|
||||
|
||||
default List<PlanDO> selectPlanSortList(List<Integer> status,Long organId) {
|
||||
return selectList( new LambdaQueryWrapperX<PlanDO>()
|
||||
.eq(PlanDO::getOrganId,organId)
|
||||
.eq(PlanDO::getDeleted,false)
|
||||
.in(PlanDO::getStatus,status)
|
||||
.orderByAsc(PlanDO::getSort));
|
||||
}
|
||||
List<PlanDO> selectPlanSortList(@Param("status") List<Integer> status,@Param("organId") Long organId);
|
||||
|
||||
|
||||
|
||||
@@ -147,4 +140,18 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
|
||||
.select(PlanDO::getId));
|
||||
}
|
||||
|
||||
|
||||
PlanDO selectSortOnePlan(@Param("sort") Long sort, @Param("organId") Long organId);
|
||||
|
||||
|
||||
PlanDO selectLostPlan(@Param("sort") Long sort, @Param("organId") Long organId);
|
||||
|
||||
|
||||
default List<PlanDO> selectIsTopPlanList(Long organId) {
|
||||
return selectList( new LambdaQueryWrapperX<PlanDO>()
|
||||
.eq(PlanDO::getOrganId,organId)
|
||||
.eq(PlanDO::getDeleted,false)
|
||||
.eq(PlanDO::getIsTop,true)
|
||||
.orderByAsc(PlanDO::getUpdateTime));
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -45,11 +45,11 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
||||
|
||||
IPage<PlateResList> selectPlateListByPlateIds(@Param("page") IPage<PlateResList> page, @Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper);
|
||||
|
||||
IPage<OrderGoodsResp> selectNoPlanGoodsByRoomAndBodyIds(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper);
|
||||
IPage<OrderGoodsResp> selectNoPlanGoodsByRoomAndBodyIds(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper,@Param("organId") Long organId);
|
||||
|
||||
IPage<OrderGoodsResp> selectNoPlanGoodsList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper);
|
||||
IPage<OrderGoodsResp> selectNoPlanGoodsList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper,@Param("organId") Long organId);
|
||||
|
||||
List<OrderGoodsResp> selectNoOrderGoodsIdList(@Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper);
|
||||
List<OrderGoodsResp> selectNoOrderGoodsIdList(@Param(Constants.WRAPPER) Wrapper<PlanItemDO> wrapper,@Param("organId") Long organId);
|
||||
|
||||
List<OrderPlateIds> selectPlanIncrementPlate(@Param("noPlanIds") List<Long> noPlanIds,@Param("organId") Long organId);
|
||||
|
||||
|
||||
+2
@@ -20,6 +20,8 @@ public interface OptimizePlanService {
|
||||
|
||||
String PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL = "imes_plan_process_scheme_optimize_model";
|
||||
|
||||
String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model";
|
||||
|
||||
|
||||
List<PlateOptimize> getPlateListByPlanId(Long planId);
|
||||
|
||||
|
||||
+20
-4
@@ -37,6 +37,7 @@ import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.PlanActualGoodsModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
@@ -567,7 +568,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(goodsDOS,PLAN_GOODS_DATA_ERROR);
|
||||
|
||||
List<Long> orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
|
||||
String orderNos = Optional.ofNullable(planDO.getOrderNos()).orElse("[]");
|
||||
|
||||
List<Long> orderIds = JSON.parseArray(orderNos).toJavaList(Long.class).stream().distinct().toList();
|
||||
|
||||
// List<Long> orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).distinct().toList();
|
||||
|
||||
List<Long> ids = goodsDOS.stream().map(GoodsReqVO::getId).toList();
|
||||
|
||||
@@ -614,6 +619,16 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
List<OptimizeRemainPlate> optimizeRemainPlates = BeanUtils.toBean(remainPlateDOS, OptimizeRemainPlate.class);
|
||||
|
||||
|
||||
// 获取混单时选择的实际开料的大板信息
|
||||
List<PlanActualGoodsModelDO> planActualGoodsModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_ACTUAL_GOODS_MODEL, PlanActualGoodsModelDO.class);
|
||||
|
||||
// PlanActualGoodsModelDO planActualGoodsModelDO = new PlanActualGoodsModelDO();
|
||||
//
|
||||
// if(CollUtil.isNotEmpty(planActualGoodsModelDOS)){
|
||||
//
|
||||
// planActualGoodsModelDO = planActualGoodsModelDOS.get(0);
|
||||
// }
|
||||
|
||||
// 查询生产单对应的配件信息
|
||||
List<PrintOrderPartsRespVO> printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId());
|
||||
|
||||
@@ -643,6 +658,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
.goodsList(goodsDOS)
|
||||
.plateList(plateDetailRespVOS)
|
||||
.plateModels(orderModelDOS)
|
||||
.planActualGoodsModelDO(CollUtil.isNotEmpty(planActualGoodsModelDOS) ? planActualGoodsModelDOS.get(0) : null)
|
||||
.optimizeRemainPlates(optimizeRemainPlates)
|
||||
.orderPartsRespVOS(printOrderPartsRespVOS)
|
||||
.orderPartsRemarks(orderPartsRemarks)
|
||||
@@ -661,9 +677,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
Long processId = req.getProcessId();
|
||||
|
||||
List<ActualGoodsList> actualGoodsLists = Optional.ofNullable(boardModelDO.getActualGoodsList()).orElse(new ArrayList<>());
|
||||
|
||||
AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE);
|
||||
// List<ActualGoodsList> actualGoodsLists = Optional.ofNullable(boardModelDO.getActualGoodsList()).orElse(new ArrayList<>());
|
||||
//
|
||||
// AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE);
|
||||
|
||||
Long planId = boardModelDO.getPlanId();
|
||||
|
||||
|
||||
+2
-1
@@ -64,11 +64,12 @@ public interface PlanService {
|
||||
|
||||
PageResult<OrderRespVO> getOrderByPlanId(PlanOrderPageReqVO pageReqVO);
|
||||
|
||||
Boolean setSort(List<SortVO> sortVos);
|
||||
void setSort(List<SortVO> sortVos);
|
||||
|
||||
List<PlateResList> getPlateList(List<Long> planIds);
|
||||
|
||||
|
||||
List<OrderRoomBodyList> getOrderRoomBody(List<Long> orderIds);
|
||||
|
||||
List<PlanActualGoodsResp> getPlanGoodsList(SavePlanPlateList savePlanPlateList);
|
||||
}
|
||||
+400
-114
@@ -6,6 +6,7 @@ import co.elastic.clients.elasticsearch._types.FieldValue;
|
||||
import co.elastic.clients.elasticsearch.core.UpdateByQueryRequest;
|
||||
import co.elastic.clients.json.JsonData;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
@@ -19,6 +20,7 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.cf.imes.framework.security.core.LoginUser;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo;
|
||||
@@ -27,6 +29,7 @@ import com.cf.imes.module.executor.controller.admin.plan.vo.*;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.goods.PlanActualGoodsModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
@@ -116,6 +119,8 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
private static final String PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL = "imes_plan_process_scheme_optimize_model";
|
||||
|
||||
private static final String PLAN_ACTUAL_GOODS_MODEL = "imes_plan_actual_goods_model";
|
||||
|
||||
@Resource
|
||||
private ElasticsearchClient elasticsearchClient;
|
||||
|
||||
@@ -151,9 +156,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
Long processId = systemConfigRespDTO.getId();
|
||||
|
||||
Boolean isMix = systemConfigApi.getMultiColorConfigStatus().getCheckedData();
|
||||
|
||||
ArrayList<PlanDO> planDOS = new ArrayList<>();
|
||||
List<PlanDO> planDOS = new ArrayList<>();
|
||||
|
||||
List<Long> ids = new ArrayList<>();
|
||||
|
||||
@@ -163,54 +166,56 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
List<PlanItemDO> planItemDOS = new ArrayList<>();
|
||||
|
||||
List<PlanActualGoodsModelDO> planActualGoodsModelDOS = new ArrayList<>();
|
||||
|
||||
SavePlanPlateList savePlanPlateList = Optional.ofNullable(createReqVO.getSavePlanPlateList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
|
||||
|
||||
|
||||
if (Boolean.TRUE.equals(isMix)) {
|
||||
if (savePlanPlateList.getMixConfig() != null && Boolean.TRUE.equals(savePlanPlateList.getMixConfig().getIsMixed())) {
|
||||
|
||||
Integer mixedType = Optional.ofNullable(savePlanPlateList.getMixConfig().getMixedType()).orElse(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType());
|
||||
|
||||
// 混单时走的逻辑
|
||||
List<SavePlanPlateList.PlateItemList> plateItemList = Optional.ofNullable(savePlanPlateList.getPlateItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
|
||||
|
||||
List<SavePlanPlateList.GoodsItemList> goodsItemList = Optional.ofNullable(savePlanPlateList.getGoodsItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
|
||||
|
||||
// 查找材质和厚度相同的大板
|
||||
Map<String, List<Long>> grouped = groupByMaterialAndThickness(goodsItemList);
|
||||
List<PlanActualGoodsList> planActualGoodsLists = Optional.ofNullable(createReqVO.getPlanActualGoodsListList()).orElse(new ArrayList<>());
|
||||
|
||||
// 进行数据处理:value 里为 大板的分类ID
|
||||
grouped.forEach((key, value) -> {
|
||||
Map<String, List<Long>> grouped = new HashMap<>();
|
||||
|
||||
// 查找和大板分类ID相同的小板的数据
|
||||
List<SavePlanPlateList.PlateItemList> plateList = plateItemList.stream().filter(p -> value.contains(p.getId())).toList();
|
||||
if(CollUtil.isNotEmpty(planActualGoodsLists)) {
|
||||
|
||||
List<Long> orderIdList = plateList.stream().map(SavePlanPlateList.PlateItemList::getOrderId).distinct().toList();
|
||||
getCreatePlanMultipleGoodsList(planActualGoodsLists,planItemDOS,plateItemList,planActualGoodsModelDOS,planDOS,processId,loginUser);
|
||||
|
||||
AtomicLong sort = new AtomicLong(System.currentTimeMillis());
|
||||
sort.addAndGet(1);
|
||||
if(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.equals(mixedType)){
|
||||
// 筛选出材质和厚度相同的大板
|
||||
grouped = groupByMaterialAndThicknessEqualToOne(goodsItemList);
|
||||
|
||||
Long planId = (Long) identifierGenerator.nextId(null);
|
||||
}else {
|
||||
|
||||
// 创建排单
|
||||
planDOS.add(PlanDO.builder()
|
||||
.id(planId)
|
||||
.sort(sort.get())
|
||||
.type(PlanTypeEnum.MIXEDORDERPLAN.getType())
|
||||
.processId(processId)
|
||||
.orderNos(orderIdList.toString())
|
||||
.produceTime(null)
|
||||
.status(PlanStatusEnum.NOCUTTING.getStatus())
|
||||
.operator(loginUser.getNickname())
|
||||
.planTime(LocalDateTime.now())
|
||||
.build());
|
||||
grouped = groupByThicknessEqualToOne(goodsItemList);
|
||||
}
|
||||
|
||||
plateList.forEach(i ->
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(planId)
|
||||
.plateId(i.getPlateId())
|
||||
.orderId(i.getOrderId())
|
||||
.goodsId(i.getId())
|
||||
.build()));
|
||||
if(CollUtil.isNotEmpty(grouped)) {
|
||||
createPlanAndPlateDataList(grouped,planItemDOS,plateItemList,planDOS,processId,loginUser);
|
||||
}
|
||||
|
||||
});
|
||||
}else {
|
||||
|
||||
if(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.equals(mixedType)){
|
||||
// 筛选出材质和厚度相同的大板
|
||||
grouped = groupByMaterialAndThickness(goodsItemList);
|
||||
|
||||
}else {
|
||||
// 筛选出厚度相同的大板
|
||||
grouped = groupByThickness(goodsItemList);
|
||||
|
||||
}
|
||||
|
||||
createPlanAndPlateDataList(grouped,planItemDOS,plateItemList,planDOS,processId,loginUser);
|
||||
|
||||
}
|
||||
|
||||
// 获取所有的大板ID
|
||||
ids.addAll(goodsItemList.stream().map(SavePlanPlateList.GoodsItemList::getId).distinct().toList());
|
||||
@@ -227,45 +232,9 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
List<SavePlanPlateList.GoodsItemList> goodsItemList = Optional.ofNullable(savePlanPlateList.getGoodsItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
|
||||
// 查找材质和厚度和颜色相同的大板
|
||||
Map<String, List<Long>> grouped = groupByMaterialAndThicknessAndColor(goodsItemList);
|
||||
|
||||
// 进行数据处理:value 里为 大板的分类ID
|
||||
grouped.forEach((key, value) -> {
|
||||
|
||||
// 查找和大板分类ID相同的小板的数据
|
||||
List<SavePlanPlateList.PlateItemList> plateList = plateItemList.stream().filter(p -> value.contains(p.getId())).toList();
|
||||
|
||||
List<Long> orderIdList = plateList.stream().map(SavePlanPlateList.PlateItemList::getOrderId).distinct().toList();
|
||||
|
||||
AtomicLong sort = new AtomicLong(System.currentTimeMillis());
|
||||
sort.addAndGet(1);
|
||||
|
||||
Long planId = (Long) identifierGenerator.nextId(null);
|
||||
|
||||
// 创建排单
|
||||
planDOS.add(PlanDO.builder()
|
||||
.id(planId)
|
||||
.sort(sort.get())
|
||||
.type(PlanTypeEnum.MIXEDORDERPLAN.getType())
|
||||
.processId(processId)
|
||||
.orderNos(orderIdList.toString())
|
||||
.produceTime(null)
|
||||
.status(PlanStatusEnum.NOCUTTING.getStatus())
|
||||
.operator(loginUser.getNickname())
|
||||
.planTime(LocalDateTime.now())
|
||||
.build());
|
||||
|
||||
plateList.forEach(i -> {
|
||||
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(planId)
|
||||
.plateId(i.getPlateId())
|
||||
.orderId(i.getOrderId())
|
||||
.goodsId(i.getId())
|
||||
.build());
|
||||
});
|
||||
});
|
||||
Map<String, List<Long>> grouped = groupByMaterialAndThicknessAndColorAndBrand(goodsItemList);
|
||||
|
||||
createPlanAndPlateDataList(grouped,planItemDOS,plateItemList,planDOS,processId,loginUser);
|
||||
|
||||
// 获取所有的大板ID
|
||||
ids.addAll(goodsItemList.stream().map(SavePlanPlateList.GoodsItemList::getId).distinct().toList());
|
||||
@@ -294,13 +263,13 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
planMapper.insertBatch(planDOS);
|
||||
|
||||
|
||||
// plateMapper.updatePlateIsOptimized(orderIds, ids, plateIds, getUserOrganId());
|
||||
|
||||
|
||||
planItemMapper.insertBatch(planItemDOS, planItemDOS.size());
|
||||
|
||||
|
||||
if(CollUtil.isNotEmpty(planActualGoodsModelDOS)) {
|
||||
esUtils.saveEsDocument(PLAN_ACTUAL_GOODS_MODEL, planActualGoodsModelDOS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -483,8 +452,9 @@ public class PlanServiceImpl implements PlanService {
|
||||
@Override
|
||||
public PageResult<PlanRespVO> getPlanPage(PlanPageReqVO pageReqVO) {
|
||||
|
||||
PageResult<PlanDO> planDOPageResult = new PageResult<>();
|
||||
PageDTO<PlanDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
|
||||
IPage<PlanDO> planDOPageResult = new PageDTO<>();
|
||||
|
||||
if(pageReqVO.getIsUp() != null) {
|
||||
|
||||
@@ -492,32 +462,66 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
List<PlanDO> plan = pageReqVO.getIsUp() ?
|
||||
planMapper.selectPlanIds(planDO.getCreateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()) :
|
||||
|
||||
planMapper.selectPlanIdsFalse(planDO.getCreateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId());
|
||||
if(planDO.getIsTop()){
|
||||
|
||||
if (plan.isEmpty()) {
|
||||
|
||||
throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ? "第" : "最后");
|
||||
|
||||
|
||||
}else {
|
||||
|
||||
List<PlanDO> plan = pageReqVO.getIsUp() ?
|
||||
planMapper.selectPlanIds(planDO.getSort(), getUserOrganId()) :
|
||||
|
||||
planMapper.selectPlanIdsFalse(planDO.getSort(), getUserOrganId());
|
||||
|
||||
if (plan.isEmpty()) {
|
||||
|
||||
List<PlanDO> planDOS = planMapper.selectIsTopPlanList(getUserOrganId());
|
||||
|
||||
if(CollUtil.isEmpty(planDOS)) {
|
||||
throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ? "第" : "最后");
|
||||
}
|
||||
|
||||
plan.add(planDOS.get(0));
|
||||
}
|
||||
|
||||
planDOPageResult.setRecords(plan);
|
||||
planDOPageResult.setTotal(1L);
|
||||
|
||||
}
|
||||
|
||||
planDOPageResult.setList(plan);
|
||||
planDOPageResult.setTotal(1L);
|
||||
|
||||
|
||||
}else {
|
||||
|
||||
planDOPageResult = planMapper.selectPage(pageReqVO);
|
||||
if (CollUtil.isEmpty(planDOPageResult.getList())) {
|
||||
|
||||
QueryWrapperX<PlanDO> queryWrapperX = new QueryWrapperX<>();
|
||||
queryWrapperX
|
||||
.eq("op.organ_id",getUserOrganId())
|
||||
.eq(FIELD_OP_DELETED,false)
|
||||
.eqIfPresent("op.is_scheduled",pageReqVO.getIsScheduled())
|
||||
.eqIfPresent(FIELD_OP_ID, pageReqVO.getId())
|
||||
.eqIfPresent("op.sort", pageReqVO.getSort())
|
||||
.eqIfPresent("op.type", pageReqVO.getType())
|
||||
.inIfPresent("op.status", pageReqVO.getStatus())
|
||||
.betweenIfPresent("op.plan_time", pageReqVO.getPlanTime())
|
||||
.likeIfPresent("op.order_nos", pageReqVO.getOrderNos())
|
||||
.likeIfPresent(FIELD_CUSTOMER, pageReqVO.getCustomer());
|
||||
|
||||
|
||||
planDOPageResult = planMapper.selectPlanPageList(page,queryWrapperX);
|
||||
|
||||
if (CollUtil.isEmpty(planDOPageResult.getRecords())) {
|
||||
return new PageResult<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<Long> processIds = planDOPageResult.getList().stream().map(PlanDO::getProcessId).distinct().toList();
|
||||
List<Long> processIds = planDOPageResult.getRecords().stream().map(PlanDO::getProcessId).distinct().toList();
|
||||
|
||||
List<Long> planIds = planDOPageResult.getList().stream().map(PlanDO::getId).toList();
|
||||
List<Long> planIds = planDOPageResult.getRecords().stream().map(PlanDO::getId).toList();
|
||||
|
||||
|
||||
List<SystemConfigRespDTO> configDOS = systemConfigApi.getProcessByIds(processIds).getData();
|
||||
@@ -548,11 +552,10 @@ public class PlanServiceImpl implements PlanService {
|
||||
List<PlanOrderRespVO> planOrderRespVOS = orderMapper.selectPlanOrderList(planIds, getUserOrganId());
|
||||
|
||||
|
||||
PageResult<PlanRespVO> planRespVOPageResult = BeanUtils.toBean(planDOPageResult, PlanRespVO.class);
|
||||
List<PlanRespVO> planRespVOPageResult = BeanUtils.toBean(planDOPageResult.getRecords(), PlanRespVO.class);
|
||||
|
||||
|
||||
|
||||
planRespVOPageResult.getList().forEach(e -> {
|
||||
planRespVOPageResult.forEach(e -> {
|
||||
// 方案信息
|
||||
e.setProcessName(getProcessName(e.getProcessId(), configDOS));
|
||||
// 大板信息列表
|
||||
@@ -572,7 +575,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
});
|
||||
|
||||
|
||||
return planRespVOPageResult;
|
||||
return new PageResult<>(planRespVOPageResult, planDOPageResult.getTotal());
|
||||
}
|
||||
|
||||
|
||||
@@ -762,7 +765,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
.likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress())
|
||||
.betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime());
|
||||
|
||||
orderGoodsResps = planItemMapper.selectNoPlanGoodsByRoomAndBodyIds(page,queryWrapperX);
|
||||
orderGoodsResps = planItemMapper.selectNoPlanGoodsByRoomAndBodyIds(page,queryWrapperX,getUserOrganId());
|
||||
|
||||
}else {
|
||||
|
||||
@@ -781,7 +784,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
.likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress())
|
||||
.betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime());
|
||||
|
||||
orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page,queryWrapperX);
|
||||
orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page,queryWrapperX,getUserOrganId());
|
||||
|
||||
}
|
||||
|
||||
@@ -812,7 +815,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
.inIfPresent("og.thickness",thickness)
|
||||
.inIfPresent("og.brand",brand);
|
||||
|
||||
List<OrderGoodsResp> orderGoodsIdList = planItemMapper.selectNoOrderGoodsIdList(queryWrapperX);
|
||||
List<OrderGoodsResp> orderGoodsIdList = planItemMapper.selectNoOrderGoodsIdList(queryWrapperX,getUserOrganId());
|
||||
|
||||
mergeOrderGoodsLists(records,orderGoodsIdList);
|
||||
|
||||
@@ -889,39 +892,74 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean setSort(List<SortVO> sortVos) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void setSort(List<SortVO> sortVos) {
|
||||
|
||||
ArrayList<PlanDO> planDOS = new ArrayList<>();
|
||||
List<Long> planIds = sortVos.stream().map(SortVO::getPlanId).toList();
|
||||
|
||||
Boolean isTopUp = sortVos.get(0).getIsTopUp();
|
||||
for (Long planId : planIds) {
|
||||
|
||||
if(Boolean.TRUE.equals(isTopUp)){
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
List<Integer> status = Arrays.asList(PlanStatusEnum.NOCUTTING.getStatus(),PlanStatusEnum.OPENING.getStatus());
|
||||
|
||||
// 后续的查询需要加上 是否置顶 的判断条件
|
||||
List<PlanDO> planDOList = planMapper.selectPlanSortList(status, getUserOrganId());
|
||||
if(CollUtil.isNotEmpty(planDOList)) {
|
||||
// 修改为 未置顶
|
||||
// planDOList.forEach(f->f);
|
||||
|
||||
planDOS.addAll(planDOList);
|
||||
if(planDO == null){
|
||||
throw exception(PLAN_NOT_DATA_EXISTS,planId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(sortVos.size() == 1){
|
||||
|
||||
SortVO sortVO = sortVos.get(0);
|
||||
|
||||
if(sortVO.getIsOnePlan() != null){
|
||||
|
||||
PlanDO planDO = planMapper.selectById(sortVO.getPlanId());
|
||||
|
||||
Long sort = planDO.getSort();
|
||||
|
||||
PlanDO plan = Boolean.TRUE.equals(sortVO.getIsOnePlan()) ?
|
||||
planMapper.selectSortOnePlan(sort, getUserOrganId()) :
|
||||
planMapper.selectLostPlan(sort, getUserOrganId());
|
||||
|
||||
|
||||
AssertUtils.notEmpty(plan,PLAN_SORT_DATA_ERROR);
|
||||
|
||||
planDO.setSort(plan.getSort());
|
||||
|
||||
plan.setSort(sort);
|
||||
|
||||
planMapper.updateById(planDO);
|
||||
planMapper.updateById(plan);
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
planMapper.update(new LambdaUpdateWrapper<PlanDO>()
|
||||
.eq(PlanDO::getOrganId, getUserOrganId())
|
||||
.eq(PlanDO::getDeleted,false)
|
||||
.eq(PlanDO::getId,sortVO.getPlanId())
|
||||
.set(PlanDO::getIsTop,sortVO.getIsTopUp()));
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
ArrayList<PlanDO> planDOS = new ArrayList<>();
|
||||
|
||||
sortVos.forEach(e -> {
|
||||
planDOS.add(PlanDO.builder()
|
||||
.id(e.getPlanId())
|
||||
.sort(e.getSort())
|
||||
// .isTopUp(e.getIsTopUp())
|
||||
.build());
|
||||
|
||||
});
|
||||
|
||||
planMapper.updateBatch(planDOS);
|
||||
return Boolean.TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -968,6 +1006,48 @@ public class PlanServiceImpl implements PlanService {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<PlanActualGoodsResp> getPlanGoodsList(SavePlanPlateList savePlanPlateList) {
|
||||
|
||||
if(savePlanPlateList.getMixConfig() == null){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
Integer mixedType = Optional.ofNullable(savePlanPlateList.getMixConfig().getMixedType()).orElse(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType());
|
||||
|
||||
List<SavePlanPlateList.GoodsItemList> goodsItemListList = Optional.ofNullable(savePlanPlateList.getGoodsItemList()).orElseThrow(()-> new ServiceException(PLAN_PLATE_DATA_ERROR));
|
||||
|
||||
List<PlanActualGoodsResp> planActualGoodsResps = new ArrayList<>();
|
||||
|
||||
Map<String, List<Long>> grouped;
|
||||
|
||||
if(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType().equals(mixedType)){
|
||||
|
||||
grouped = groupByMaterialAndThicknessFilterLessThanOne(goodsItemListList);
|
||||
|
||||
}else {
|
||||
|
||||
grouped = groupByThicknessFilterLessThanOne(goodsItemListList);
|
||||
|
||||
}
|
||||
|
||||
|
||||
grouped.forEach((key,value) ->{
|
||||
|
||||
List<GoodsRespVO> goodsRespVOS = goodsMapper.selectNoOrderPlanGoods(value, getUserOrganId());
|
||||
|
||||
planActualGoodsResps.add(
|
||||
PlanActualGoodsResp.builder()
|
||||
.ids(value)
|
||||
.goodsRespVOS(goodsRespVOS)
|
||||
.build()
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
return planActualGoodsResps;
|
||||
}
|
||||
|
||||
|
||||
private PlanDO validatePlan(Long id) {
|
||||
|
||||
@@ -1311,14 +1391,119 @@ public class PlanServiceImpl implements PlanService {
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByMaterialAndThicknessAndColor(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
public static Map<String, List<Long>> groupByThickness(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getColor();
|
||||
String key = item.getThickness().toString();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
|
||||
// 添加当前项的 id 到对应的分组
|
||||
groupedItems.get(key).add(item.getId());
|
||||
}
|
||||
|
||||
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByMaterialAndThicknessFilterLessThanOne(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getMaterial() + "|" + item.getThickness();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
|
||||
// 添加当前项的 id 到对应的分组
|
||||
groupedItems.get(key).add(item.getId());
|
||||
}
|
||||
|
||||
// 过滤掉只包含一个 id 的分组(可选,视需求)
|
||||
groupedItems.entrySet().removeIf(entry -> entry.getValue().size() < 2);
|
||||
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByThicknessFilterLessThanOne(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getThickness().toString();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
|
||||
// 添加当前项的 id 到对应的分组
|
||||
groupedItems.get(key).add(item.getId());
|
||||
}
|
||||
|
||||
// 过滤掉只包含一个 id 的分组(可选,视需求)
|
||||
groupedItems.entrySet().removeIf(entry -> entry.getValue().size() < 2);
|
||||
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByMaterialAndThicknessEqualToOne(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getMaterial() + "|" + item.getThickness();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
|
||||
// 添加当前项的 id 到对应的分组
|
||||
groupedItems.get(key).add(item.getId());
|
||||
}
|
||||
|
||||
// 过滤掉只包含一个 id 的分组(可选,视需求)
|
||||
groupedItems.entrySet().removeIf(entry -> entry.getValue().size() > 1);
|
||||
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByThicknessEqualToOne(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getThickness().toString();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
|
||||
// 添加当前项的 id 到对应的分组
|
||||
groupedItems.get(key).add(item.getId());
|
||||
}
|
||||
|
||||
// 过滤掉只包含一个 id 的分组(可选,视需求)
|
||||
groupedItems.entrySet().removeIf(entry -> entry.getValue().size() > 1);
|
||||
|
||||
return groupedItems;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static Map<String, List<Long>> groupByMaterialAndThicknessAndColorAndBrand(List<SavePlanPlateList.GoodsItemList> items) {
|
||||
Map<String, List<Long>> groupedItems = new HashMap<>();
|
||||
|
||||
for (SavePlanPlateList.GoodsItemList item : items) {
|
||||
// 将 material 和 thickness 组合成键
|
||||
String key = item.getMaterial() + "|" + item.getThickness() + "|" + item.getColor()+ "|" + item.getBrand();
|
||||
|
||||
// 如果键不存在,初始化一个新的列表
|
||||
groupedItems.putIfAbsent(key, new ArrayList<>());
|
||||
@@ -1432,6 +1617,107 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
|
||||
|
||||
private void getCreatePlanMultipleGoodsList(List<PlanActualGoodsList> planActualGoodsLists,
|
||||
List<PlanItemDO> planItemDOS,
|
||||
List<SavePlanPlateList.PlateItemList> plateItemList,
|
||||
List<PlanActualGoodsModelDO> planActualGoodsModelDOS ,
|
||||
List<PlanDO> planDOS,
|
||||
Long processId,
|
||||
LoginUser loginUser) {
|
||||
|
||||
|
||||
planActualGoodsLists.forEach(f -> {
|
||||
|
||||
// 查找和大板分类ID相同的小板的数据
|
||||
List<SavePlanPlateList.PlateItemList> plateList = plateItemList.stream().filter(p -> f.getIds().contains(p.getId())).toList();
|
||||
|
||||
List<Long> orderIdList = plateList.stream().map(SavePlanPlateList.PlateItemList::getOrderId).distinct().toList();
|
||||
|
||||
AtomicLong sort = new AtomicLong(System.currentTimeMillis());
|
||||
sort.addAndGet(1);
|
||||
|
||||
Long planId = (Long) identifierGenerator.nextId(null);
|
||||
|
||||
// 创建排单
|
||||
planDOS.add(PlanDO.builder()
|
||||
.id(planId)
|
||||
.sort(sort.get())
|
||||
.type(PlanTypeEnum.MIXEDORDERPLAN.getType())
|
||||
.processId(processId)
|
||||
.orderNos(orderIdList.toString())
|
||||
.produceTime(null)
|
||||
.status(PlanStatusEnum.NOCUTTING.getStatus())
|
||||
.operator(loginUser.getNickname())
|
||||
.planTime(LocalDateTime.now())
|
||||
.build());
|
||||
|
||||
plateList.forEach(i ->
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(planId)
|
||||
.plateId(i.getPlateId())
|
||||
.orderId(i.getOrderId())
|
||||
.goodsId(i.getId())
|
||||
.build()));
|
||||
|
||||
if (f.getPlanActualGoodsModelDO() != null) {
|
||||
|
||||
planActualGoodsModelDOS.add(f.getPlanActualGoodsModelDO().setPlanId(planId));
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void createPlanAndPlateDataList(Map<String, List<Long>> grouped,
|
||||
List<PlanItemDO> planItemDOS,
|
||||
List<SavePlanPlateList.PlateItemList> plateItemList,
|
||||
List<PlanDO> planDOS,
|
||||
Long processId,
|
||||
LoginUser loginUser){
|
||||
|
||||
AtomicLong sort = new AtomicLong(System.currentTimeMillis());
|
||||
|
||||
// 进行数据处理:value 里为 大板的分类ID
|
||||
grouped.forEach((key, value) -> {
|
||||
|
||||
// 查找和大板分类ID相同的小板的数据
|
||||
List<SavePlanPlateList.PlateItemList> plateList = plateItemList.stream().filter(p -> value.contains(p.getId())).toList();
|
||||
|
||||
List<Long> orderIdList = plateList.stream().map(SavePlanPlateList.PlateItemList::getOrderId).distinct().toList();
|
||||
|
||||
sort.addAndGet(1);
|
||||
|
||||
Long planId = (Long) identifierGenerator.nextId(null);
|
||||
|
||||
// 创建排单
|
||||
planDOS.add(PlanDO.builder()
|
||||
.id(planId)
|
||||
.sort(sort.get())
|
||||
.type(PlanTypeEnum.MIXEDORDERPLAN.getType())
|
||||
.processId(processId)
|
||||
.orderNos(orderIdList.toString())
|
||||
.produceTime(null)
|
||||
.status(PlanStatusEnum.NOCUTTING.getStatus())
|
||||
.operator(loginUser.getNickname())
|
||||
.planTime(LocalDateTime.now())
|
||||
.build());
|
||||
|
||||
plateList.forEach(i ->
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(planId)
|
||||
.plateId(i.getPlateId())
|
||||
.orderId(i.getOrderId())
|
||||
.goodsId(i.getId())
|
||||
.build()));
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+20
-23
@@ -12,8 +12,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.cf.imes.framework.common.enums.OrderPlateCutStatusEnum;
|
||||
import com.cf.imes.framework.common.enums.OrderPlateTypeEnum;
|
||||
import com.cf.imes.framework.common.enums.PlanStatusEnum;
|
||||
import com.cf.imes.framework.common.enums.PlanTypeEnum;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
@@ -67,7 +65,6 @@ import java.util.stream.Collectors;
|
||||
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
|
||||
/**
|
||||
* 生产单板件 Service 实现类
|
||||
@@ -273,26 +270,26 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Override
|
||||
public PageResult<PlateGoodDO> getGoodsPlate(GoodsPlateFilterPageReqVO pageReqVO) {
|
||||
|
||||
PlanDO planDO = planMapper.selectById(pageReqVO.getPlanId());
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
throw exception(THIS_PLAN_PLATE_OPTIMIZE_IS_ALL);
|
||||
}
|
||||
|
||||
|
||||
if (planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())) {
|
||||
|
||||
pageReqVO.setColor(null);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(planDO.getType().equals(PlanTypeEnum.ORDERPLAN.getType()) && pageReqVO.getFilterColor() != null){
|
||||
throw exception(PLAN_GOODS_IS_FILTER_DATA_ERROR);
|
||||
|
||||
}
|
||||
// PlanDO planDO = planMapper.selectById(pageReqVO.getPlanId());
|
||||
//
|
||||
// AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
//
|
||||
// if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
// throw exception(THIS_PLAN_PLATE_OPTIMIZE_IS_ALL);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if (planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())) {
|
||||
//
|
||||
// pageReqVO.setColor(null);
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if(planDO.getType().equals(PlanTypeEnum.ORDERPLAN.getType()) && pageReqVO.getFilterColor() != null){
|
||||
// throw exception(PLAN_GOODS_IS_FILTER_DATA_ERROR);
|
||||
//
|
||||
// }
|
||||
|
||||
return plateGoodMapper.selectGoodsPage(pageReqVO, getUserOrganId());
|
||||
|
||||
|
||||
+26
-10
@@ -28,18 +28,11 @@
|
||||
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO">
|
||||
|
||||
select distinct
|
||||
og.order_id,
|
||||
og.raw_goods_id,
|
||||
og.goods_id,
|
||||
og.goods_name,
|
||||
og.material,
|
||||
og.color,
|
||||
og.texture,
|
||||
og.width,
|
||||
og.height,
|
||||
og.thickness,
|
||||
og.price,
|
||||
og.spec,
|
||||
og.brand,
|
||||
og.remark,
|
||||
orp.id as remainId
|
||||
@@ -316,9 +309,9 @@
|
||||
|
||||
from order_body ob
|
||||
|
||||
left join order_item oi on ob.organ_id = oi.organ_id and ob.order_id = oi.order_id and ob.id = oi.body_id
|
||||
left join order_plate op on oi.organ_id = op.organ_id and oi.order_id = op.order_id and oi.plate_id = op.id
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
|
||||
left join order_item oi on ob.organ_id = oi.organ_id and ob.order_id = oi.order_id and ob.id = oi.body_id and oi.organ_id = #{organId}
|
||||
left join order_plate op on oi.organ_id = op.organ_id and oi.order_id = op.order_id and oi.plate_id = op.id and op.organ_id = #{organId}
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id and opi.organ_id = #{organId}
|
||||
|
||||
where ob.organ_id = #{organId}
|
||||
and ob.order_id in
|
||||
@@ -554,6 +547,29 @@
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectNoOrderPlanGoods"
|
||||
resultType="com.cf.imes.module.executor.controller.admin.goods.vo.GoodsRespVO">
|
||||
|
||||
|
||||
|
||||
select distinct
|
||||
goods_name,
|
||||
material,
|
||||
color,
|
||||
thickness,
|
||||
brand
|
||||
|
||||
from order_goods
|
||||
where organ_id = #{organId}
|
||||
and deleted = false
|
||||
and id in
|
||||
<foreach collection="ids" item="ids" open="(" close=")" separator=",">
|
||||
#{ids}
|
||||
</foreach>
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
+1
@@ -439,6 +439,7 @@
|
||||
og.material as material,
|
||||
og.color as color,
|
||||
og.goods_id as goodsId,
|
||||
og.brand as brand,
|
||||
op.name as plateName,
|
||||
op.height as height,
|
||||
op.width as width,
|
||||
|
||||
+84
-14
@@ -10,6 +10,23 @@
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<select id="selectPlanPageList" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
select distinct op.*
|
||||
from order_plan op
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.id = opi.plan_id
|
||||
left join orders o on opi.organ_id = o.organ_id and opi.order_id = o.id
|
||||
|
||||
${ew.customSqlSegment}
|
||||
|
||||
ORDER BY op.is_top DESC,
|
||||
CASE WHEN op.is_top = true THEN op.update_time END DESC,
|
||||
CASE WHEN op.is_top = false THEN op.sort END ;
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<select id="selectPlateListByPlanId"
|
||||
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize"
|
||||
parameterType="java.lang.Long">
|
||||
@@ -81,13 +98,14 @@
|
||||
<select id="selectPlanIds" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
|
||||
select * from order_plan where
|
||||
organ_id = #{organId}
|
||||
and deleted = false
|
||||
and create_time >= #{createTime}
|
||||
and id != #{planId}
|
||||
SELECT *
|
||||
FROM order_plan
|
||||
|
||||
ORDER BY create_time
|
||||
WHERE organ_id = #{organId}
|
||||
AND deleted = false
|
||||
and is_top = false
|
||||
and sort < #{sort}
|
||||
ORDER BY sort desc
|
||||
limit 1;
|
||||
|
||||
|
||||
@@ -96,17 +114,19 @@
|
||||
|
||||
<select id="selectPlanIdsFalse" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
select * from order_plan where
|
||||
organ_id = #{organId}
|
||||
and deleted = false
|
||||
and create_time <= #{createTime}
|
||||
and id != #{planId}
|
||||
SELECT *
|
||||
FROM order_plan
|
||||
|
||||
ORDER BY create_time desc
|
||||
WHERE organ_id = #{organId}
|
||||
AND deleted = false
|
||||
and is_top = false
|
||||
and sort > #{sort}
|
||||
ORDER BY sort
|
||||
limit 1;
|
||||
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectPlanStatus" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
@@ -123,7 +143,7 @@
|
||||
|
||||
|
||||
</select>
|
||||
<select id="selectPLanList" resultType="java.lang.Long">
|
||||
<select id="selectPlanList" resultType="java.lang.Long">
|
||||
|
||||
select id
|
||||
from order_plan
|
||||
@@ -138,7 +158,6 @@
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
<update id="updatePlanStatus">
|
||||
|
||||
UPDATE order_plan
|
||||
@@ -154,5 +173,56 @@
|
||||
</update>
|
||||
|
||||
|
||||
<select id="selectSortOnePlan" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM order_plan
|
||||
WHERE organ_id = #{organId}
|
||||
AND deleted = false
|
||||
and is_top = false
|
||||
and sort < #{sort}
|
||||
ORDER BY sort desc
|
||||
limit 1;
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectLostPlan" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM order_plan
|
||||
WHERE organ_id = #{organId}
|
||||
AND deleted = false
|
||||
and is_top = false
|
||||
and sort > #{sort}
|
||||
ORDER BY sort
|
||||
limit 1;
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectPlanSortList" resultType="com.cf.imes.module.executor.dal.dataobject.plan.PlanDO">
|
||||
|
||||
SELECT *
|
||||
FROM order_plan
|
||||
WHERE organ_id = #{organId}
|
||||
AND deleted = false
|
||||
and status in
|
||||
<foreach item="status" collection="status" open="(" separator="," close=")">
|
||||
#{status}
|
||||
</foreach>
|
||||
|
||||
ORDER BY is_top DESC,
|
||||
CASE WHEN is_top = true THEN update_time END DESC,
|
||||
CASE WHEN is_top = false THEN sort END ;
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
+11
-11
@@ -168,10 +168,10 @@
|
||||
og.brand as brand
|
||||
|
||||
from orders o
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.organ_id = #{organId}
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id and op.organ_id = #{organId}
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id and oi.organ_id = #{organId}
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id and opi.organ_id = #{organId}
|
||||
|
||||
${ew.customSqlSegment}
|
||||
|
||||
@@ -193,9 +193,9 @@
|
||||
og.brand as brand
|
||||
|
||||
from orders o
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.organ_id = #{organId}
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id and op.organ_id = #{organId}
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id and opi.organ_id = #{organId}
|
||||
|
||||
${ew.customSqlSegment}
|
||||
|
||||
@@ -221,10 +221,10 @@
|
||||
og.order_id as orderId
|
||||
|
||||
from orders o
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id
|
||||
left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.organ_id = #{organId}
|
||||
left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id and op.organ_id = #{organId}
|
||||
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id and oi.organ_id = #{organId}
|
||||
left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id and opi.organ_id = #{organId}
|
||||
|
||||
${ew.customSqlSegment}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user