mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 12:52:07 +08:00
Merge branch 'main' of http://192.168.1.205:9980/cf_devdept2/cf_imes_server
This commit is contained in:
@@ -59,6 +59,11 @@ import static cn.hutool.core.date.DatePattern.NORM_DATETIME_MS_FORMATTER;
|
||||
@Component
|
||||
public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
|
||||
/**
|
||||
* 记录的requestBody最大值
|
||||
*/
|
||||
public static final int REQUEST_BODY_MAX_SIZE = 1024 * 1024 * 10;
|
||||
|
||||
@Resource
|
||||
private CodecConfigurer codecConfigurer;
|
||||
|
||||
@@ -220,9 +225,7 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
Flux<? extends DataBuffer> fluxBody = Flux.from(body);
|
||||
return super.writeWith(fluxBody.buffer().map(dataBuffers -> {
|
||||
// 设置 response body 到网关日志
|
||||
byte[] content = readContent(dataBuffers);
|
||||
String responseResult = new String(content, StandardCharsets.UTF_8);
|
||||
gatewayLog.setResponseBody(responseResult);
|
||||
byte[] content = readContent(dataBuffers, gatewayLog);
|
||||
|
||||
// 响应
|
||||
return bufferFactory.wrap(content);
|
||||
@@ -272,14 +275,21 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
|
||||
// ========== 参考 ModifyResponseBodyGatewayFilterFactory 中的方法 ==========
|
||||
|
||||
private byte[] readContent(List<? extends DataBuffer> dataBuffers) {
|
||||
private byte[] readContent(List<? extends DataBuffer> dataBuffers, AccessLog gatewayLog) {
|
||||
// 合并多个流集合,解决返回体分段传输
|
||||
DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
|
||||
DataBuffer join = dataBufferFactory.join(dataBuffers);
|
||||
byte[] content = new byte[join.readableByteCount()];
|
||||
int readableByteCount = join.readableByteCount();
|
||||
byte[] content = new byte[readableByteCount];
|
||||
join.read(content);
|
||||
// 释放掉内存
|
||||
DataBufferUtils.release(join);
|
||||
|
||||
// 超过10Mb的requestBody不做记录
|
||||
if (REQUEST_BODY_MAX_SIZE >= readableByteCount) {
|
||||
String responseResult = new String(content, StandardCharsets.UTF_8);
|
||||
gatewayLog.setResponseBody(responseResult);
|
||||
}
|
||||
return content;
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -13,8 +13,6 @@ public class ErrorCodeConstants {
|
||||
|
||||
public static final ErrorCode PLAN_NOT_ALLOW_DELETE = new ErrorCode(1_001_107_001, "排单号:{},已开料不予许删除");
|
||||
|
||||
public static final ErrorCode LIST_CHANGES_ARE_PROHIBITED = new ErrorCode(1_001_107_003, "当前排单有板材已开料,禁止更改");
|
||||
|
||||
public static final ErrorCode PLATE_ERROR = new ErrorCode(1_001_107_005, "当前新增的板材非同一类型的板材,禁止更改");
|
||||
public static final ErrorCode PLAN_PLATE_IS_ALL_CUT = new ErrorCode(1_001_107_006, "排单号:{} 的板材已全部开料,禁止删除!");
|
||||
public static final ErrorCode PLAN_NOT_DATA_EXISTS = new ErrorCode(1_001_107_007, "排单号:{} 不存在,无法进行操作,请检查排单数据");
|
||||
|
||||
+1
-1
@@ -141,7 +141,7 @@ public class OptimizePlanController {
|
||||
@Parameter(name = "planId", description = "排单ID", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('placeorder:optimize')")
|
||||
public CommonResult<PlanProcessSchemeList> getProcessSchemeConfig(@Schema(description = "方案组ID") @NotNull(message = "方案组的ID不能为空") Long processId,
|
||||
@Schema(description = "排单id") @RequestParam(required = false) Long planId) {
|
||||
@Schema(description = "排单id") @RequestParam Long planId) {
|
||||
|
||||
return success(optimizePlanService.getProcessSchemeConfig(processId,planId));
|
||||
|
||||
|
||||
+3
@@ -22,5 +22,8 @@ public class SavePlanPlateResultReqVO {
|
||||
@NotNull(message = "方案组的配置项ID不能为空")
|
||||
private Long planConfigId;
|
||||
|
||||
@Schema(description = "方案组的ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
// @NotNull(message = "方案组的ID不能为空")
|
||||
private Long processId;
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import java.util.List;
|
||||
@Data
|
||||
public class PlanSaveReqVO {
|
||||
|
||||
@Schema(description = "ID")
|
||||
@Schema(description = "ID-新增和移除小板时不传")
|
||||
// @NotNull(message = "排单数据异常,请重新操作",groups = UpdateGroup.class)
|
||||
@Max(value = 0x7fffffffffffffffL,message = "排单号异常,无法更新排单数据")
|
||||
private Long id;
|
||||
|
||||
+5
-4
@@ -58,12 +58,13 @@ public class PlateController {
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产单板件")
|
||||
@Parameters({
|
||||
@Parameter(name = "id", description = "板材ID", required = true),
|
||||
@Parameter(name = "plateIds", description = "板材ID", required = true),
|
||||
@Parameter(name = "planId", description = "排单ID", required = true)
|
||||
})
|
||||
@PreAuthorize("@ss.hasAnyPermissions('executor:plate:delete','placeorder:optimize')")
|
||||
public CommonResult<Boolean> deletePlate(@RequestParam("id") @NotNull Long id, @RequestParam("planId") @NotNull Long planId) {
|
||||
plateService.deletePlate(id,planId);
|
||||
public CommonResult<Boolean> deletePlate(@RequestParam("plateIds") @NotNull List<Long> plateIds,
|
||||
@RequestParam("planId") @NotNull Long planId) {
|
||||
plateService.deletePlate(plateIds,planId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@@ -142,7 +143,7 @@ public class PlateController {
|
||||
@PostMapping("/insertPlate")
|
||||
@Operation(summary = "优化生产创建板材")
|
||||
@PreAuthorize("@ss.hasAnyPermissions('executor:plate:create','placeorder:optimize')")
|
||||
public CommonResult<List<String>> createNewPlate(@Valid @RequestBody OptimizationSavePlateReqVO reqVO) {
|
||||
public CommonResult<List<InsertPlateRespVO>> createNewPlate(@Valid @RequestBody List<OptimizationSavePlateReqVO> reqVO) {
|
||||
return success(plateService.createNewPlate(reqVO));
|
||||
}
|
||||
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||
|
||||
|
||||
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 InsertPlateRespVO {
|
||||
|
||||
|
||||
@Schema(description = "唯一标识")
|
||||
private String blockKey;
|
||||
|
||||
|
||||
@Schema(description = "新增的小板编号")
|
||||
private List<String> plateNo;
|
||||
|
||||
|
||||
}
|
||||
+3
@@ -36,6 +36,9 @@ public class OptimizationSavePlateReqVO {
|
||||
private String bodyName;
|
||||
|
||||
|
||||
@Schema(description = "唯一标识")
|
||||
private String blockKey;
|
||||
|
||||
@Schema(description = "房间号")
|
||||
@NotNull(message = "当前板材没有选择房间,请选择")
|
||||
@Max(value = 0x7fffffffffffffffL,message = "房间数据错误,请重新进行新增")
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrderBodyNumVO {
|
||||
|
||||
@Schema(description = "柜体ID")
|
||||
private Long bodyId;
|
||||
|
||||
@Schema(description = "板材数量")
|
||||
private Integer plateNum;
|
||||
|
||||
}
|
||||
+13
-13
@@ -150,19 +150,6 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
|
||||
|
||||
List<GoodsReqVO> selectGoodsAndRemainPlate(@Param("orderIds") List<Long> orderIds,@Param("goodsIdList") List<String> goodsIdList,@Param("organId") Long organId);
|
||||
|
||||
|
||||
|
||||
default List<GoodsDO> selectPlanGoodsListByPlanIdList(List<Long> orderIds,List<Long> planIds, Long organId) {
|
||||
return selectList(new LambdaQueryWrapperX<GoodsDO>()
|
||||
.eq(GoodsDO::getOrganId, organId)
|
||||
.eq(GoodsDO::getDeleted, false)
|
||||
.inIfPresent(GoodsDO::getOrderId,orderIds)
|
||||
.in(GoodsDO::getPlanId,planIds)
|
||||
.select(GoodsDO::getGoodsId,GoodsDO::getId,GoodsDO::getOrderId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<PlateResList> selectPlateListByPlanId(@Param("planIds") List<Long> planIds, @Param("organId") Long organId);
|
||||
|
||||
|
||||
@@ -202,4 +189,17 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
|
||||
|
||||
List<OrderGoodsPlateIds> selectPlateGoodIds(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
|
||||
|
||||
|
||||
default List<GoodsDO> selectOrderGoodsList(List<Long> orderIds, List<String> goodsIds, Long organId) {
|
||||
return selectList(new LambdaQueryWrapperX<GoodsDO>()
|
||||
.eq(GoodsDO::getOrganId, organId)
|
||||
.eq(GoodsDO::getDeleted, false)
|
||||
.inIfPresent(GoodsDO::getOrderId,orderIds)
|
||||
.inIfPresent(GoodsDO::getGoodsId,goodsIds));
|
||||
|
||||
}
|
||||
|
||||
|
||||
List<Long> selectInsertGoodsIds(@Param("orderIds") List<Long> orderIds,@Param("goodsIds") List<Long> goodsIds,@Param("organId") Long organId);
|
||||
|
||||
}
|
||||
+8
-8
@@ -79,11 +79,11 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
||||
}
|
||||
|
||||
|
||||
default int deleteByPlateId(Long plateId,Long orderId, Long organId) {
|
||||
default int deleteByPlateId(List<Long> plateId,List<Long> orderId, Long organId) {
|
||||
return delete(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
.eq(OrderItemDO::getOrganId, organId)
|
||||
.eq(OrderItemDO::getOrderId, orderId)
|
||||
.eq(OrderItemDO::getPlateId, plateId));
|
||||
.in(OrderItemDO::getOrderId, orderId)
|
||||
.in(OrderItemDO::getPlateId, plateId));
|
||||
|
||||
}
|
||||
|
||||
@@ -99,12 +99,12 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
||||
}
|
||||
|
||||
|
||||
default OrderItemDO selectPlateList(Long plateId,Long orderId, Long organId) {
|
||||
return selectOne(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
default List<OrderItemDO> selectPlateList(List<Long> plateId,List<Long> orderId, Long organId) {
|
||||
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
.eq(OrderItemDO::getOrganId,organId)
|
||||
.eqIfPresent(OrderItemDO::getOrderId,orderId)
|
||||
.eqIfPresent(OrderItemDO::getPlateId, plateId)
|
||||
.select(OrderItemDO::getBodyId));
|
||||
.inIfPresent(OrderItemDO::getOrderId,orderId)
|
||||
.inIfPresent(OrderItemDO::getPlateId, plateId)
|
||||
.select(OrderItemDO::getBodyId,OrderItemDO::getPlateId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -74,4 +74,5 @@ public interface PlanItemMapper extends BaseMapperX<PlanItemDO> {
|
||||
.select(PlanItemDO::getPlanId));
|
||||
}
|
||||
|
||||
List<Long> selectOrderPlateList(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId);
|
||||
}
|
||||
+3
-3
@@ -74,11 +74,11 @@ public interface PlateGoodMapper extends BaseMapperX<PlateGoodDO> {
|
||||
|
||||
|
||||
|
||||
default PlateGoodDO selectGoodsByGoodsId(String goodsId, Long organId) {
|
||||
return selectOne(new LambdaQueryWrapper<PlateGoodDO>()
|
||||
default List<PlateGoodDO> selectGoodsByGoodsId(List<String> goodsId, Long organId) {
|
||||
return selectList(new LambdaQueryWrapper<PlateGoodDO>()
|
||||
.eq(PlateGoodDO::getOrganId,organId)
|
||||
.eq(PlateGoodDO::getDeleted,false)
|
||||
.eq(PlateGoodDO::getGoodsId, goodsId));
|
||||
.in(PlateGoodDO::getGoodsId, goodsId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -197,7 +197,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
.inIfPresent(PlateDO::getOrderId,orderIds)
|
||||
.inIfPresent(PlateDO::getGoodsId,goodsIdList)
|
||||
.eq(PlateDO::getType, OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())
|
||||
.select(PlateDO::getId));
|
||||
.select(PlateDO::getId,PlateDO::getGoodsId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -4,13 +4,14 @@ import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.system.api.application.ApplicationApi;
|
||||
import com.cf.imes.module.system.api.customplateno.CustomPlateNoSeqApi;
|
||||
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
|
||||
import com.cf.imes.module.system.api.dict.DictDataApi;
|
||||
import com.cf.imes.module.system.api.machine.MachineApi;
|
||||
import com.cf.imes.module.system.api.organ.OrganApi;
|
||||
import com.cf.imes.module.system.api.permission.PermissionApi;
|
||||
import com.cf.imes.module.system.api.process.ProcessApi;
|
||||
import com.cf.imes.module.system.api.process.ProcessGroupApi;
|
||||
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
|
||||
import com.cf.imes.module.system.api.user.AdminUserApi;
|
||||
import com.cf.imes.module.system.api.dict.DictDataApi;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -20,6 +21,6 @@ import org.springframework.context.annotation.Configuration;
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, DictDataApi.class, AdminUserApi.class,
|
||||
FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class,
|
||||
ProcessApi.class, OrganApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class})
|
||||
ProcessApi.class, OrganApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class, PermissionApi.class})
|
||||
public class RpcConfiguration {
|
||||
}
|
||||
|
||||
+109
-60
@@ -26,6 +26,8 @@ import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.es.core.service.ESDocumentService;
|
||||
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.orderParts.vo.OrderPartsRemark;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
|
||||
@@ -48,15 +50,13 @@ import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.planItem.PlanItemMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper;
|
||||
import com.cf.imes.module.executor.enums.ErrorCodeConstants;
|
||||
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
|
||||
import com.cf.imes.module.system.api.dataSource.DataSourceApi;
|
||||
import com.cf.imes.module.system.api.machine.MachineApi;
|
||||
import com.cf.imes.module.system.api.permission.PermissionApi;
|
||||
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
|
||||
import com.cf.imes.module.system.api.systemconfig.dto.ProcessSchemeDTO;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
@@ -117,6 +117,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Resource
|
||||
private SystemConfigApi systemConfigApi;
|
||||
|
||||
@Resource
|
||||
private PermissionApi permissionApi;
|
||||
|
||||
|
||||
@Resource
|
||||
private EsUtils esUtils;
|
||||
@@ -127,15 +130,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
@Resource
|
||||
private OrderPartsMapper orderPartsMapper;
|
||||
|
||||
@Resource
|
||||
private ProcessStepMapper processStepMapper;
|
||||
|
||||
@Resource
|
||||
private ProcessStepItemMapper processStepItemMapper;
|
||||
|
||||
@Resource
|
||||
private PlateGoodMapper plateGoodMapper;
|
||||
|
||||
@Resource
|
||||
private OrderGroupMapper orderGroupMapper;
|
||||
|
||||
@@ -601,7 +595,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
|
||||
|
||||
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
|
||||
|
||||
//
|
||||
|
||||
// 造型数据的尺寸长度
|
||||
Integer orderModelSize = plateDetailRespVOS.size();
|
||||
@@ -665,34 +659,43 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
OptimizeBoardModelDO boardModelDO = req.getOptimizeBoardModelDOS().get(0);
|
||||
|
||||
Long processId = req.getProcessId();
|
||||
|
||||
List<ActualGoodsList> actualGoodsLists = Optional.ofNullable(boardModelDO.getActualGoodsList()).orElse(new ArrayList<>());
|
||||
|
||||
AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE);
|
||||
|
||||
Long planId = boardModelDO.getPlanId();
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
// 删除原来的优化信息
|
||||
List<Boolean> isLocks = new ArrayList<>();
|
||||
|
||||
// 查询原优化信息然后进行判断
|
||||
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR);
|
||||
}
|
||||
|
||||
isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList());
|
||||
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
|
||||
|
||||
Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false);
|
||||
|
||||
if(Boolean.TRUE.equals(isLock) && planDO.getIsScheduled().equals(true)){
|
||||
throw exception(THIS_PLAN_IS_LOCK);
|
||||
}
|
||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
assert loginUser != null;
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL);
|
||||
Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData();
|
||||
|
||||
if(Boolean.TRUE.equals(isLock) && planDO.getIsScheduled().equals(true) && Boolean.FALSE.equals(data)){
|
||||
throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -701,12 +704,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR);
|
||||
|
||||
|
||||
if(processId != null && !planDO.getProcessId().equals(processId)) {
|
||||
|
||||
validatePlanStatus(planDO,isLocks);
|
||||
|
||||
planMapper.updateById(planDO.setProcessId(processId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
plateDOS.forEach(f->{
|
||||
f.setIsOptimized(true);
|
||||
});
|
||||
|
||||
plateMapper.updateBatch(plateDOS);
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(),planId,ORDER_OPTIMIZE_PLATE_MODEL);
|
||||
|
||||
// 保存优化后的大板数据
|
||||
esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS());
|
||||
@@ -733,13 +747,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS);
|
||||
|
||||
// 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID
|
||||
if(!planDO.getProcessId().equals(processId)){
|
||||
planMapper.updateById(planDO.setProcessId(processId));
|
||||
}
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
|
||||
List<PlateDO> plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId());
|
||||
|
||||
@@ -755,11 +762,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
// 不能加非空判断,因为方案组里可能没有优化信息
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
List<Boolean> isLocks = new ArrayList<>();
|
||||
|
||||
if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){
|
||||
|
||||
optimizeBoardModelDOS.forEach(f->{
|
||||
|
||||
isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false));
|
||||
|
||||
modelDOList.add(SaveProcessSchemeModelDO.builder()
|
||||
.planConfigId(f.getPlanConfigId())
|
||||
.planName(f.getPlanConfigName())
|
||||
@@ -772,6 +782,19 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
}
|
||||
|
||||
// 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID
|
||||
if(!planDO.getProcessId().equals(processId)){
|
||||
|
||||
validatePlanStatus(planDO,isLocks);
|
||||
|
||||
planMapper.updateById(planDO.setProcessId(processId));
|
||||
|
||||
}
|
||||
|
||||
|
||||
esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
|
||||
esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList);
|
||||
|
||||
|
||||
@@ -788,54 +811,53 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
planProcessSchemeList.setProcessSchemeList(schemeDTOList);
|
||||
|
||||
if(planId != null) {
|
||||
|
||||
validatePlanExists(planId);
|
||||
validatePlanExists(planId);
|
||||
|
||||
// 查询排单对应的方案组信息
|
||||
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>());
|
||||
// 查询排单对应的方案组信息
|
||||
List<SaveProcessSchemeModelDO> saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>());
|
||||
|
||||
|
||||
// 查询排单对应的优化信息
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId,schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
// 查询排单对应的优化信息
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class);
|
||||
|
||||
|
||||
if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) {
|
||||
if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) {
|
||||
|
||||
|
||||
if(CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) {
|
||||
if (CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) {
|
||||
|
||||
saveProcessSchemeReqVOS.forEach(f -> {
|
||||
saveProcessSchemeReqVOS.forEach(f -> {
|
||||
|
||||
List<OptimizeBoardModelDO> modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList();
|
||||
if(CollUtil.isNotEmpty(modelDOList)) {
|
||||
List<OptimizeBoardModelDO> modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList();
|
||||
if (CollUtil.isNotEmpty(modelDOList)) {
|
||||
|
||||
String jsonString = toJsonString(modelDOList.get(0));
|
||||
String jsonString = toJsonString(modelDOList.get(0));
|
||||
|
||||
f.setPlanOptimize(jsonString);
|
||||
}
|
||||
});
|
||||
}else {
|
||||
optimizeBoardModelDOS.forEach(f -> {
|
||||
f.setPlanOptimize(jsonString);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
optimizeBoardModelDOS.forEach(f -> {
|
||||
|
||||
saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder()
|
||||
.planConfigId(f.getPlanConfigId())
|
||||
.planName(f.getPlanConfigName())
|
||||
.planId(f.getPlanId())
|
||||
.plateNum(f.getPlaceBlockNumber())
|
||||
.goodsNum(f.getBoardCount())
|
||||
.planOptimize(toJsonString(f))
|
||||
.build());
|
||||
saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder()
|
||||
.planConfigId(f.getPlanConfigId())
|
||||
.planName(f.getPlanConfigName())
|
||||
.planId(f.getPlanId())
|
||||
.plateNum(f.getPlaceBlockNumber())
|
||||
.goodsNum(f.getBoardCount())
|
||||
.planOptimize(toJsonString(f))
|
||||
.build());
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
planProcessSchemeList.setSaveProcessSchemeReqVOS(saveProcessSchemeReqVOS);
|
||||
|
||||
|
||||
}
|
||||
|
||||
planProcessSchemeList.setSaveProcessSchemeReqVOS(saveProcessSchemeReqVOS);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return planProcessSchemeList;
|
||||
}
|
||||
@@ -1451,6 +1473,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
OptimizeBoardModelDO optimizeBoardModelDO,
|
||||
Date date) {
|
||||
|
||||
remainBoardInfos.forEach(f->{
|
||||
f.setPlaceBoardJSON(toJsonString(f.getPlaceBoardList()));
|
||||
});
|
||||
|
||||
Map<String, Object> updateData = new HashMap<>();
|
||||
updateData.put("cutedBoardNumber", optimizeBoardModelDO.getCutedBoardNumber());
|
||||
updateData.put("cutedBlockNumber", optimizeBoardModelDO.getCutedBlockNumber());
|
||||
@@ -1469,6 +1495,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
|
||||
|
||||
private void updatePlateData(List<Long> orderIds, List<String> planNo, Integer cutedType) {
|
||||
|
||||
if(CollUtil.isEmpty(planNo)){
|
||||
return;
|
||||
}
|
||||
|
||||
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId());
|
||||
AssertUtils.notEmpty(plateDOS, THIS_PLAN_PLATE_DATA_ERROR);
|
||||
|
||||
@@ -1586,4 +1617,22 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
|
||||
}
|
||||
|
||||
|
||||
private void validatePlanStatus(PlanDO planDO,List<Boolean> isLocks){
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
throw exception(THIS_PLAN_PLATE_IS_CUT);
|
||||
}
|
||||
|
||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
assert loginUser != null;
|
||||
|
||||
Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData();
|
||||
|
||||
if(Boolean.TRUE.equals(planDO.getIsScheduled()) && isLocks.contains(true) && Boolean.FALSE.equals(data)){
|
||||
throw exception(THIS_PLAN_PROCESS_SCHEME_IS_LOCK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+22
-21
@@ -319,7 +319,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
if(updateReqVO.getProcessId() != null){
|
||||
|
||||
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
|
||||
throw exception(LIST_CHANGES_ARE_PROHIBITED);
|
||||
throw exception(THIS_PLAN_PLATE_IS_CUT);
|
||||
}
|
||||
|
||||
planDO.setProcessId(updateReqVO.getProcessId());
|
||||
@@ -328,6 +328,8 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
}else {
|
||||
|
||||
|
||||
|
||||
planDO.setIsScheduled(updateReqVO.getIsScheduled());
|
||||
planMapper.updateById(planDO);
|
||||
}
|
||||
@@ -412,8 +414,12 @@ public class PlanServiceImpl implements PlanService {
|
||||
if (!plateDOS.isEmpty()) {
|
||||
List<Long> plateIdList = plateDOS.stream().map(PlateDO::getId).toList();
|
||||
|
||||
List<Long> goodsIds = plateDOS.stream().map(PlateDO::getGoodsId).toList();
|
||||
|
||||
plateMapper.deleteBatchIds(plateIdList);
|
||||
|
||||
goodsMapper.deleteBatchIds(goodsIds);
|
||||
|
||||
orderItemMapper.delete(new LambdaQueryWrapperX<OrderItemDO>()
|
||||
.eq(OrderItemDO::getOrganId, getUserOrganId())
|
||||
.inIfPresent(OrderItemDO::getOrderId, orderIds)
|
||||
@@ -431,28 +437,22 @@ public class PlanServiceImpl implements PlanService {
|
||||
esUtils.deleteEsDocument(FIELD_PLANID,planIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL);
|
||||
|
||||
|
||||
// 查询删除排单对应的生产单是否还有进行了其他排单
|
||||
List<Long> orderIdList = planItemMapper.selectOrderPlateList(orderIds, getUserOrganId());
|
||||
|
||||
// 查询删除的小板对应的生产单信息,如果生产单的小板全部改成了未优化,修改状态
|
||||
List<PlateDO> plateIsOptimizedList = plateMapper.selectPlateIsOptimized(orderIds, getUserOrganId());
|
||||
List<Long> diff = Stream.concat(
|
||||
orderIdList.stream().filter(str -> !orderIds.contains(str)),
|
||||
orderIds.stream().filter(str -> !orderIdList.contains(str)))
|
||||
.toList();
|
||||
|
||||
if(CollUtil.isNotEmpty(plateIsOptimizedList)){
|
||||
|
||||
List<Long> orderIdList = plateIsOptimizedList.stream().map(PlateDO::getOrderId).distinct().toList();
|
||||
if (CollUtil.isNotEmpty(diff)) {
|
||||
|
||||
List<Long> diff = Stream.concat(
|
||||
orderIdList.stream().filter(str -> !orderIds.contains(str)),
|
||||
orderIds.stream().filter(str -> !orderIdList.contains(str)))
|
||||
.toList();
|
||||
List<OrderDO> orderList = orderMapper.selectBatchIds(diff);
|
||||
|
||||
if(CollUtil.isNotEmpty(diff)){
|
||||
|
||||
List<OrderDO> orderList = orderMapper.selectBatchIds(diff);
|
||||
|
||||
orderList.forEach(f->f.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()));
|
||||
|
||||
orderMapper.updateBatch(orderList);
|
||||
}
|
||||
orderList.forEach(f -> f.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()));
|
||||
|
||||
orderMapper.updateBatch(orderList);
|
||||
}
|
||||
|
||||
|
||||
@@ -1212,11 +1212,12 @@ public class PlanServiceImpl implements PlanService {
|
||||
|
||||
|
||||
// 查询删除的小板对应的生产单信息,如果生产单的小板全部改成了未优化,修改状态
|
||||
List<PlateDO> plateIsOptimizedList = plateMapper.selectPlateIsOptimized(deleteOrderIds, getUserOrganId());
|
||||
// List<PlateDO> plateIsOptimizedList = plateMapper.selectPlateIsOptimized(deleteOrderIds, getUserOrganId());
|
||||
// if(CollUtil.isNotEmpty(plateIsOptimizedList)){
|
||||
// List<Long> orderIds = plateIsOptimizedList.stream().map(PlateDO::getOrderId).distinct().toList();
|
||||
|
||||
if(CollUtil.isNotEmpty(plateIsOptimizedList)){
|
||||
|
||||
List<Long> orderIds = plateIsOptimizedList.stream().map(PlateDO::getOrderId).distinct().toList();
|
||||
List<Long> orderIds = planItemMapper.selectOrderPlateList(deleteOrderIds, getUserOrganId());
|
||||
|
||||
List<Long> diff = Stream.concat(
|
||||
orderIds.stream().filter(str -> !deleteOrderIds.contains(str)),
|
||||
@@ -1232,7 +1233,7 @@ public class PlanServiceImpl implements PlanService {
|
||||
orderMapper.updateBatch(orderList);
|
||||
}
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -36,9 +36,9 @@ public interface PlateService {
|
||||
/**
|
||||
* 删除生产单板件
|
||||
*
|
||||
* @param id 编号
|
||||
* @param plateIds 编号
|
||||
*/
|
||||
void deletePlate(Long id,Long planId);
|
||||
void deletePlate(List<Long> plateIds,Long planId);
|
||||
|
||||
/**
|
||||
* 获得生产单板件
|
||||
@@ -99,6 +99,6 @@ public interface PlateService {
|
||||
|
||||
List<BodyPlateDetailVO> getPlateModelByPlateId(List<Long> bodyIds);
|
||||
|
||||
List<String> createNewPlate(OptimizationSavePlateReqVO reqVO);
|
||||
List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO);
|
||||
|
||||
}
|
||||
+227
-116
@@ -7,8 +7,10 @@ import co.elastic.clients.elasticsearch.core.SearchRequest;
|
||||
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
||||
import co.elastic.clients.elasticsearch.core.search.Hit;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
||||
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;
|
||||
@@ -18,21 +20,21 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.es.core.service.ESDocumentService;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
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.GoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
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.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
|
||||
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
|
||||
@@ -40,6 +42,7 @@ import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.planItem.PlanItemMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
|
||||
import com.cf.imes.module.executor.enums.OrderItemType;
|
||||
@@ -48,7 +51,6 @@ import com.cf.imes.module.executor.service.plan.PlanService;
|
||||
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
|
||||
import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -58,14 +60,12 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.ES_DATA_ERROR;
|
||||
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.common.util.json.JsonUtils.parseObject;
|
||||
import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString;
|
||||
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.*;
|
||||
@@ -100,6 +100,10 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Resource
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Resource
|
||||
private PlanItemMapper planItemMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private SnowflakeIdWorker3rd idWorker;
|
||||
|
||||
@@ -115,12 +119,17 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Resource
|
||||
private EsUtils esUtils;
|
||||
|
||||
@Resource
|
||||
private IdentifierGenerator identifierGenerator;
|
||||
|
||||
private static final String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model";
|
||||
|
||||
private static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
|
||||
|
||||
private static final String FIELD_PLATE_ID = "plateId";
|
||||
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
@Override
|
||||
public Long createPlate(PlateSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@@ -141,73 +150,78 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deletePlate(Long id,Long planId) {
|
||||
public void deletePlate(List<Long> plateIds,Long planId) {
|
||||
|
||||
if(CollUtil.isEmpty(plateIds)){
|
||||
return;
|
||||
}
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
PlateDO plateDO = plateMapper.selectById(id);
|
||||
List<PlateDO> plateDOS = plateMapper.selectBatchIds(plateIds);
|
||||
|
||||
AssertUtils.notEmpty(plateDO,REMAIN_PLATE_NOT_EXISTS);
|
||||
AssertUtils.notEmpty(plateDOS,REMAIN_PLATE_NOT_EXISTS);
|
||||
|
||||
|
||||
if(!plateDO.getType().equals(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())){
|
||||
throw exception(PLATE_IS_SOURCE);
|
||||
}
|
||||
for (PlateDO plateDO : plateDOS) {
|
||||
|
||||
if(!plateDO.getType().equals(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())){
|
||||
throw exception(PLATE_IS_SOURCE,plateDO.getPlateNo());
|
||||
}
|
||||
|
||||
if(Boolean.TRUE.equals(plateDO.getIsOptimized())) {
|
||||
|
||||
List<OptimizeBoardModelDO> optimizeBoardModelDOS = buildBoardByPlanId(planId, ORDER_REMAIN_PLATE_MODEL);
|
||||
|
||||
if (!optimizeBoardModelDOS.isEmpty()) {
|
||||
|
||||
// todo 目前只解决了非混单的情况(目前混单的问题应该已经解决,数据正确性问题待验证)
|
||||
OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0);
|
||||
|
||||
try {
|
||||
|
||||
Long placeBlockNumber = optimizeBoardModelDO.getPlaceBlockNumber() - 1;
|
||||
|
||||
List<PlatePlaceInfo> asJsonObject = parseObject(optimizeBoardModelDO.getBlockPlaceInfo(), new TypeReference<>() {});
|
||||
|
||||
String blockPlaceInfo = toJsonString(
|
||||
asJsonObject.stream()
|
||||
.filter(f -> !f.getBo().equals(plateDO.getPlateNo()))
|
||||
.toList());
|
||||
|
||||
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
|
||||
|
||||
|
||||
objectObjectHashMap.put("blockPlaceInfo",blockPlaceInfo);
|
||||
|
||||
objectObjectHashMap.put("placeBlockNumber",placeBlockNumber);
|
||||
|
||||
esDocumentService.updateById(ORDER_REMAIN_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
log.error(e.getMessage());
|
||||
throw new ServiceException(ES_DATA_ERROR);
|
||||
|
||||
}
|
||||
if(!plateDO.getIsCutted().equals(OrderPlateCutStatusEnum.NOCUTTING.getStatus())){
|
||||
|
||||
throw exception(THIS_PLATE_IS_OPTIMIZE,plateDO.getPlateNo());
|
||||
}
|
||||
}
|
||||
|
||||
Long bodyId = orderItemMapper.selectPlateList(id, plateDO.getOrderId(), plateDO.getOrganId()).getBodyId();
|
||||
|
||||
OrderBodyDO orderBodyDO = orderBodyMapper.selectById(bodyId);
|
||||
List<Long> plateIdList = plateDOS.stream().map(PlateDO::getId).toList();
|
||||
|
||||
orderBodyDO.setPlateNum(orderBodyDO.getPlateNum() - 1);
|
||||
orderBodyMapper.updateById(orderBodyDO);
|
||||
List<Long> orderIds = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList();
|
||||
|
||||
List<Long> goodsIds = plateDOS.stream().map(PlateDO::getGoodsId).distinct().toList();
|
||||
|
||||
|
||||
List<OrderItemDO> orderItemDOS = orderItemMapper.selectPlateList(plateIdList, orderIds, getUserOrganId());
|
||||
|
||||
List<Long> bodyIds = orderItemDOS.stream().map(OrderItemDO::getBodyId).distinct().toList();
|
||||
|
||||
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
|
||||
|
||||
orderBodyDOS.forEach(f->{
|
||||
int plateNum = orderItemDOS.stream().filter(o -> f.getId().equals(o.getBodyId())).toList().size();
|
||||
f.setPlateNum(f.getPlateNum() - plateNum);
|
||||
|
||||
});
|
||||
|
||||
orderBodyMapper.updateBatch(orderBodyDOS);
|
||||
|
||||
// 删除小板ID
|
||||
plateMapper.deleteBatchIds(plateIdList);
|
||||
|
||||
// 删除小板明细信息
|
||||
orderItemMapper.deleteByPlateId(plateIdList, orderIds, getUserOrganId());
|
||||
|
||||
// 删除添加自增板时新增的大板ID
|
||||
List<Long> plateId = goodsMapper.selectInsertGoodsIds(orderIds, goodsIds, getUserOrganId());
|
||||
|
||||
|
||||
if(CollUtil.isNotEmpty(plateId)){
|
||||
goodsMapper.deleteBatchIds(plateId);
|
||||
}
|
||||
|
||||
|
||||
// 删除排单和板材明细的小板信息
|
||||
planItemMapper.delete(new LambdaQueryWrapperX<PlanItemDO>()
|
||||
.eq(PlanItemDO::getOrganId, getUserOrganId())
|
||||
.in(PlanItemDO::getOrderId,orderIds)
|
||||
.in(PlanItemDO::getPlateId,plateIdList)
|
||||
.eq(PlanItemDO::getPlanId, planId));
|
||||
|
||||
orderItemMapper.deleteByPlateId(id, plateDO.getOrderId(), plateDO.getOrganId());
|
||||
|
||||
// 删除
|
||||
plateMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validatePlateExists(Long id) {
|
||||
@@ -433,75 +447,191 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<String> createNewPlate(OptimizationSavePlateReqVO reqVO) {
|
||||
|
||||
|
||||
GoodsDO goodsDO = goodsMapper.selectGoodsId(reqVO.getOrderId(), reqVO.getGoodsId(), getUserOrganId());
|
||||
|
||||
AssertUtils.notEmpty(goodsDO,ORDER_PLAN_ERROR);
|
||||
public List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO) {
|
||||
|
||||
List<PlateDO> plateDOS = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < reqVO.getMultiple(); i++) {
|
||||
List<OrderItemDO> orderItemDOS = new ArrayList<>();
|
||||
|
||||
// 生成板编号
|
||||
long plateNo = idWorker.nextId();
|
||||
long obtainingTime = SnowflakeIdWorker3rd.obtainingTime();
|
||||
List<PlanItemDO> planItemDOS = new ArrayList<>();
|
||||
|
||||
PlateDO plateDO = BeanUtils.toBean(reqVO, PlateDO.class);
|
||||
List<InsertPlateRespVO> insertPlateRespVOS = new ArrayList<>();
|
||||
|
||||
List<OrderBodyNumVO> orderBodyNumVOS = new ArrayList<>();
|
||||
|
||||
String remake1 = reqVO.getRemake1() == null ? "" : reqVO.getRemake1() + ";" ;
|
||||
List<String> goodsIds = new ArrayList<>(reqVO.stream().map(OptimizationSavePlateReqVO::getGoodsId).distinct().toList());
|
||||
|
||||
String remake2 = reqVO.getRemake2() == null ? "" : reqVO.getRemake2();
|
||||
List<Long> orderIds = reqVO.stream().map(OptimizationSavePlateReqVO::getOrderId).distinct().toList();
|
||||
|
||||
plateDO.setRemark(remake1+remake2);
|
||||
plateDO.setHoleArrange(reqVO.getPlaceHole());
|
||||
plateDO.setGoodsId(goodsDO.getId());
|
||||
plateDO.setThickness(goodsDO.getThickness());
|
||||
plateDO.setIsOptimized(false);
|
||||
plateDO.setPlateNo((obtainingTime) + Long.toString(plateNo).substring(2));
|
||||
plateDO.setType(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType());
|
||||
List<GoodsDO> goodsDOList = goodsMapper.selectOrderGoodsList(orderIds, goodsIds, getUserOrganId());
|
||||
|
||||
plateDO.setArea(reqVO.getWidth().multiply(reqVO.getHeight()).movePointLeft(6).stripTrailingZeros());
|
||||
goodsIds.removeAll(goodsDOList.stream().map(GoodsDO::getGoodsId).distinct().toList());
|
||||
|
||||
plateDOS.add(plateDO);
|
||||
if(CollUtil.isNotEmpty(goodsIds)){
|
||||
|
||||
List<GoodsDO> goodsDOS = new ArrayList<>();
|
||||
|
||||
List<PlateGoodDO> plateGoodDOS = plateGoodMapper.selectGoodsByGoodsId(goodsIds, getUserOrganId());
|
||||
|
||||
for (PlateGoodDO plateGoodDO : plateGoodDOS) {
|
||||
|
||||
GoodsDO goodsDO = GoodsDO.builder()
|
||||
.id(null)
|
||||
.orderId(reqVO.stream().filter(f -> f.getGoodsId().equals(plateGoodDO.getGoodsId())).map(OptimizationSavePlateReqVO::getOrderId).toList().get(0))
|
||||
.rawGoodsId("0")
|
||||
.goodsId(plateGoodDO.getGoodsId())
|
||||
.goodsName(plateGoodDO.getGoodsName())
|
||||
.material(plateGoodDO.getMaterial())
|
||||
.texture(plateGoodDO.getTexture())
|
||||
.color(plateGoodDO.getColor())
|
||||
.width(BigDecimal.valueOf(plateGoodDO.getWidth()))
|
||||
.height(BigDecimal.valueOf(plateGoodDO.getHeight()))
|
||||
.thickness(BigDecimal.valueOf(plateGoodDO.getThickness()))
|
||||
.remark(plateGoodDO.getRemark())
|
||||
.brand(plateGoodDO.getBrand())
|
||||
.build();
|
||||
|
||||
goodsDOS.add(goodsDO);
|
||||
}
|
||||
|
||||
goodsMapper.insertBatch(goodsDOS);
|
||||
|
||||
goodsDOList.addAll(goodsDOS);
|
||||
}
|
||||
|
||||
|
||||
reqVO.forEach(f->{
|
||||
|
||||
List<String> plateNoList = new ArrayList<>();
|
||||
|
||||
Long orderId = f.getOrderId();
|
||||
|
||||
GoodsDO goodsDO = goodsDOList.stream().filter(g -> g.getGoodsId().equals(f.getGoodsId())).toList().get(0);
|
||||
|
||||
orderBodyNumVOS.add(OrderBodyNumVO.builder()
|
||||
.bodyId(f.getBodyId())
|
||||
.plateNum(f.getMultiple())
|
||||
.build());
|
||||
|
||||
for (int i = 0; i < f.getMultiple(); i++) {
|
||||
|
||||
// 生成板编号
|
||||
long obtainingTime = SnowflakeIdWorker3rd.obtainingTime();
|
||||
|
||||
String plateNo = (obtainingTime) + Long.toString(idWorker.nextId()).substring(2);
|
||||
|
||||
plateNoList.add(plateNo);
|
||||
|
||||
String remake1 = f.getRemake1() == null ? "" : f.getRemake1() + ";";
|
||||
|
||||
String remake2 = f.getRemake2() == null ? "" : f.getRemake2();
|
||||
|
||||
// 小板ID
|
||||
Long plateId = (Long) identifierGenerator.nextId(null);
|
||||
|
||||
plateDOS.add(PlateDO.builder()
|
||||
.id(plateId)
|
||||
.orderId(orderId)
|
||||
.name(f.getName())
|
||||
.plateNo(plateNo)
|
||||
.type(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())
|
||||
.isOptimized(true)
|
||||
.thickness(goodsDO.getThickness())
|
||||
.goodsId(goodsDO.getId())
|
||||
.holeArrange(f.getPlaceHole())
|
||||
.remark(remake1 + remake2)
|
||||
.area(f.getWidth().multiply(f.getHeight()).movePointLeft(6).stripTrailingZeros())
|
||||
.width(f.getWidth())
|
||||
.height(f.getHeight())
|
||||
.texture(f.getTexture())
|
||||
.sealLeft(f.getSealLeft())
|
||||
.sealRight(f.getSealRight())
|
||||
.sealUp(f.getSealUp())
|
||||
.sealDown(f.getSealDown())
|
||||
.build());
|
||||
|
||||
// 生产单明细表新增数据
|
||||
orderItemDOS.add(OrderItemDO.builder()
|
||||
.orderId(f.getOrderId())
|
||||
.type(OrderItemType.BOARD.getCode())
|
||||
.roomId(f.getRoomId())
|
||||
.bodyId(f.getBodyId())
|
||||
.plateId(plateId)
|
||||
.build());
|
||||
|
||||
planItemDOS.add(PlanItemDO.builder()
|
||||
.planId(f.getPlanId())
|
||||
.goodsId(goodsDO.getId())
|
||||
.orderId(f.getOrderId())
|
||||
.plateId(plateId)
|
||||
.build());
|
||||
|
||||
}
|
||||
|
||||
insertPlateRespVOS.add(InsertPlateRespVO.builder()
|
||||
.blockKey(f.getBlockKey())
|
||||
.plateNo(plateNoList)
|
||||
.build());
|
||||
|
||||
});
|
||||
|
||||
|
||||
plateMapper.insertBatch(plateDOS);
|
||||
|
||||
List<OrderBodyNumVO> numVOS = mergeOrderBody(orderBodyNumVOS);
|
||||
|
||||
// 生产单柜体表新增数据
|
||||
OrderBodyDO orderBodyDO = orderBodyMapper.selectById(reqVO.getBodyId());
|
||||
List<Long> bodyIds = numVOS.stream().map(OrderBodyNumVO::getBodyId).toList();
|
||||
|
||||
AssertUtils.notEmpty(orderBodyDO,PLAN_BODY_DATA_ERROR);
|
||||
|
||||
orderBodyDO.setPlateNum(reqVO.getMultiple()+orderBodyDO.getPlateNum());
|
||||
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
|
||||
|
||||
orderBodyMapper.updateById(orderBodyDO);
|
||||
orderBodyDOS.forEach(f->{
|
||||
|
||||
List<OrderItemDO> orderItemDOS = new ArrayList<>();
|
||||
Integer plateNum = numVOS.stream()
|
||||
.filter(n -> n.getBodyId().equals(f.getId()))
|
||||
.map(OrderBodyNumVO::getPlateNum)
|
||||
.findFirst().orElse(0);
|
||||
|
||||
plateDOS.forEach(plateDO -> {
|
||||
// 生产单明细表新增数据
|
||||
OrderItemDO orderItemDO = OrderItemDO.builder()
|
||||
.orderId(reqVO.getOrderId())
|
||||
.type(OrderItemType.BOARD.getCode())
|
||||
.roomId(reqVO.getRoomId())
|
||||
.bodyId(reqVO.getBodyId())
|
||||
.plateId(plateDO.getId())
|
||||
.build();
|
||||
orderItemDOS.add(orderItemDO);
|
||||
}
|
||||
);
|
||||
f.setPlateNum(f.getPlateNum() + plateNum);
|
||||
|
||||
});
|
||||
|
||||
orderBodyMapper.updateBatch(orderBodyDOS);
|
||||
|
||||
|
||||
planItemMapper.insertBatch(planItemDOS);
|
||||
|
||||
orderItemMapper.insertBatch(orderItemDOS);
|
||||
|
||||
|
||||
return plateDOS.stream().map(PlateDO::getPlateNo).toList();
|
||||
return insertPlateRespVOS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static List<OrderBodyNumVO> mergeOrderBody(List<OrderBodyNumVO> dataList) {
|
||||
if (dataList == null || dataList.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 使用 HashMap 来聚合数据,key 为 filed1,value 为 TestData 对象
|
||||
Map<Long, Integer> mergedMap = new HashMap<>();
|
||||
for (OrderBodyNumVO data : dataList) {
|
||||
// 合并逻辑:将 filed2 的值累加
|
||||
mergedMap.merge(data.getBodyId(), data.getPlateNum(), Integer::sum);
|
||||
}
|
||||
|
||||
// 将结果转换回 List<TestData>
|
||||
return mergedMap.entrySet().stream()
|
||||
.map(entry -> new OrderBodyNumVO(entry.getKey(), entry.getValue()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
|
||||
|
||||
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
|
||||
@@ -523,23 +653,4 @@ public class PlateServiceImpl implements PlateService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private List<OptimizeBoardModelDO> buildBoardByPlanId(Long planId, String index) {
|
||||
SearchRequest.Builder builder = new SearchRequest.Builder();
|
||||
builder.index(index);
|
||||
builder.query(q -> q.term(b -> b.field("planId").value(planId)));
|
||||
try {
|
||||
SearchResponse<OptimizeBoardModelDO> search = elasticsearchClient.search(builder.build(), OptimizeBoardModelDO.class);
|
||||
List<Hit<OptimizeBoardModelDO>> hits = search.hits().hits();
|
||||
if (CollUtil.isNotEmpty(hits)) {
|
||||
return hits.stream().map(Hit::source).toList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage());
|
||||
throw new ServiceException(INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+42
-1
@@ -28,7 +28,20 @@
|
||||
resultType="com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO">
|
||||
|
||||
select distinct
|
||||
og.*,
|
||||
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
|
||||
|
||||
from order_goods og
|
||||
@@ -516,4 +529,32 @@
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectInsertGoodsIds" resultType="java.lang.Long">
|
||||
|
||||
|
||||
select distinct
|
||||
og.id
|
||||
from order_goods og
|
||||
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
|
||||
where og.organ_id = #{organId}
|
||||
|
||||
and og.order_id in
|
||||
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
|
||||
#{orderIds}
|
||||
</foreach>
|
||||
|
||||
and og.id in
|
||||
<foreach collection="goodsIds" item="goodsIds" open="(" close=")" separator=",">
|
||||
#{goodsIds}
|
||||
</foreach>
|
||||
|
||||
and og.raw_goods_id = '0'
|
||||
and op.id is null;
|
||||
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
+18
@@ -399,4 +399,22 @@
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectOrderPlateList" resultType="java.lang.Long">
|
||||
|
||||
|
||||
select distinct
|
||||
order_id
|
||||
from order_plan_item
|
||||
|
||||
where organ_id = #{organId}
|
||||
and order_id in
|
||||
<foreach collection="orderIds" item="orderIds" open="(" close=")" separator=",">
|
||||
#{orderIds}
|
||||
</foreach>
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
+14
-2
@@ -135,7 +135,10 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// url解码xml
|
||||
String content = createReqVO.getContent();
|
||||
if (StringUtils.isNotEmpty(content)) {
|
||||
createReqVO.setContent(URLUtil.decode(content));
|
||||
String decode = URLUtil.decode(content);
|
||||
createReqVO.setContent(decode);
|
||||
// 解析xml
|
||||
new ReportParser().parse(new ByteArrayInputStream(decode.getBytes()), createReqVO.getName());
|
||||
}
|
||||
// 新增模板
|
||||
ReportTemplateDO template = BeanUtils.toBean(createReqVO, ReportTemplateDO.class);
|
||||
@@ -184,6 +187,12 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
copyTemplateDO.setUpdater(null);
|
||||
copyTemplateDO.setUpdateTime(null);
|
||||
copyTemplateDO.setCreateTime(null);
|
||||
// 解析xml
|
||||
String content = copyTemplateDO.getContent();
|
||||
if (StringUtils.isNotEmpty(content)) {
|
||||
// 解析xml
|
||||
new ReportParser().parse(new ByteArrayInputStream(content.getBytes()), createReqVO.getName());
|
||||
}
|
||||
// 生成id
|
||||
copyTemplateDO.setId((Long) snowFlakeGenerator.nextId(null));
|
||||
// 新增模版
|
||||
@@ -204,7 +213,10 @@ public class ReportTemplateServiceImpl implements ReportTemplateService {
|
||||
// url解码xml
|
||||
String content = updateReqVO.getContent();
|
||||
if (StringUtils.isNotEmpty(content)) {
|
||||
updateReqVO.setContent(URLUtil.decode(content));
|
||||
String decode = URLUtil.decode(content);
|
||||
updateReqVO.setContent(decode);
|
||||
// 解析xml
|
||||
new ReportParser().parse(new ByteArrayInputStream(decode.getBytes()), updateReqVO.getName());
|
||||
}
|
||||
// 更新模板
|
||||
ReportTemplateDO updateObj = BeanUtils.toBean(updateReqVO, ReportTemplateDO.class);
|
||||
|
||||
BIN
Binary file not shown.
+5
-2
@@ -259,7 +259,7 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在");
|
||||
public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空");
|
||||
public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_002_033_009, "板材商品编号存在,请重新命名商品编号");
|
||||
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "当前板材为源小板,无法删除");
|
||||
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "小板:{} 为源小板,无法删除");
|
||||
public static final ErrorCode PLAN_GOODS_IS_FILTER_DATA_ERROR = new ErrorCode(1_002_033_011, "当前排单为非混单,无法添加颜色的筛选条件");
|
||||
public static final ErrorCode PLAN_STATUS_ERROR = new ErrorCode(1_002_033_012, "当前排单未投产,无法进行开料");
|
||||
|
||||
@@ -325,11 +325,14 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息");
|
||||
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_IS_LOCK = new ErrorCode(1_002_041_042, "当前排单已被锁定,无法进行优化,请解锁后再进行优化");
|
||||
public static final ErrorCode THIS_PLAN_PROCESS_SCHEME_IS_LOCK = new ErrorCode(1_002_041_043, "当前排单已被锁定,无法修改方案组,请解锁后再进行修改");
|
||||
public static final ErrorCode THIS_PLAN_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_044, "当前排单已全部开料,无法进行再次优化");
|
||||
public static final ErrorCode THIS_PLAN_PLATE_IS_CUT = new ErrorCode(1_002_041_045, "当前排单已有板材开料,无法修改");
|
||||
|
||||
|
||||
public static final ErrorCode THIS_PLAN_PLATE_OPTIMIZE_IS_ALL = new ErrorCode(1_002_041_046, "当前排单已全部开料,无法进行选择");
|
||||
public static final ErrorCode THIS_PLATE_IS_OPTIMIZE = new ErrorCode(1_002_041_046, "小板:{},已开料,无法删除,请重新选择小板再删除");
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user