优化生产修改开料状态逻辑,参数修改,添加小板数量查询修改

This commit is contained in:
liuzhaotian
2025-01-20 11:58:04 +08:00
parent bb5843e320
commit 59083285de
8 changed files with 146 additions and 339 deletions
@@ -17,7 +17,6 @@ import co.elastic.clients.json.JsonData;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.GoodsFilterConditionsEnum;
import com.cf.imes.framework.common.enums.OrderPlateCutStatusEnum;
import com.cf.imes.framework.common.enums.OrderStatusEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
@@ -71,7 +70,7 @@ import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.concurrent.atomic.AtomicLong;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.DATA_DATA_ERROR;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR;
@@ -149,6 +148,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
private static final String FIELD_SORT = " order by createTime desc ";
private static final String FIELD_IS_OPTIMIZED = " op.is_optimized";
private static final String FIELD_PLAN_CONFIG_ID = "planConfigId";
private static final String FIELD_UPDATETIME = "updateTime";
private static final String ES_ORDER_MODEL_DATA_ERROR = "生产单板材造型信息ES文档查询数据异常: ";
@@ -239,7 +239,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 更新开料相关的数据
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("cutedBoardInfo",cutedBoardInfo);
objectObjectHashMap.put("updateTime",simpleDateFormat.format(date));
objectObjectHashMap.put(FIELD_UPDATETIME,simpleDateFormat.format(date));
try {
@@ -341,7 +341,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 更新开料相关的数据
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("cutedBoardInfo",cutedBoardInfo);
objectObjectHashMap.put("updateTime",simpleDateFormat.format(date));
objectObjectHashMap.put(FIELD_UPDATETIME,simpleDateFormat.format(date));
try {
@@ -680,6 +680,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR);
}
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false);
@@ -1204,47 +1208,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
private void goodsFilter(List<String> filter, List<GoodsReqVO> goodsReqVOS) {
int goodsNum = goodsReqVOS.size();
Map<String, Function<GoodsReqVO, ?>> attributeMap = new HashMap<>();
attributeMap.put(GoodsFilterConditionsEnum.THICKNESS.getFilterField(), GoodsReqVO::getThickness);
attributeMap.put(GoodsFilterConditionsEnum.MATERIAL.getFilterField(), GoodsReqVO::getMaterial);
attributeMap.put(GoodsFilterConditionsEnum.COLOR.getFilterField(), GoodsReqVO::getColor);
attributeMap.put(GoodsFilterConditionsEnum.TEXTURE.getFilterField(), GoodsReqVO::getTexture);
attributeMap.put(GoodsFilterConditionsEnum.BRAND.getFilterField(), GoodsReqVO::getBrand);
attributeMap.put(GoodsFilterConditionsEnum.WIDTH.getFilterField(), GoodsReqVO::getWidth);
attributeMap.put(GoodsFilterConditionsEnum.HEIGHT.getFilterField(), GoodsReqVO::getWidth);
for (String s : filter) {
Function<GoodsReqVO, ?> attributeFunc = attributeMap.get(s);
if (attributeFunc == null) {
throw new ServiceException(PLAN_MIXED_DATA_ERROR);
}
// 获取当前属性的第一个值
Object attributeValue = goodsReqVOS.stream()
.map(attributeFunc)
.findFirst()
.orElse(null);
// 根据属性值过滤列表
long count = goodsReqVOS.stream()
.filter(f -> attributeValue.equals(attributeFunc.apply(f)))
.count();
if (goodsNum != count) {
throw exception(PLAN_MIXED_ORDER_ERROR,GoodsFilterConditionsEnum.getValueByKey(s));
}
}
}
private String conversion(String filed) {
// 去除字段中的 【 】
@@ -1404,114 +1367,141 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
private Long updatePlanOptimizeData(List<RemainBoardInfo> remainBoardInfos,
OptimizeBoardModelDO optimizeBoardModelDO,
List<Long> orderIds,
List<String> goodsIds,
List<Integer> goodsNo,
Integer cutedType){
Date date = new Date();
long goodsNum = 0L;
List<String> planNo = new ArrayList<>();
remainBoardInfos.forEach(f->{
if(goodsIds.contains(f.getGoodsId())){
f.getPlaceBoardList().forEach(p->{
if(goodsNo.contains(p.getBoardId())) {
p.setCutedType(cutedType);
planNo.addAll(p.getBlocks().stream().map(RemainBoardInfo.Blocks::getBlockId).toList());
}
});
}
});
// 更新开料相关的数据
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
Integer cutedType) {
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
Date currentDate = new Date();
AtomicLong goodsCount = new AtomicLong(0L);
List<String> planNos = new ArrayList<>();
// 开料的大板数量
long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L);
// 更新板材状态并统计数量
updateRemainBoardInfo(remainBoardInfos, goodsIds, goodsNo, cutedType, goodsCount, planNos);
// 开料的小板数量
long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L);
// 更新优化数据
long goodsNum = updateOptimizeData(optimizeBoardModelDO, goodsCount.get(), planNos.size(), cutedType);
if(cutedBoardNumber != 0L && cutedBlockNumber != 0L) {
cutedBoardNumber -= goodsNo.size();
cutedBlockNumber -= planNo.size();
goodsNum = cutedBoardNumber;
objectObjectHashMap.put("cutedBoardNumber", cutedBoardNumber);
objectObjectHashMap.put("cutedBlockNumber", cutedBlockNumber);
}
}
if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){
// 开料的大板数量
long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L);
// 开料的小板数量
long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L);
cutedBoardNumber += goodsNo.size();
cutedBlockNumber += planNo.size();
goodsNum = cutedBoardNumber;
objectObjectHashMap.put("cutedBoardNumber", cutedBoardNumber);
objectObjectHashMap.put("cutedBlockNumber", cutedBlockNumber);
}
objectObjectHashMap.put("remainBoardInfo", toJsonString(remainBoardInfos));
objectObjectHashMap.put("updateTime",simpleDateFormat.format(date));
try {
esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap);
} catch (IOException | ElasticsearchException e) {
log.error(e.getMessage());
throw new ServiceException(ES_DATA_ERROR);
}
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId());
AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR);
plateDOS.forEach(f->{
f.setIsCutted(cutedType);
});
plateMapper.updateBatch(plateDOS);
// 同步数据到 ES
syncWithElasticsearch(remainBoardInfos, optimizeBoardModelDO, currentDate);
// 更新数据库中的板材信息
updatePlateData(orderIds, planNos, cutedType);
return goodsNum;
}
private void updateRemainBoardInfo(List<RemainBoardInfo> remainBoardInfos,
List<String> goodsIds,
List<Integer> goodsNo,
Integer cutedType,
AtomicLong goodsCount,
List<String> planNos) {
remainBoardInfos.stream()
.filter(remainBoard -> goodsIds.contains(remainBoard.getGoodsId()))
.flatMap(remainBoard -> remainBoard.getPlaceBoardList().stream())
.filter(board -> goodsNo.contains(board.getBoardId()) && !board.getCutedType().equals(cutedType) &&
(cutedType.equals(OrderPlateCutStatusEnum.OPENING.getStatus()) ?
!board.getCutedType().equals(OrderPlateCutStatusEnum.OPENED.getStatus()) : true))
.forEach(board -> {
goodsCount.incrementAndGet();
board.setCutedType(cutedType);
planNos.addAll(board.getBlocks().stream()
.map(RemainBoardInfo.Blocks::getBlockId)
.toList());
});
}
private long updateOptimizeData(OptimizeBoardModelDO optimizeBoardModelDO,
long goodsCount,
int blockCount,
Integer cutedType) {
long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L);
long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L);
if (OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)) {
cutedBoardNumber -= goodsCount;
cutedBlockNumber -= blockCount;
} else if (OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)) {
cutedBoardNumber += goodsCount;
cutedBlockNumber += blockCount;
}
optimizeBoardModelDO.setCutedBoardNumber(cutedBoardNumber);
optimizeBoardModelDO.setCutedBlockNumber(cutedBlockNumber);
return cutedBoardNumber;
}
private void syncWithElasticsearch(List<RemainBoardInfo> remainBoardInfos,
OptimizeBoardModelDO optimizeBoardModelDO,
Date date) {
Map<String, Object> updateData = new HashMap<>();
updateData.put("cutedBoardNumber", optimizeBoardModelDO.getCutedBoardNumber());
updateData.put("cutedBlockNumber", optimizeBoardModelDO.getCutedBlockNumber());
updateData.put("remainBoardInfo", toJsonString(remainBoardInfos));
updateData.put(FIELD_UPDATETIME, simpleDateFormat.format(date));
try {
esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, updateData);
} catch (IOException | ElasticsearchException e) {
log.error("Failed to sync with Elasticsearch: {}", e.getMessage());
throw new ServiceException(ES_DATA_ERROR);
}
}
private void updatePlateData(List<Long> orderIds, List<String> planNo, Integer cutedType) {
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId());
AssertUtils.notEmpty(plateDOS, THIS_PLAN_PLATE_DATA_ERROR);
if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){
plateDOS.forEach(plate -> {
if( !plate.getIsCutted().equals(cutedType) && !plate.getIsCutted().equals(OrderPlateCutStatusEnum.OPENED.getStatus())){
plate.setIsCutted(cutedType);
}
});
}else {
plateDOS.forEach(plate -> {
if(!plate.getIsCutted().equals(cutedType)){
plate.setIsCutted(cutedType);
}
});
}
plateMapper.updateBatch(plateDOS);
}
@Transactional(rollbackFor = Exception.class)
public void updateOrderAndPlanByCutStatus(PlanDO planDO,Long goodsNum,Integer cutedType,List<Long> orderIds,Integer boardCount){
// 未开料
if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){
planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
@@ -1543,7 +1533,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){
// 开料中
if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType) && !planDO.getStatus().equals(OrderPlateCutStatusEnum.OPENED.getStatus())){
planDO.setStatus(PlanStatusEnum.OPENING.getStatus());
@@ -1559,6 +1550,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
// 已开料
if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){
List<PlateDO> plateDOList = plateMapper.selectNoCutPlateByPlateId(orderIds, getUserOrganId());
@@ -1591,9 +1583,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
}
@@ -9,7 +9,6 @@ import co.elastic.clients.elasticsearch.core.search.Hit;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.GoodsFilterConditionsEnum;
import com.cf.imes.framework.common.enums.OrderPlateTypeEnum;
import com.cf.imes.framework.common.enums.PlanStatusEnum;
import com.cf.imes.framework.common.enums.PlanTypeEnum;
@@ -60,8 +59,6 @@ import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR;
@@ -287,9 +284,6 @@ public class PlateServiceImpl implements PlateService {
@Override
public PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO pageReqVO) {
// 使用这种方法分页查询速度太慢,所以要自己实现分页
// PageDTO<PlateResList> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
List<Integer> statusList = new ArrayList<>();
statusList.add(OrderStatusEnum.NEW_ORDER.getStatus());
statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus());
@@ -303,6 +297,7 @@ public class PlateServiceImpl implements PlateService {
.eq("o.deleted",false)
.in("o.status",statusList)
.isNull("opi.plan_id")
.isNotNull("op.id")
.inIfPresent("op.goods_id",pageReqVO.getGoodsIdList())
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null)
@@ -323,7 +318,6 @@ public class PlateServiceImpl implements PlateService {
.likeIfPresent("op.remark",pageReqVO.getRemark())
.orderByDesc("o.id");
List<Long> plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX);
List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX,pageNo,pageReqVO.getPageSize());
@@ -332,17 +326,15 @@ public class PlateServiceImpl implements PlateService {
return new PageResult<>();
}
// List<Long> plateIds = plateResLists.stream().map(PlateResList::getPlateId).toList();
//
// List<OrderModelDO> orderModelDOS = esUtils.getEsDocument(FIELD_PLATE_ID, plateIds, plateIds.size(), ORDER_PLATE_MODEL, OrderModelDO.class);
//
//
// PlateModelDetailRespVO.builder()
// .plateResLists(new PageResult<>(plateResLists, (long) plateCount.size()))
// .plateModels(orderModelDOS)
// .build();
return new PageResult<>(plateResLists, (long) plateCount.size());
queryWrapperX
.groupBy("o.id");
List<Long> plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX);
long sum = plateCount.stream().mapToLong(Long::longValue).sum();
return new PageResult<>(plateResLists, sum);
}
@@ -557,62 +549,4 @@ public class PlateServiceImpl implements PlateService {
}
private static void goodsFilter(List<String> filters, List<GoodsDO> goodsDOS,GoodsPlateFilterPageReqVO pageReqVO) {
int goodsNum = goodsDOS.size();
// 查询条件
Map<String, Function<GoodsDO, ?>> attributeGetters = new HashMap<>();
attributeGetters.put(GoodsFilterConditionsEnum.THICKNESS.getFilterField(), GoodsDO::getThickness);
attributeGetters.put(GoodsFilterConditionsEnum.MATERIAL.getFilterField(), GoodsDO::getMaterial);
attributeGetters.put(GoodsFilterConditionsEnum.COLOR.getFilterField(), GoodsDO::getColor);
attributeGetters.put(GoodsFilterConditionsEnum.TEXTURE.getFilterField(), GoodsDO::getTexture);
attributeGetters.put(GoodsFilterConditionsEnum.BRAND.getFilterField(), GoodsDO::getBrand);
attributeGetters.put(GoodsFilterConditionsEnum.WIDTH.getFilterField(), GoodsDO::getWidth);
attributeGetters.put(GoodsFilterConditionsEnum.HEIGHT.getFilterField(), GoodsDO::getHeight);
// 赋值
Map<String, Consumer<Object>> attributeSetters = new HashMap<>();
attributeSetters.put(GoodsFilterConditionsEnum.THICKNESS.getFilterField(), value -> pageReqVO.setThickness((BigDecimal) value));
attributeSetters.put(GoodsFilterConditionsEnum.MATERIAL.getFilterField(), value -> pageReqVO.setMaterial((String) value));
attributeSetters.put(GoodsFilterConditionsEnum.COLOR.getFilterField(), value -> pageReqVO.setColor((String) value));
// attributeSetters.put(GoodsFilterConditionsEnum.TEXTURE.getFilterField(), value -> pageReqVO.setTexture((Boolean) value));
// attributeSetters.put(GoodsFilterConditionsEnum.BRAND.getFilterField(), value -> pageReqVO.setBrand((String) value));
// attributeSetters.put(GoodsFilterConditionsEnum.WIDTH.getFilterField(), value -> pageReqVO.setWidth((BigDecimal) value));
// attributeSetters.put(GoodsFilterConditionsEnum.HEIGHT.getFilterField(), value -> pageReqVO.setHeight((BigDecimal) value));
for (String filter : filters) {
Function<GoodsDO, ?> getter = attributeGetters.get(filter);
Consumer<Object> setter = attributeSetters.get(filter);
if (getter == null || setter == null) {
throw exception(PLAN_MIXED_DATA_ERROR);
}
// 获取当前属性的第一个值
Object attributeValue = goodsDOS.stream()
.map(getter)
.findFirst()
.orElse(null);
// 根据属性值过滤列表
long count = goodsDOS.stream()
.filter(good -> attributeValue.equals(getter.apply(good)))
.count();
if (goodsNum != count) {
throw exception(PLAN_MIXED_ORDER_ERROR,GoodsFilterConditionsEnum.getValueByKey(filter));
}
// 设置属性值
setter.accept(attributeValue);
}
}
}
@@ -412,12 +412,12 @@
select
op.id
count(op.id)
from orders o
left join order_plate op on o.organ_id = op.organ_id and o.id = op.order_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 op.organ_id = og.organ_id and op.order_id = og.order_id and op.goods_id = og.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
${ew.customSqlSegment}
@@ -34,7 +34,7 @@ public class ErrorCodeConstants {
public static final ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1_002_002_002, "已经存在编码为【{}】的角色");
public static final ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_002_002_003, "不能操作类型为系统内置的角色");
public static final ErrorCode ROLE_IS_DISABLE = new ErrorCode(1_002_002_004, "名字为【{}】的角色已被禁用");
public static final ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "编码【{}】不能使用");
public static final ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "编码【{}】不能使用");
public static final ErrorCode ROLE_ME_ERROR = new ErrorCode(1_002_002_006, "不可为自身分配角色");
public static final ErrorCode ROLE_NOT_SUPERADMIN_NO_ORGAN_ID_OPER_ERROR = new ErrorCode(1_002_002_007, "非超管分配权限");
public static final ErrorCode BUILDIN_ROLE_MODIFY_PERMISSION_ERROR = new ErrorCode(1_002_002_008, "修改内置角色下菜单权限的权限不足");
@@ -212,14 +212,10 @@ public class ErrorCodeConstants {
public static final ErrorCode MACHINE_NOT_EXISTS = new ErrorCode(1_002_029_000, "机台不存在");
public static final ErrorCode MACHINE_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_029_001, "机台模板不存在");
public static final ErrorCode DEFAULT_TEMPLATE_COUNT = new ErrorCode(1_002_029_002, "默认模板数量异常");
public static final ErrorCode DEFAULT_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_029_003, "该类型机台默认模板不存在");
public static final ErrorCode DEFAULT_TEMPLATE_NOT_DELETED = new ErrorCode(1_002_029_004, "不能删除默认模板");
public static final ErrorCode NOT_TEMPLATE_AUTH = new ErrorCode(1_002_029_005, "该组织无此机台模板权限");
public static final ErrorCode NOT_MACHINE_AUTH = new ErrorCode(1_002_029_005, "该组织无此机台权限");
public static final ErrorCode THE_CURRENT_MACHINE_IS_ALREADY_IN_USE = new ErrorCode(1_002_029_006, "当前机台已使用,禁止删除");
public static final ErrorCode MACHINE_ERROR = new ErrorCode(1_002_029_007, "当前机台错误,请重新选择机台");
public static final ErrorCode THE_CURRENT_BRAND_OF_THE_MACHINE_EXISTS = new ErrorCode(1_002_029_008, "当前机台配置的模板中,该品牌已存在,请重新输入品牌名称");
public static final ErrorCode THE_MODEL_OF_THE_MACHINE_DOES_NOT_EXIST = new ErrorCode(1_002_029_009, "该型号的机台不存在,请进行配置");
public static final ErrorCode THE_MODEL_OF_THE_MACHINE_DOES_NOT_EXIST = new ErrorCode(1_002_029_009, "该型号的机台模板不存在,请进行配置");
public static final ErrorCode THE_CURRENT_BRAND = new ErrorCode(1_002_029_010, "品牌ID错误,或品牌不存在");
public static final ErrorCode MACHINE_NUM_ERROR = new ErrorCode(1_002_029_011, "当前组织该类型的机台创建已达到最大值,无法继续创建");
public static final ErrorCode MACHINE_NAME_ERROR = new ErrorCode(1_002_029_012, "当前机台名称已存在,请重新输入机台名称");
@@ -236,7 +232,6 @@ public class ErrorCodeConstants {
public static final ErrorCode DEFAULT_LABEL_NOT_EXISTS = new ErrorCode(1_002_300_002, "该类型标签默认模板不存在");
public static final ErrorCode MACHINE_USE_LABEL = new ErrorCode(1_002_300_003, "当前标签已有机台使用,无法删除");
public static final ErrorCode DEFAULT_NOT_DELETED = new ErrorCode(1_002_300_004, "默认标签模板无法删除");
public static final ErrorCode LABEL_ERROR = new ErrorCode(1_002_300_005, "当前标签错误,请重新配置标签");
public static final ErrorCode LABEL_IS_USE_ERROR = new ErrorCode(1_002_300_006, "当前标签打包设置中已有用户使用,无法删除");
@@ -278,7 +273,6 @@ public class ErrorCodeConstants {
// ========== 配件信息 1-002-035-000 ==========
public static final ErrorCode THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED = new ErrorCode(1_002_035_001, "配件名称不能重复");
public static final ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_035_002, "生产配件导入数据不可以为空");
@@ -309,35 +303,21 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_006, "生产单对应的板材造型数据为空,请重新导入生产单");
public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_002_041_007, "当前排单对应的板材数据有异常,请查看板材信息或联系客服");
public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_002_041_008, "当前排单对应的生产单数据为空,请删掉排单并重新创建排单");
public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请重新进行排单或重新导入生产单");
public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请重新导入生产单并排单");
public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服");
public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服");
public static final ErrorCode ORDER_BODY_DATA_ERROR = new ErrorCode(1_002_041_012, "当前柜体对应的板材数据为空,无法删除");
public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_ERROR = new ErrorCode(1_002_041_013, "当前排单还未保存优化结果,无法进行开料");
public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR = new ErrorCode(1_002_041_014, "当前排单还未保存优化结果,无法对开料结果进行修改");
public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_002_041_015, "生产单信息错误,请重新进行拆包");
public static final ErrorCode ORDER_ROOM_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择房间,请选择");
public static final ErrorCode ORDER_BODY_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择柜体,请选择");
public static final ErrorCode ORDER_ERROR = new ErrorCode(1_002_041_015, "当前板材没有选择生产单,请选择");
public static final ErrorCode MACHINE_NO_DATA_ERROR = new ErrorCode(1_002_041_016, "当前所选机台有误,请检查机台信息或重新选择机台");
public static final ErrorCode PLATE_MULTIPLE_ERROR = new ErrorCode(1_002_041_017, "板材倍数有误,倍数必须大于 0");
public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_002_041_015, "生产单信息为空,请检查生产单信息");
public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_002_041_018, "当前生产单信息有误,请重新选择包裹");
public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_019, "当前包裹信息有误,请重新选择包裹");
public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服");
public static final ErrorCode CREATE_PLAN_DATA_ERROR = new ErrorCode(1_002_041_020, "排单优化数据异常,请重新进行优化或者删除排单然后重新创建排单");
public static final ErrorCode PLAN_MIXED_ORDER_ERROR = new ErrorCode(1_002_041_021, "当前选择的混排板材条件:' {} ' 不相同,无法混排,请重新选择板材进行排单!");
public static final ErrorCode BRANCHING_DEFAULT_SETTING_ERROR = new ErrorCode(1_002_041_023, "当前组织智能分线无默认配置,请进行配置");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置");
public static final ErrorCode CONFIG_DATA_ERROR = new ErrorCode(1_002_041_025, "当前配置为空,保存失败,请添加配置后再保存");
public static final ErrorCode PLAN_MIXED_DATA_ERROR = new ErrorCode(1_002_041_026, "当前混排条件错误,无法混排,请重新选择条件进行混单!");
public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_002_041_027, "当前排单未保存大板和小板信息,请重新进行排单");
public static final ErrorCode PLAN_PLATE_IS_CUTTED = new ErrorCode(1_002_041_028, "当前删除的小板中已有小板开料,无法删除!");
public static final ErrorCode PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_002_041_029, "当前方案组的优化数据未保存,请保存或重新执行方案组");
public static final ErrorCode PLAN_NO_ACTUAL_PLATE = new ErrorCode(1_002_041_030, "当前排单未选择实际开料的大板信息,无法保存优化结果");
public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_002_041_031, "当前组织没有默认的加工方案组,请在系统配置中进行配置");
public static final ErrorCode THIS_PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_002_041_032, "当前选择的加工方案组配置有误,请选择其他方案组或重新配置该方案组");
public static final ErrorCode CREAT_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_033, "当前板材已有小板创建板材,请重新查询生产单信息再创建");
public static final ErrorCode UPDATE_NO_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_034, "当前排单无开料板,无法取消开料,请重新尝试");
public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_035, "当前排单没有选择板材数据,请进行选择");
public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_036, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单");
public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_037, "当前排单对应的优化数据异常,请重新进行优化");
@@ -346,6 +326,7 @@ public class ErrorCodeConstants {
public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_002_041_040, "排单:{} 对应的方案组为空,请进行配置");
public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_002_041_041, "当前所选排单对应的方案组配置均为空,请重新进行方案组配置");
public static final ErrorCode THIS_PLAN_IS_LOCK = new ErrorCode(1_002_041_042, "当前排单已被锁定,无法进行优化,请解锁后再进行优化");
public static final ErrorCode THIS_PLAN_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_044, "当前排单已全部开料,无法进行再次优化");
@@ -364,10 +345,8 @@ public class ErrorCodeConstants {
//=========== 用户的系统配置 1-002-039-000 ============
public static final ErrorCode CURRENTLY_NO_CONFIGURATION_AVAILABLE = new ErrorCode(1_002_039_001, "当前没有{}配置信息,请前往设置配置");
public static final ErrorCode BRANCHING_SETTING_NAME_REPEAT = new ErrorCode(1_002_039_002, "分线配置名称重复,请重新设置");
public static final ErrorCode BRANCHING_SETTING_RULE_SAVE_CHECK_ERROR = new ErrorCode(1_002_039_003, "智能分线配置保存解析失败,数据有误,请检查配置规则或联系客服");
public static final ErrorCode BRANCHING_SETTING_SAVE_ERROR = new ErrorCode(1_002_039_004, "机台:{} 的配置为空,请添加配置");
public static final ErrorCode BRANCHING_SETTING_COUNT_ERROR = new ErrorCode(1_002_039_005, "智能分线配置机台数量必须大于2才能保存");
//=========== 系统配置 1-002-040-000 ============
public static final ErrorCode SYSTEM_CONFIG_NOT_EXISTS = new ErrorCode(1_002_040_001, "系统配置不存在");
@@ -2,11 +2,8 @@ package com.cf.imes.module.system.controller.admin.setting;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigRespVO;
import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.service.setting.SettingService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -62,23 +59,4 @@ public class SettingController {
}
@GetMapping("/selectDefault")
@Operation(summary = "获取默认的智能分线配置")
public CommonResult<ConfigRespVO> selectDefaultBranching() {
SystemConfigDO systemConfigDO = settingService.selectDefaultBranching();
return success(BeanUtils.toBean(systemConfigDO, ConfigRespVO.class));
}
@GetMapping("/selectScheme")
@Operation(summary = "根据加工方案ID获取加工方案的所有配置")
public CommonResult<ConfigRespVO> getProcessScheme(@RequestParam Long id) {
SystemConfigDO systemConfigDO = settingService.selectDefaultBranching();
return success(BeanUtils.toBean(systemConfigDO, ConfigRespVO.class));
}
}
@@ -3,7 +3,6 @@ package com.cf.imes.module.system.service.setting;
import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO;
import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
public interface SettingService {
@@ -14,6 +13,4 @@ public interface SettingService {
Long updateSetting(PackageConfigReqVO reqVO);
PackageConfigDO selectSetting(Integer type);
SystemConfigDO selectDefaultBranching();
}
@@ -2,12 +2,10 @@ package com.cf.imes.module.system.service.setting;
import com.cf.imes.framework.common.enums.UserSettingTypeEnum;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.module.system.controller.admin.setting.vo.PackageConfigReqVO;
import com.cf.imes.module.system.dal.dataobject.setting.PackageConfigDO;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.mysql.setting.PackageConfigMapper;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import org.springframework.stereotype.Service;
@@ -18,7 +16,7 @@ import javax.annotation.Resource;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.CURRENTLY_NO_CONFIGURATION_AVAILABLE;
@Service
@@ -90,16 +88,4 @@ public class SettingServiceImpl implements SettingService{
return packageConfigDO;
}
@Override
public SystemConfigDO selectDefaultBranching() {
SystemConfigDO systemConfigDO = systemConfigMapper.selectDefaultBranching();
AssertUtils.notEmpty(systemConfigDO,BRANCHING_DEFAULT_SETTING_ERROR);
return systemConfigDO;
}
}
@@ -1,10 +1,8 @@
package com.cf.imes.module.system.service.systemconfig.factory.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigDeleteReqVO;
import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigPageReqVO;
@@ -13,16 +11,11 @@ import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigUpdateSt
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;
import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper;
import com.cf.imes.module.system.service.systemconfig.factory.service.AbstractSystemConfigServiceHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.BRANCHING_SETTING_RULE_SAVE_CHECK_ERROR;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.BRANCHING_SETTING_SAVE_ERROR;
/**
* @author 智能分线生成服务
@@ -48,23 +41,8 @@ public class IntellectBranchingService extends AbstractSystemConfigServiceHandle
@Override
public void checkValid(String setting) {
//
// JSONArray jsonArray = JSON.parseArray(setting);
//
// for (int i = 0; i < jsonArray.size(); i++) {
//
// JSONObject jsonObject = jsonArray.getJSONObject(i);
//
// checkMachineId(jsonObject.getString("machineId"));
// String machineName = jsonObject.getString("machineName");
// checkMachineName(machineName);
// checkMachineConfig(jsonObject.get("machineConfig"),machineName);
// }
//
// if(jsonArray.size() < 2){
// throw new ServiceException(BRANCHING_SETTING_COUNT_ERROR);
// }
// todo checkValid
}
@@ -109,39 +87,5 @@ public class IntellectBranchingService extends AbstractSystemConfigServiceHandle
}
/**
* 校验 机台ID
*
*/
private void checkMachineId(String machineId) {
if (StringUtils.isBlank(machineId)) {
throw new ServiceException(BRANCHING_SETTING_RULE_SAVE_CHECK_ERROR);
}
}
/**
* 校验 机台名称
*
*/
private void checkMachineName(String machineName) {
if (StringUtils.isBlank(machineName)) {
throw new ServiceException(BRANCHING_SETTING_RULE_SAVE_CHECK_ERROR);
}
}
/**
* 校验 机台分流条件
*
*/
private void checkMachineConfig(Object machineConfig,String machineName) {
if (ObjectUtil.isEmpty(machineConfig)) {
throw exception(BRANCHING_SETTING_SAVE_ERROR,machineName);
}
}
}