生产单新增完成时间,配件过滤" 封边条 "类型

This commit is contained in:
liuzhaotian
2024-11-25 14:56:52 +08:00
parent 185d6ce34b
commit 5931c21034
13 changed files with 154 additions and 53 deletions
@@ -7,7 +7,6 @@ import lombok.Data;
@Data
public class OrderIds {
@@ -266,8 +266,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderDO> orderDOS = orderMapper.selectOrderPackList(orderIds, getUserOrganId());
if (ObjectUtil.isNotEmpty(orderDOS)) {
List<OrderDO> 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<OrderDO> 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<OrderDO> orderDOS = orderMapper.selectOrderList(orderIds, getUserOrganId());
if(!orderDOS.isEmpty()){
List<OrderDO> 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 {
@@ -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;
}
@@ -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;
@@ -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;
}
@@ -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<OrderPackageDO> {
List<PackRespVO> selectPackPieceCount(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
List<PlateAndPartIdList> selectOrderPack(@Param("orderId") Long orderId,@Param("organId") Long organId);
// 删除当前生产单下所有的包裹
default void updateDelete(Long orderId,Long organId) {
@@ -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<OrderItemDO> {
}
default List<OrderItemDO> selectPartsList(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId, organId)
.eqIfPresent(OrderItemDO::getOrderId, orderId)
.eq(OrderItemDO::getPackageId,0)
.select(OrderItemDO::getPartsId));
}
default List<OrderItemDO> selectPackByPlateId(List<Long> plateId,Long orderId ,Long organId) {
return selectList(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId, organId)
@@ -98,4 +88,11 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
.inIfPresent(OrderItemDO::getPlateId, plateId)
.select(OrderItemDO::getPackageId));
}
List<PlateAndPartIdList> selectOrderPackPartsIds(@Param("orderId") Long orderId, @Param("organId") Long organId);
List<PlateAndPartIdList> selectOrderPackPlateIds(@Param("orderId") Long orderId,@Param("organId") Long organId);
}
@@ -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<OrderPartsRespVO> 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<PlateAndPartIdList> plateAndPartIdLists = orderPackageMapper.selectOrderPack(orderId, getUserOrganId());
List<PlateAndPartIdList> partsIds = orderItemMapper.selectOrderPackPartsIds(orderId, getUserOrganId());
List<PlateAndPartIdList> 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<OrderItemDO> orderItemDoPartsList = orderItemMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId());
List<PlateAndPartIdList> 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);
}
@@ -110,21 +110,6 @@
</select>
<select id="selectOrderPack"
resultType="com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList">
select distinct oi.plate_id,
oi.parts_id
from order_package op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id
where op.organ_id = #{organId} and op.order_id = #{orderId} and op.deleted = false and oi.package_id = 0
</select>
<select id="selectPackListByOrderId"
resultType="com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO">
@@ -316,5 +316,33 @@
</select>
<select id="selectOrderPackPartsIds"
resultType="com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList">
select distinct oi.parts_id
from order_item oi
join order_parts op on oi.organ_id = op.organ_id and oi.order_id = op.order_id and oi.parts_id = op.id
where oi.organ_id = #{organId} and oi.order_id = #{orderId} and oi.package_id = 0 and op.type != '封边条'
</select>
<select id="selectOrderPackPlateIds"
resultType="com.cf.imes.module.manage.controller.admin.pack.vo.PlateAndPartIdList">
select distinct plate_id
from order_item
where organ_id = #{organId}
and order_id = #{orderId}
and package_id = 0
and plate_id !=0
</select>
</mapper>
@@ -17,6 +17,12 @@
<result property="brand" column="brand"/>
<result property="factory" column="factory"/>
<result property="remark" column="remark"/>
<result property="partsColor" column="partsColor"/>
<result property="partsWidth" column="partsWidth"/>
<result property="partsLength" column="partsLength"/>
<result property="partsThickness" column="partsThickness"/>
<result property="category" column="category"/>
<result property="subparts" column="subparts"/>
</resultMap>
<select id="selectParts"
@@ -37,6 +43,12 @@
op.type as type,
op.remark as remark,
op.is_composite as isComposite,
op.color as partsColor,
op.width as partsWidth,
op.length as partsLength,
op.thickness as partsThickness,
op.category as category,
op.subparts as subparts,
oi.num as num
from order_parts op
@@ -65,6 +77,12 @@
<result property="brand" column="brand"/>
<result property="factory" column="factory"/>
<result property="remark" column="remark"/>
<result property="partsColor" column="partsColor"/>
<result property="partsWidth" column="partsWidth"/>
<result property="partsLength" column="partsLength"/>
<result property="partsThickness" column="partsThickness"/>
<result property="category" column="category"/>
<result property="subparts" column="subparts"/>
</resultMap>
<select id="selectPartsList"
parameterType="java.lang.Long"
@@ -72,11 +90,26 @@
select distinct
op.id as partsId,op.name,op.model,op.spec,oi.num as num,op.unit,op.brand,op.factory,op.remark,op.type
op.id as partsId,
op.name,
op.model,
op.spec,
oi.num as num,
op.unit,
op.brand,
op.factory,
op.remark,
op.color as partsColor,
op.width as partsWidth,
op.length as partsLength,
op.thickness as partsThickness,
op.category as category,
op.subparts as subparts,
op.type
from order_parts op
left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.parts_id
where op.organ_id = #{organId} and op.order_id = #{orderId} and op.deleted = false and oi.package_id = 0
where op.organ_id = #{organId} and op.order_id = #{orderId} and op.deleted = false and op.type != '封边条' and oi.package_id = 0
</select>
@@ -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 ============
@@ -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);
}
}