update 工序关联工序资源维护

master
yinq 4 weeks ago
parent b52e617349
commit 3bb2eeb8ec

@ -12,7 +12,7 @@ import java.util.List;
* prod_base_process_info * prod_base_process_info
* *
* @author Yinq * @author Yinq
* @date 2025-01-06 * @date 2025-05-29
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -44,7 +44,7 @@ public class ProdBaseProcessInfo extends TenantEntity {
private String processType; private String processType;
/** /**
* *
*/ */
private Long processQueue; private Long processQueue;
@ -53,22 +53,87 @@ public class ProdBaseProcessInfo extends TenantEntity {
*/ */
private Long productionTime; private Long productionTime;
/**
* ID
*/
private Long workshopId;
/**
* 1 2
*/
private String outsourcingFlag;
/**
* 1 2 3
*/
private String processProductionType;
/**
* %/
*/
private Long defaultYieldRate;
/**
* %/
*/
private Long lossRate;
/**
* %/
*/
private Long reworkRate;
/**
* 1 2 3
*/
private String materialMethod;
/**
*
*/
private Long leadTime;
/**
*
*/
private Long setupTime;
/**
*
*/
private Long processingTime;
/**
*
*/
private Long disassemblyTime;
/**
* /
*/
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
private String inspectionMethod;
/** /**
* (1 0) * (1 0)
*/ */
private String activeFlag; private String activeFlag;
/**
*
*/
private String remark;
/** /**
* 0 2 * 0 2
*/ */
@TableLogic @TableLogic
private String delFlag; private String delFlag;
/**
*
*/
private String remark;
/** /**
* 线 * 线
*/ */
@ -82,5 +147,15 @@ public class ProdBaseProcessInfo extends TenantEntity {
@TableField(exist = false) @TableField(exist = false)
private String processPercentage;//映射字段 private String processPercentage;//映射字段
/**
*
*/
@TableField(exist = false)
private String workshopName;
/**
* List
*/
@TableField(exist = false)
List<ProdBaseProcessResource> prodBaseProcessResourceList;
} }

@ -0,0 +1,71 @@
package org.dromara.mes.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* prod_base_process_resource
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("prod_base_process_resource")
public class ProdBaseProcessResource extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "process_resource_id", type = IdType.AUTO)
private Long processResourceId;
/**
* ID
*/
private Long processId;
/**
* 1 2 3 4
*/
private String assignmentType;
/**
*
*/
private String toolingTypeCode;
/**
* 0 1
*/
private String requiredFlag;
/**
* 0 1
*/
private String selectionMode;
/**
* 0 1
*/
private String requiresValidation;
/**
* 0 1
*/
private String requiresPreparation;
/**
*
*/
private String remark;
}

@ -1,6 +1,5 @@
package org.dromara.mes.domain.bo; package org.dromara.mes.domain.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo; import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
@ -9,8 +8,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.dromara.mes.domain.ProdBaseProcessProdLine; import org.dromara.mes.domain.ProdBaseProcessResource;
import org.dromara.mes.domain.ProdBaseProcessUser;
import java.util.List; import java.util.List;
@ -18,7 +16,7 @@ import java.util.List;
* prod_base_process_info * prod_base_process_info
* *
* @author Yinq * @author Yinq
* @date 2025-01-06 * @date 2025-05-29
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -33,23 +31,23 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
/** /**
* *
*/ */
@NotBlank(message = "工序编号不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "工序编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String processCode; private String processCode;
/** /**
* *
*/ */
@NotBlank(message = "工序名称不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "工序名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String processName; private String processName;
/** /**
* * 1 2
*/ */
@NotBlank(message = "工序类别不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "工序类别1生产工序 2质检工序不能为空", groups = { AddGroup.class, EditGroup.class })
private String processType; private String processType;
/** /**
* *
*/ */
private Long processQueue; private Long processQueue;
@ -58,10 +56,75 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
*/ */
private Long productionTime; private Long productionTime;
/**
* ID
*/
private Long workshopId;
/**
* 1 2
*/
private String outsourcingFlag;
/**
* 1 2 3
*/
private String processProductionType;
/**
* %/
*/
private Long defaultYieldRate;
/**
* %/
*/
private Long lossRate;
/**
* %/
*/
private Long reworkRate;
/**
* 1 2 3
*/
private String materialMethod;
/**
*
*/
private Long leadTime;
/**
*
*/
private Long setupTime;
/**
*
*/
private Long processingTime;
/**
*
*/
private Long disassemblyTime;
/**
* /
*/
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
private String inspectionMethod;
/** /**
* (1 0) * (1 0)
*/ */
@NotBlank(message = "激活标识", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
private String activeFlag; private String activeFlag;
/** /**
@ -69,7 +132,6 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
*/ */
private String remark; private String remark;
/** /**
* 线 * 线
*/ */
@ -80,4 +142,8 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
private String processPercentageBo;//映射字段 private String processPercentageBo;//映射字段
/**
* List
*/
List<ProdBaseProcessResource> prodBaseProcessResourceList;
} }

@ -0,0 +1,69 @@
package org.dromara.mes.domain.bo;
import org.dromara.mes.domain.ProdBaseProcessResource;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* prod_base_process_resource
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProdBaseProcessResource.class, reverseConvertGenerate = false)
public class ProdBaseProcessResourceBo extends BaseEntity {
/**
*
*/
private Long processResourceId;
/**
* ID
*/
private Long processId;
/**
* 1 2 3 4
*/
private String assignmentType;
/**
*
*/
private String toolingTypeCode;
/**
* 0 1
*/
private String requiredFlag;
/**
* 0 1
*/
private String selectionMode;
/**
* 0 1
*/
private String requiresValidation;
/**
* 0 1
*/
private String requiresPreparation;
/**
*
*/
private String remark;
}

@ -1,7 +1,6 @@
package org.dromara.mes.domain.vo; package org.dromara.mes.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo; import org.dromara.mes.domain.ProdBaseProcessInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
@ -9,12 +8,10 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.mes.domain.ProdBaseProcessProdLine; import org.dromara.mes.domain.ProdBaseProcessResource;
import org.dromara.mes.domain.ProdBaseProcessUser;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
@ -22,7 +19,7 @@ import java.util.List;
* prod_base_process_info * prod_base_process_info
* *
* @author Yinq * @author Yinq
* @date 2025-01-06 * @date 2025-05-29
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ -38,12 +35,6 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "主键标识") @ExcelProperty(value = "主键标识")
private Long processId; private Long processId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/** /**
* *
*/ */
@ -64,9 +55,10 @@ public class ProdBaseProcessInfoVo implements Serializable {
private String processType; private String processType;
/** /**
* *
*/ */
@ExcelProperty(value = "工序顺序") @ExcelProperty(value = "工序顺序", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "弃=用")
private Long processQueue; private Long processQueue;
/** /**
@ -76,6 +68,96 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelDictFormat(readConverterExp = "秒=") @ExcelDictFormat(readConverterExp = "秒=")
private Long productionTime; private Long productionTime;
/**
* ID
*/
@ExcelProperty(value = "车间ID")
private Long workshopId;
/**
* 1 2
*/
@ExcelProperty(value = "委外标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_outsourcing_flag")
private String outsourcingFlag;
/**
* 1 2 3
*/
@ExcelProperty(value = "工序生产类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_process_production_type")
private String processProductionType;
/**
* %/
*/
@ExcelProperty(value = "默认产出率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long defaultYieldRate;
/**
* %/
*/
@ExcelProperty(value = "损耗率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long lossRate;
/**
* %/
*/
@ExcelProperty(value = "返修率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long reworkRate;
/**
* 1 2 3
*/
@ExcelProperty(value = "领料方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_material_method")
private String materialMethod;
/**
*
*/
@ExcelProperty(value = "委外提前期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long leadTime;
/**
*
*/
@ExcelProperty(value = "准备时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long setupTime;
/**
*
*/
@ExcelProperty(value = "加工时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long processingTime;
/**
*
*/
@ExcelProperty(value = "拆卸时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long disassemblyTime;
/**
* /
*/
@ExcelProperty(value = "理论生产节拍", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=/件")
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
@ExcelProperty(value = "质检方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_inspection_method")
private String inspectionMethod;
/** /**
* (1 0) * (1 0)
*/ */
@ -89,36 +171,6 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
/** /**
* 线 * 线
*/ */
@ -132,4 +184,13 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelIgnore @ExcelIgnore
private String processPercentageVo;//映射字段 private String processPercentageVo;//映射字段
/**
*
*/
private String workshopName;
/**
* List
*/
List<ProdBaseProcessResource> prodBaseProcessResourceList;
} }

@ -0,0 +1,91 @@
package org.dromara.mes.domain.vo;
import org.dromara.mes.domain.ProdBaseProcessResource;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* prod_base_process_resource
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdBaseProcessResource.class)
public class ProdBaseProcessResourceVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long processResourceId;
/**
* ID
*/
private Long processId;
/**
* 1 2 3 4
*/
@ExcelProperty(value = "指派类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_assignment_type")
private String assignmentType;
/**
*
*/
@ExcelProperty(value = "载具工装类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "tooling_type_code")
private String toolingTypeCode;
/**
* 0 1
*/
@ExcelProperty(value = "必选标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_required_flag")
private String requiredFlag;
/**
* 0 1
*/
@ExcelProperty(value = "选择模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_selection_mode")
private String selectionMode;
/**
* 0 1
*/
@ExcelProperty(value = "是否需要校验", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_requires_validation")
private String requiresValidation;
/**
* 0 1
*/
@ExcelProperty(value = "是否需要准备任务", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_requires_preparation")
private String requiresPreparation;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
}

@ -0,0 +1,15 @@
package org.dromara.mes.mapper;
import org.dromara.mes.domain.ProdBaseProcessResource;
import org.dromara.mes.domain.vo.ProdBaseProcessResourceVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yinq
* @date 2025-05-29
*/
public interface ProdBaseProcessResourceMapper extends BaseMapperPlus<ProdBaseProcessResource, ProdBaseProcessResourceVo> {
}

@ -12,26 +12,23 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.mes.domain.ProdBaseProcessProdLine; import org.dromara.mes.domain.*;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo; import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo; import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo; import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo; import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper; import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
import org.dromara.mes.mapper.ProdBaseProcessResourceMapper;
import org.dromara.mes.mapper.ProdBaseProcessUserMapper; import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo; import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo; import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.mes.mapper.ProdBaseProcessInfoMapper; import org.dromara.mes.mapper.ProdBaseProcessInfoMapper;
import org.dromara.mes.service.IProdBaseProcessInfoService; import org.dromara.mes.service.IProdBaseProcessInfoService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
import java.util.Collection;
/** /**
* Service * Service
@ -52,7 +49,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private final ProdBaseProcessUserMapper prodBaseProcessUserMapper; private final ProdBaseProcessUserMapper prodBaseProcessUserMapper;
private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper; private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper;
private final ProdBaseProcessResourceMapper processResourceMapper;
/** /**
@ -62,7 +59,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @return * @return
*/ */
@Override @Override
public ProdBaseProcessInfoVo queryById(Long processId){ public ProdBaseProcessInfoVo queryById(Long processId) {
ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId); ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId);
if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) { if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) {
// 关联人员 // 关联人员
@ -70,14 +67,21 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
prodBaseProcessUserBo.setProcessId(processId); prodBaseProcessUserBo.setProcessId(processId);
List<ProdBaseProcessUserVo> prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo); List<ProdBaseProcessUserVo> prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo);
// 关联人员若有数据则赋值给prodBaseProcessInfoVo // 关联人员若有数据则赋值给prodBaseProcessInfoVo
if(ObjectUtil.isNotEmpty(prodBaseProcessUserVoList)) prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList); if (ObjectUtil.isNotEmpty(prodBaseProcessUserVoList))
prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList);
// 关联产线 // 关联产线
ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo(); ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo();
prodBaseProcessProdlineBo.setProcessId(processId); prodBaseProcessProdlineBo.setProcessId(processId);
List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo); List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo);
// 关联产线若有数据则赋值给prodBaseProcessInfoVo // 关联产线若有数据则赋值给prodBaseProcessInfoVo
if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineVoList)) prodBaseProcessInfoVo.setProdBaseProcessProdlineVoList(prodBaseProcessProdlineVoList); if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineVoList))
prodBaseProcessInfoVo.setProdBaseProcessProdlineVoList(prodBaseProcessProdlineVoList);
// 关联工序资源
MPJLambdaWrapper<ProdBaseProcessResource> lqw = JoinWrappers.lambda(ProdBaseProcessResource.class);
lqw.eq(ProdBaseProcessResource::getProcessId, processId);
List<ProdBaseProcessResource> prodBaseProcessResourceList = processResourceMapper.selectList(lqw);
prodBaseProcessInfoVo.setProdBaseProcessResourceList(prodBaseProcessResourceList);
} }
return prodBaseProcessInfoVo; return prodBaseProcessInfoVo;
} }
@ -111,26 +115,24 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private MPJLambdaWrapper<ProdBaseProcessInfo> buildQueryWrapper(ProdBaseProcessInfoBo bo) { private MPJLambdaWrapper<ProdBaseProcessInfo> buildQueryWrapper(ProdBaseProcessInfoBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class) MPJLambdaWrapper<ProdBaseProcessInfo> lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class)
.selectAll(ProdBaseProcessInfo.class) .selectAll(ProdBaseProcessInfo.class)
.select(ProdBaseWorkshopInfo::getWorkshopName)
.leftJoin(ProdBaseWorkshopInfo.class, ProdBaseWorkshopInfo::getWorkshopId, ProdBaseProcessInfo::getWorkshopId)
/* // 关联人员 /* // 关联人员
.select(ProdBaseProcessUser::getUserId) .select(ProdBaseProcessUser::getUserId)
.select(ProdBaseProcessUser::getUserName) .select(ProdBaseProcessUser::getUserName)
.leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId) .leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId)
// 关联产线 // 关联产线
.select(ProdBaseProcessProdLine::getProdLineId) .select(ProdBaseProcessProdLine::getProdLineId)
.leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/ .leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode())
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId()) .like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode()) .eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType())
.like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName()) .eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue())
.eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType()) .eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime())
.eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag())
.eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime()) .orderByAsc(ProdBaseProcessInfo::getProcessQueue);
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ProdBaseProcessInfo::getProcessQueue);
return lqw; return lqw;
} }
@ -143,10 +145,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
@Override @Override
public Boolean insertByBo(ProdBaseProcessInfoBo bo) { public Boolean insertByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo add = MapstructUtils.convert(bo, ProdBaseProcessInfo.class); ProdBaseProcessInfo add = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setProcessId(add.getProcessId()); bo.setProcessId(add.getProcessId());
if (!processResourceList.isEmpty()) {
for (ProdBaseProcessResource processResource : processResourceList) {
processResource.setProcessId(add.getProcessId());
processResourceMapper.insert(processResource);
}
}
} }
return flag; return flag;
} }
@ -157,34 +166,49 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @param bo * @param bo
* @return * @return
*/ */
@Transactional
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ProdBaseProcessInfoBo bo) { public Boolean updateByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class); ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
// String tenantId = LoginHelper.getTenantId();
String tenantId = LoginHelper.getTenantId(); // Long deptId = LoginHelper.getDeptId();
Long deptId = LoginHelper.getDeptId(); // Long userId = LoginHelper.getUserId();
Long userId = LoginHelper.getUserId(); // if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);
if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId); // if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);
if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId); // if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId); // update.setCreateTime(DateUtils.getNowDate());
update.setCreateTime(DateUtils.getNowDate());
validEntityBeforeSave(update); validEntityBeforeSave(update);
List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = new ArrayList<>();
List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList(); List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)){ if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)) {
prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class); List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList); update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
} }
baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId()); baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
try { try {
insertProdBaseProcessProdline(update); insertProdBaseProcessProdline(update);
}catch (Exception e){ } catch (Exception e) {
throw new ServiceException("该工序已关联产线!"); throw new ServiceException("该工序已关联产线!");
} }
//更新工序关联资源
List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
MPJLambdaWrapper<ProdBaseProcessResource> lqwRecord = JoinWrappers.lambda(ProdBaseProcessResource.class);
lqwRecord.eq(ProdBaseProcessResource::getProcessId, bo.getProcessId());
List<ProdBaseProcessResource> dataFieldList = processResourceMapper.selectList(lqwRecord);
if (!processResourceList.isEmpty()) {
for (ProdBaseProcessResource dataField : processResourceList) {
processResourceMapper.insertOrUpdate(dataField);
}
Set<Long> existingIds = processResourceList.stream()
.map(ProdBaseProcessResource::getProcessResourceId)
.collect(Collectors.toSet());
List<ProdBaseProcessResource> filteredIds = dataFieldList.stream()
.filter(field -> !existingIds.contains(field.getProcessResourceId()))
.toList();
for (ProdBaseProcessResource dataField : filteredIds) {
processResourceMapper.deleteById(dataField.getProcessResourceId());
}
}
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -211,14 +235,14 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
List<ProdBaseProcessUser> prodBaseProcessUserList = new ArrayList<>(); List<ProdBaseProcessUser> prodBaseProcessUserList = new ArrayList<>();
List<ProdBaseProcessUserBo> prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList(); List<ProdBaseProcessUserBo> prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList();
if(ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)){ if (ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)) {
prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class); prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class);
} }
baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId()); baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId());
update.setProdBaseProcessUserList(prodBaseProcessUserList); update.setProdBaseProcessUserList(prodBaseProcessUserList);
try { try {
insertProdBaseProcessUser(update); insertProdBaseProcessUser(update);
}catch (Exception e){ } catch (Exception e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
throw new ServiceException("该工序已关联用户!"); throw new ServiceException("该工序已关联用户!");
} }
@ -226,18 +250,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
} }
/** /**
* *
*/ */
private void validEntityBeforeSave(ProdBaseProcessInfo entity){ private void validEntityBeforeSave(ProdBaseProcessInfo entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
// 判断编码是否重复 // 判断编码是否重复
if (StringUtils.isNotBlank(entity.getProcessCode())) { if (StringUtils.isNotBlank(entity.getProcessCode())) {
ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo(); ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo();
query.setProcessCode(entity.getProcessCode()); query.setProcessCode(entity.getProcessCode());
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(query); MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(query);
ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw); ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw);
if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) { if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) {
throw new ServiceException("编码已存在"); throw new ServiceException("编码已存在");
} }
@ -253,7 +276,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
@ -279,32 +302,32 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
if (!list.isEmpty()) { if (!list.isEmpty()) {
prodBaseProcessProdlineMapper.insertBatch(list); prodBaseProcessProdlineMapper.insertBatch(list);
} }
}
}
/**
*
*
* @param prodBaseProcessInfo
*/
public void insertProdBaseProcessUser(ProdBaseProcessInfo prodBaseProcessInfo) {
List<ProdBaseProcessUser> prodBaseProcessUserList = prodBaseProcessInfo.getProdBaseProcessUserList();
Long processId = prodBaseProcessInfo.getProcessId();
if (ObjectUtil.isNotNull(prodBaseProcessUserList)) {
List<ProdBaseProcessUser> list = new ArrayList<ProdBaseProcessUser>();
for (ProdBaseProcessUser prodBaseProcessUser : prodBaseProcessUserList) {
prodBaseProcessUser.setCreateBy(prodBaseProcessInfo.getCreateBy());
prodBaseProcessUser.setCreateTime(prodBaseProcessInfo.getCreateTime());
prodBaseProcessUser.setCreateDept(prodBaseProcessInfo.getCreateDept());
prodBaseProcessUser.setTenantId(prodBaseProcessInfo.getTenantId());
list.add(prodBaseProcessUser);
}
if (!list.isEmpty()) {
prodBaseProcessUserMapper.insertBatch(list);
} }
} }
/** }
*
*
* @param prodBaseProcessInfo
*/
public void insertProdBaseProcessUser(ProdBaseProcessInfo prodBaseProcessInfo) {
List<ProdBaseProcessUser> prodBaseProcessUserList = prodBaseProcessInfo.getProdBaseProcessUserList();
Long processId = prodBaseProcessInfo.getProcessId();
if (ObjectUtil.isNotNull(prodBaseProcessUserList)) {
List<ProdBaseProcessUser> list = new ArrayList<ProdBaseProcessUser>();
for (ProdBaseProcessUser prodBaseProcessUser : prodBaseProcessUserList) {
prodBaseProcessUser.setCreateBy(prodBaseProcessInfo.getCreateBy());
prodBaseProcessUser.setCreateTime(prodBaseProcessInfo.getCreateTime());
prodBaseProcessUser.setCreateDept(prodBaseProcessInfo.getCreateDept());
prodBaseProcessUser.setTenantId(prodBaseProcessInfo.getTenantId());
list.add(prodBaseProcessUser);
}
if (!list.isEmpty()) {
prodBaseProcessUserMapper.insertBatch(list);
}
}
}
} }

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mes.mapper.ProdBaseProcessResourceMapper">
</mapper>
Loading…
Cancel
Save