update 工序关联工序资源维护

master
yinq 4 weeks ago
parent b52e617349
commit 3bb2eeb8ec

@ -12,7 +12,7 @@ import java.util.List;
* prod_base_process_info
*
* @author Yinq
* @date 2025-01-06
* @date 2025-05-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -44,7 +44,7 @@ public class ProdBaseProcessInfo extends TenantEntity {
private String processType;
/**
*
*
*/
private Long processQueue;
@ -53,22 +53,87 @@ public class ProdBaseProcessInfo extends TenantEntity {
*/
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)
*/
private String activeFlag;
/**
*
*/
private String remark;
/**
* 0 2
*/
@TableLogic
private String delFlag;
/**
*
*/
private String remark;
/**
* 线
*/
@ -82,5 +147,15 @@ public class ProdBaseProcessInfo extends TenantEntity {
@TableField(exist = false)
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;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -9,8 +8,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.ProdBaseProcessResource;
import java.util.List;
@ -18,7 +16,7 @@ import java.util.List;
* prod_base_process_info
*
* @author Yinq
* @date 2025-01-06
* @date 2025-05-29
*/
@Data
@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;
/**
*
*/
@NotBlank(message = "工序名称不能为空", groups = {AddGroup.class, EditGroup.class})
@NotBlank(message = "工序名称不能为空", groups = { AddGroup.class, EditGroup.class })
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 Long processQueue;
@ -58,10 +56,75 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
*/
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)
*/
@NotBlank(message = "激活标识", groups = {AddGroup.class, EditGroup.class})
@NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
private String activeFlag;
/**
@ -69,7 +132,6 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
*/
private String remark;
/**
* 线
*/
@ -80,4 +142,8 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
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;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.ProdBaseProcessResource;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@ -22,7 +19,7 @@ import java.util.List;
* prod_base_process_info
*
* @author Yinq
* @date 2025-01-06
* @date 2025-05-29
*/
@Data
@ExcelIgnoreUnannotated
@ -38,12 +35,6 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "主键标识")
private Long processId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ -64,9 +55,10 @@ public class ProdBaseProcessInfoVo implements Serializable {
private String processType;
/**
*
*
*/
@ExcelProperty(value = "工序顺序")
@ExcelProperty(value = "工序顺序", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "弃=用")
private Long processQueue;
/**
@ -76,6 +68,96 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelDictFormat(readConverterExp = "秒=")
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)
*/
@ -89,36 +171,6 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "备注")
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
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 lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.*;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
import org.dromara.mes.mapper.ProdBaseProcessResourceMapper;
import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.mes.mapper.ProdBaseProcessInfoMapper;
import org.dromara.mes.service.IProdBaseProcessInfoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
* Service
@ -52,7 +49,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private final ProdBaseProcessUserMapper prodBaseProcessUserMapper;
private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper;
private final ProdBaseProcessResourceMapper processResourceMapper;
/**
@ -62,7 +59,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @return
*/
@Override
public ProdBaseProcessInfoVo queryById(Long processId){
public ProdBaseProcessInfoVo queryById(Long processId) {
ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId);
if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) {
// 关联人员
@ -70,14 +67,21 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
prodBaseProcessUserBo.setProcessId(processId);
List<ProdBaseProcessUserVo> prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo);
// 关联人员若有数据则赋值给prodBaseProcessInfoVo
if(ObjectUtil.isNotEmpty(prodBaseProcessUserVoList)) prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList);
if (ObjectUtil.isNotEmpty(prodBaseProcessUserVoList))
prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList);
// 关联产线
ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo();
prodBaseProcessProdlineBo.setProcessId(processId);
List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo);
// 关联产线若有数据则赋值给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;
}
@ -111,26 +115,24 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private MPJLambdaWrapper<ProdBaseProcessInfo> buildQueryWrapper(ProdBaseProcessInfoBo bo) {
Map<String, Object> params = bo.getParams();
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::getUserName)
.leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId)
// 关联产线
.select(ProdBaseProcessProdLine::getProdLineId)
.leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode())
.like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName())
.eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType())
.eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue())
.eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ProdBaseProcessInfo::getProcessQueue);
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode())
.like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName())
.eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType())
.eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue())
.eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ProdBaseProcessInfo::getProcessQueue);
return lqw;
}
@ -143,10 +145,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
@Override
public Boolean insertByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo add = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProcessId(add.getProcessId());
if (!processResourceList.isEmpty()) {
for (ProdBaseProcessResource processResource : processResourceList) {
processResource.setProcessId(add.getProcessId());
processResourceMapper.insert(processResource);
}
}
}
return flag;
}
@ -157,34 +166,49 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @param bo
* @return
*/
@Transactional
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
String tenantId = LoginHelper.getTenantId();
Long deptId = LoginHelper.getDeptId();
Long userId = LoginHelper.getUserId();
if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);
if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);
if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
update.setCreateTime(DateUtils.getNowDate());
// String tenantId = LoginHelper.getTenantId();
// Long deptId = LoginHelper.getDeptId();
// Long userId = LoginHelper.getUserId();
// if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);
// if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);
// if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
// update.setCreateTime(DateUtils.getNowDate());
validEntityBeforeSave(update);
List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = new ArrayList<>();
List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)){
prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)) {
List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
}
baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
try {
insertProdBaseProcessProdline(update);
}catch (Exception e){
} catch (Exception e) {
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;
}
@ -211,14 +235,14 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
List<ProdBaseProcessUser> prodBaseProcessUserList = new ArrayList<>();
List<ProdBaseProcessUserBo> prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList();
if(ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)){
if (ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)) {
prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class);
}
baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId());
update.setProdBaseProcessUserList(prodBaseProcessUserList);
try {
insertProdBaseProcessUser(update);
}catch (Exception e){
} catch (Exception e) {
System.out.println(e.getMessage());
throw new ServiceException("该工序已关联用户!");
}
@ -226,18 +250,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
}
/**
*
*/
private void validEntityBeforeSave(ProdBaseProcessInfo entity){
private void validEntityBeforeSave(ProdBaseProcessInfo entity) {
//TODO 做一些数据校验,如唯一约束
// 判断编码是否重复
if (StringUtils.isNotBlank(entity.getProcessCode())) {
ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo();
query.setProcessCode(entity.getProcessCode());
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(query);
ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw);
ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw);
if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) {
throw new ServiceException("编码已存在");
}
@ -253,7 +276,7 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
@ -279,32 +302,32 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
if (!list.isEmpty()) {
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