diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java index d7f710275..1deffa1f3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java @@ -7,7 +7,6 @@ import lombok.Data; @Data - public class OrderIds { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index a547e2c04..f9d99404d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -266,8 +266,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderDOS = orderMapper.selectOrderPackList(orderIds, getUserOrganId()); if (ObjectUtil.isNotEmpty(orderDOS)) { - List orderDOList = orderDOS.stream().map(m -> m.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus())).toList(); - orderMapper.updateBatch(orderDOList); + orderDOS.forEach(f -> { + f.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + f.setFinishTime(LocalDateTime.now()); + }); + orderMapper.updateBatch(orderDOS); } } @@ -304,9 +307,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { Boolean isOptimized = optimizeBoardModelDO.getIsOptimized(); if(Boolean.FALSE.equals(isOptimized)){ - throw exception(ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR); - } @@ -355,9 +356,12 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if(!orderIdList.isEmpty()) { List orderDOList = orderMapper.selectBatchIds(orderIdList); - orderMapper.updateBatch(orderDOList.stream() - .map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())) - .toList()); + orderDOList.forEach(f -> { + f.setStatus(OrderStatusEnum.SORTED.getStatus()); + f.setFinishTime(null); + }); + orderMapper.updateBatch(orderDOList); + } return; @@ -382,8 +386,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderDOS = orderMapper.selectOrderList(orderIds, getUserOrganId()); if(!orderDOS.isEmpty()){ - List orderDOList = orderDOS.stream().map(m -> m.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())).toList(); - orderMapper.updateBatch(orderDOList); + orderDOS.forEach(f -> { + f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); + f.setFinishTime(null); + }); + orderMapper.updateBatch(orderDOS); } } @@ -916,6 +923,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { + // ES 文档数据刷新 public void refresh( String index) { try { diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OrderPartsRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OrderPartsRespVO.java index acaf61fae..98b7fb5ec 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OrderPartsRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OrderPartsRespVO.java @@ -45,4 +45,25 @@ public class OrderPartsRespVO { @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) private String remark; + + @Schema(description = "配件颜色", requiredMode = Schema.RequiredMode.REQUIRED) + private String partsColor; + + @Schema(description = "配件宽度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsWidth; + + @Schema(description = "配件长度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsLength; + + @Schema(description = "配件厚度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsThickness; + + @Schema(description = "配件主类:1封边2五金3组件", requiredMode = Schema.RequiredMode.REQUIRED) + private String category; + + @Schema(description = "子配件ID列表,复合部件时记录子配件ID,半角逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED) + private String subparts; + + + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java index c62f1b8d8..b637737bc 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/OtherPackReqVO.java @@ -23,7 +23,7 @@ public class OtherPackReqVO { @Schema(description = "配件名称", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "配件名称不能为空") - @Size(max = 30, message = "配件名称长度不能超过 64 个字符") + @Size(max = 64, message = "配件名称长度不能超过 64 个字符") private String name; @@ -31,6 +31,12 @@ public class OtherPackReqVO { @NumberValid(name = "配件数量") private Double num; + + @Schema(description = "配件单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "配件单位不能为空") + @Size(max = 32, message = "配件单位长度不能超过 32 个字符") + private String unit; + @Schema(description = "包裹编号", requiredMode = Schema.RequiredMode.REQUIRED) private String packNo; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java index 1faa5b3fc..d62bf6436 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/vo/pack/PackageDetailsRespVO.java @@ -105,4 +105,23 @@ public class PackageDetailsRespVO { private String factory; + @Schema(description = "配件颜色", requiredMode = Schema.RequiredMode.REQUIRED) + private String partsColor; + + @Schema(description = "配件宽度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsWidth; + + @Schema(description = "配件长度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsLength; + + @Schema(description = "配件厚度", requiredMode = Schema.RequiredMode.REQUIRED) + private Double partsThickness; + + @Schema(description = "配件主类:1封边2五金3组件", requiredMode = Schema.RequiredMode.REQUIRED) + private String category; + + @Schema(description = "子配件ID列表,复合部件时记录子配件ID,半角逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED) + private String subparts; + + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java index 1189ac1e8..688174273 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java @@ -10,7 +10,6 @@ import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; -import com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO; import org.apache.ibatis.annotations.Mapper; @@ -73,8 +72,6 @@ public interface OrderPackageMapper extends BaseMapperX { List selectPackPieceCount(@Param("orderIds") List orderIds, @Param("organId") Long organId); - List selectOrderPack(@Param("orderId") Long orderId,@Param("organId") Long organId); - // 删除当前生产单下所有的包裹 default void updateDelete(Long orderId,Long organId) { diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java index 0d6ddea53..87384bb37 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java @@ -3,6 +3,7 @@ package com.cf.imes.module.manage.dal.mysql.query; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList; import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.process.vo.PlateDetails; import com.cf.imes.module.manage.controller.admin.process.vo.ProcessPlateReqVO; @@ -80,17 +81,6 @@ public interface OrderItemMapper extends BaseMapperX { } - - - default List selectPartsList(Long orderId, Long organId) { - return selectList(new LambdaQueryWrapperX() - .eq(OrderItemDO::getOrganId, organId) - .eqIfPresent(OrderItemDO::getOrderId, orderId) - .eq(OrderItemDO::getPackageId,0) - .select(OrderItemDO::getPartsId)); - } - - default List selectPackByPlateId(List plateId,Long orderId ,Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderItemDO::getOrganId, organId) @@ -98,4 +88,11 @@ public interface OrderItemMapper extends BaseMapperX { .inIfPresent(OrderItemDO::getPlateId, plateId) .select(OrderItemDO::getPackageId)); } + + + List selectOrderPackPartsIds(@Param("orderId") Long orderId, @Param("organId") Long organId); + + List selectOrderPackPlateIds(@Param("orderId") Long orderId,@Param("organId") Long organId); + + } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index 0fe435075..c23967ed1 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -44,6 +44,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -268,7 +269,6 @@ public class PackServiceImpl implements PackService { @Override public List getPartsList(OrderPartsReqVO reqVO) { - return orderPartsMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId()); } @@ -381,6 +381,7 @@ public class PackServiceImpl implements PackService { if(orderDO.getStatus().equals(OrderStatusEnum.FINISH_PRODUCTION.getStatus())){ orderDO.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()); + orderDO.setFinishTime(null); } ordersMapper.updateById(orderDO); @@ -491,10 +492,11 @@ public class PackServiceImpl implements PackService { return false; } - List plateAndPartIdLists = orderPackageMapper.selectOrderPack(orderId, getUserOrganId()); + List partsIds = orderItemMapper.selectOrderPackPartsIds(orderId, getUserOrganId()); + List plateIds = orderItemMapper.selectOrderPackPlateIds(orderId, getUserOrganId()); - return plateAndPartIdLists.isEmpty(); + return partsIds.isEmpty() && plateIds.isEmpty(); } @@ -512,6 +514,7 @@ public class PackServiceImpl implements PackService { if(orderPlanApi.getOrder(orderId).getData()){ orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + orderDO.setFinishTime(LocalDateTime.now()); } @@ -618,6 +621,7 @@ public class PackServiceImpl implements PackService { OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class); // 因为是外部配件,所以配件类型的名称固定为 “ 外部配件” orderParts.setType("外部配件"); + orderParts.setUnit(reqVO.getUnit()); orderPartsMapper.insert(orderParts); @@ -665,6 +669,7 @@ public class PackServiceImpl implements PackService { OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class); // 因为是外部配件,所以配件类型的名称固定为 “ 外部配件” orderParts.setType("外部配件"); + orderParts.setUnit(reqVO.getUnit()); orderPartsMapper.insert(orderParts); // 在生产单明细表中添加数据(生产单号,配件ID,包裹ID,部件数量) @@ -825,13 +830,14 @@ public class PackServiceImpl implements PackService { orderItemMapper.updateBatch(orderItemDOS); // 查询配件是否为空,为空,修改生产单的状态为已打包 - List orderItemDoPartsList = orderItemMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId()); + List partsIds = orderItemMapper.selectOrderPackPartsIds(reqVO.getOrderId(), getUserOrganId()); - if (orderItemDoPartsList.isEmpty()) { + if (partsIds.isEmpty()) { OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); if(Boolean.TRUE.equals(orderPlanApi.getOrder(reqVO.getOrderId()).getData())){ orderDO.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + orderDO.setFinishTime(LocalDateTime.now()); } ordersMapper.updateById(orderDO); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml index ccab1614e..0e8651dc5 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml @@ -110,21 +110,6 @@ - - - + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml index d59e9704b..1ded583dd 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml @@ -17,6 +17,12 @@ + + + + + + diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 92200f4b4..95c05718d 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -343,7 +343,7 @@ public class ErrorCodeConstants { 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_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 ============ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/config/factory/service/impl/IntellectBranchingService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/config/factory/service/impl/IntellectBranchingService.java index a1d2c7f1e..50f0ae731 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/config/factory/service/impl/IntellectBranchingService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/config/factory/service/impl/IntellectBranchingService.java @@ -22,6 +22,7 @@ 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.*; @@ -57,11 +58,12 @@ public class IntellectBranchingService extends AbstractSystemConfigServiceHandle JSONObject jsonObject = jsonArray.getJSONObject(i); checkMachineId(jsonObject.getString("machineId")); - checkMachineName(jsonObject.getString("machineName")); - checkMachineConfig(jsonObject.get("machineConfig")); + String machineName = jsonObject.getString("machineName"); + checkMachineName(machineName); + checkMachineConfig(jsonObject.get("machineConfig"),machineName); } - if(jsonArray.size() < 2){ + if(jsonArray.size() <= 2){ throw new ServiceException(BRANCHING_SETTING_COUNT_ERROR); } @@ -136,9 +138,9 @@ public class IntellectBranchingService extends AbstractSystemConfigServiceHandle * 校验 机台分流条件 * */ - private void checkMachineConfig(Object machineConfig) { + private void checkMachineConfig(Object machineConfig,String machineName) { if (ObjectUtil.isEmpty(machineConfig)) { - throw new ServiceException(BRANCHING_SETTING_SAVE_ERROR); + throw exception(BRANCHING_SETTING_SAVE_ERROR,machineName); } }