/*
|
* Copyright (c) 2018-2025, ztt All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: ztt
|
*/
|
package com.chinaztt.mes.plan.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.chinaztt.mes.basic.entity.Part;
|
import com.chinaztt.mes.basic.mapper.PartMapper;
|
import com.chinaztt.mes.common.oa.OAProperty;
|
import com.chinaztt.mes.plan.dto.MoRoutingOperationDTO;
|
import com.chinaztt.mes.plan.entity.ManufacturingOrder;
|
import com.chinaztt.mes.plan.entity.MoRouting;
|
import com.chinaztt.mes.plan.entity.MoRoutingOperation;
|
import com.chinaztt.mes.plan.mapper.ManufacturingOrderMapper;
|
import com.chinaztt.mes.plan.mapper.MoRoutingMapper;
|
import com.chinaztt.mes.plan.mapper.MoRoutingOperationMapper;
|
import com.chinaztt.mes.plan.service.MoRoutingService;
|
import com.chinaztt.mes.technology.dto.RoutingDTO;
|
import com.chinaztt.mes.technology.dto.RoutingOperationDTO;
|
import com.chinaztt.mes.technology.entity.Operation;
|
import com.chinaztt.mes.technology.mapper.OperationMapper;
|
import com.chinaztt.ztt.common.core.util.R;
|
import lombok.AllArgsConstructor;
|
import org.springframework.security.core.parameters.P;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* 车间订单对应工艺路线
|
*
|
* @author xucg
|
* @date 2022-05-25 09:36:29
|
*/
|
@Service
|
@AllArgsConstructor
|
public class MoRoutingServiceImpl extends ServiceImpl<MoRoutingMapper, MoRouting> implements MoRoutingService {
|
|
private MoRoutingOperationMapper moRoutingOperationMapper;
|
private ManufacturingOrderMapper manufacturingOrderMapper;
|
private OperationMapper operationMapper;
|
private PartMapper partMapper;
|
|
/**
|
* 新增车间订单对应工艺路线主表
|
*
|
* @param routingDTO
|
* @param moId
|
* @return
|
*/
|
@Override
|
public MoRouting addMoRouting(RoutingDTO routingDTO, Long moId) {
|
Integer count = baseMapper.selectCount(Wrappers.<MoRouting>lambdaQuery().eq(MoRouting::getMoId, moId));
|
//超过一条就删除了重新添加
|
if (count > 0) {
|
baseMapper.delete(Wrappers.<MoRouting>lambdaQuery().eq(MoRouting::getMoId, moId));
|
moRoutingOperationMapper.delete(Wrappers.<MoRoutingOperation>lambdaQuery().eq(MoRoutingOperation::getMoId, moId));
|
}
|
MoRouting moRouting = new MoRouting();
|
moRouting.setTechnologyRoutingId(routingDTO.getId());
|
moRouting.setName(routingDTO.getName());
|
moRouting.setRoutingNo(routingDTO.getRoutingNo());
|
moRouting.setPartId(routingDTO.getPartId());
|
moRouting.setDescription(routingDTO.getDescription());
|
moRouting.setMaster(routingDTO.getMaster());
|
moRouting.setVersion(routingDTO.getVersion());
|
moRouting.setBomId(routingDTO.getBomId());
|
moRouting.setBomTypeDb(routingDTO.getBomTypeDb());
|
moRouting.setAlternativeNo(routingDTO.getAlternativeNo());
|
moRouting.setAlternativeDesc(routingDTO.getAlternativeDesc());
|
moRouting.setPhaseInDate(routingDTO.getPhaseInDate());
|
moRouting.setPhaseOutDate(routingDTO.getPhaseOutDate());
|
moRouting.setMoId(moId);
|
baseMapper.insert(moRouting);
|
return moRouting;
|
}
|
|
/**
|
* 新增车间订单对应工艺路线工序
|
*
|
* @param routingOperationDTO
|
* @param moRoutingId
|
* @param moId
|
* @return
|
*/
|
@Override
|
public MoRoutingOperationDTO fillMoRoutingOperation(RoutingOperationDTO routingOperationDTO, Long moRoutingId, Long moId) {
|
MoRoutingOperationDTO moRoutingOperationDTO = new MoRoutingOperationDTO();
|
moRoutingOperationDTO.setMoId(moId);
|
moRoutingOperationDTO.setMoRoutingId(moRoutingId);
|
moRoutingOperationDTO.setOperationName(routingOperationDTO.getOperationName());
|
moRoutingOperationDTO.setOperationNo(routingOperationDTO.getOperationNo());
|
moRoutingOperationDTO.setPartName(routingOperationDTO.getPartName());
|
moRoutingOperationDTO.setUnit(routingOperationDTO.getUnit());
|
moRoutingOperationDTO.setOperationId(routingOperationDTO.getOperationId());
|
moRoutingOperationDTO.setProductionCounting(routingOperationDTO.getProductionCounting());
|
moRoutingOperationDTO.setDaq(routingOperationDTO.getDaq());
|
moRoutingOperationDTO.setTechnologyRoutingOperationId(routingOperationDTO.getId());
|
moRoutingOperationDTO.setSemiFinished(routingOperationDTO.getSemiFinished());
|
moRoutingOperationDTO.setInspection(routingOperationDTO.getInspection());
|
moRoutingOperationDTO.setAutoInspection(routingOperationDTO.getAutoInspection());
|
moRoutingOperationDTO.setMaterialCost(routingOperationDTO.getMaterialCost());
|
moRoutingOperationDTO.setPartId(routingOperationDTO.getPartId());
|
moRoutingOperationDTO.setIsMaster(routingOperationDTO.getIsMaster());
|
moRoutingOperationDTO.setReserved(routingOperationDTO.getReserved());
|
moRoutingOperationDTO.setRemark(routingOperationDTO.getRemark());
|
moRoutingOperationDTO.setWorkCenter(routingOperationDTO.getWorkCenter());
|
moRoutingOperationDTO.setMachRunFactor(routingOperationDTO.getMachRunFactor());
|
moRoutingOperationDTO.setMachSetupTime(routingOperationDTO.getMachSetupTime());
|
moRoutingOperationDTO.setLaborClassNo(routingOperationDTO.getLaborClassNo());
|
moRoutingOperationDTO.setLaborRunFactor(routingOperationDTO.getLaborRunFactor());
|
moRoutingOperationDTO.setLaborSetupTime(routingOperationDTO.getLaborSetupTime());
|
moRoutingOperationDTO.setRunTimeCodeDb(routingOperationDTO.getRunTimeCodeDb());
|
moRoutingOperationDTO.setCrewSize(routingOperationDTO.getCrewSize());
|
moRoutingOperationDTO.setOperationOrder(routingOperationDTO.getOperationOrder());
|
moRoutingOperationDTO.setIsLast(routingOperationDTO.getIsLast());
|
moRoutingOperationDTO.setOutsideOpItem(routingOperationDTO.getOutsideOpItem());
|
moRoutingOperationMapper.insert(moRoutingOperationDTO);
|
return moRoutingOperationDTO;
|
}
|
|
/**
|
* 根据moId查询车间订单对应工艺路线
|
*
|
* @param id
|
* @return
|
*/
|
@Override
|
public R getMoRouting(Long id) {
|
return R.ok(baseMapper.getMoRoutinDtoByMoid(id));
|
}
|
|
/**
|
* 根据moId查询车间订单对应工艺路线工序
|
*
|
* @param moId
|
* @return
|
*/
|
@Override
|
public R getMoRoutingOption(Long moId) {
|
return R.ok(baseMapper.getMoRoutinOptionDtoByMoId(moId));
|
}
|
|
/**
|
* 删除车间订单工艺
|
*
|
* @return
|
*/
|
@Override
|
public R delMoRouting(Long id) {
|
try {
|
MoRouting moRouting = baseMapper.selectById(id);
|
ManufacturingOrder manufacturingOrder = manufacturingOrderMapper.selectById(moRouting.getMoId());
|
manufacturingOrder.setIfsRoutingOperationSync(false);
|
manufacturingOrderMapper.updateById(manufacturingOrder);
|
List<MoRoutingOperation> moRoutingOperations = moRoutingOperationMapper
|
.selectList(Wrappers.<MoRoutingOperation>lambdaQuery().eq(MoRoutingOperation::getMoRoutingId, moRouting.getId()));
|
//删除工序
|
moRoutingOperationMapper.delete(Wrappers.<MoRoutingOperation>lambdaQuery()
|
.eq(MoRoutingOperation::getMoRoutingId, moRouting.getId()));
|
//删除自己
|
baseMapper.deleteById(id);
|
return R.ok();
|
} catch (Exception e) {
|
return R.failed("车间订单工艺删除错误");
|
}
|
}
|
|
/**
|
* 修改车间订单工艺
|
*
|
* @return
|
*/
|
@Override
|
public R updateMoRouting(MoRouting moRouting) {
|
try {
|
ManufacturingOrder manufacturingOrder = manufacturingOrderMapper.selectById(moRouting.getMoId());
|
manufacturingOrder.setIfsRoutingOperationSync(false);
|
manufacturingOrderMapper.updateById(manufacturingOrder);
|
baseMapper.updateById(moRouting);
|
return R.ok();
|
} catch (Exception e) {
|
return R.failed("车间订单工艺修改错误");
|
}
|
}
|
|
/**
|
* 删除车间订单工艺工序
|
*
|
* @param id
|
* @return
|
*/
|
@Override
|
public R delMoRoutingOperation(Long id) {
|
try {
|
List<Long> opIds = moRoutingOperationMapper.getOperationTaskCount(id);
|
if (CollectionUtil.isNotEmpty(opIds)) {
|
return R.failed("当前工序已存在工单不可删除");
|
}
|
MoRoutingOperation moRoutingOperation = moRoutingOperationMapper.selectById(id);
|
ManufacturingOrder manufacturingOrder = manufacturingOrderMapper.selectById(moRoutingOperation.getMoId());
|
manufacturingOrder.setIfsRoutingOperationSync(false);
|
manufacturingOrderMapper.updateById(manufacturingOrder);
|
//删除工序
|
moRoutingOperationMapper.deleteById(id);
|
return R.ok();
|
} catch (Exception e) {
|
return R.failed("车间订单工艺工序删除错误");
|
}
|
}
|
|
/**
|
* 修改车间订单工艺工序
|
*
|
* @param moRoutingOperation
|
* @return
|
*/
|
@Override
|
public R updateMoRoutingOperation(MoRoutingOperation moRoutingOperation) {
|
try {
|
ManufacturingOrder manufacturingOrder = manufacturingOrderMapper.selectById(moRoutingOperation.getMoId());
|
manufacturingOrder.setIfsRoutingOperationSync(false);
|
manufacturingOrderMapper.updateById(manufacturingOrder);
|
moRoutingOperationMapper.updateById(moRoutingOperation);
|
return R.ok();
|
} catch (Exception e) {
|
return R.failed("车间订单工艺工序修改错误");
|
}
|
}
|
|
/**
|
* 修改车间订单工艺工序
|
*
|
* @param moRoutingOperationDTO
|
* @return
|
*/
|
@Override
|
public MoRoutingOperationDTO addMoRoutingOperation(MoRoutingOperationDTO moRoutingOperationDTO) {
|
if (moRoutingOperationDTO.getMoId() == null) {
|
throw new RuntimeException("缺少车间订单id");
|
}
|
if (moRoutingOperationDTO.getPartId() == null) {
|
throw new RuntimeException("缺少零件");
|
}
|
if (moRoutingOperationDTO.getOperationId() == null) {
|
throw new RuntimeException("缺少工序");
|
}
|
MoRouting moRouting = baseMapper.selectOne(Wrappers.<MoRouting>lambdaQuery().eq(MoRouting::getMoId, moRoutingOperationDTO.getMoId()));
|
if (null == moRouting) {
|
throw new RuntimeException("缺少车间订单工序");
|
}
|
Operation operation = operationMapper.selectById(moRoutingOperationDTO.getPartId());
|
if (operation == null) {
|
throw new RuntimeException("工序丢失");
|
}
|
Part part = partMapper.selectById(moRoutingOperationDTO.getPartId());
|
if (part == null) {
|
throw new RuntimeException("零件丢失");
|
}
|
doSave(moRoutingOperationDTO, operation, moRouting);
|
moRoutingOperationMapper.insert(moRoutingOperationDTO);
|
return moRoutingOperationMapper.getDtoById(moRoutingOperationDTO.getId());
|
}
|
|
private void doSave(MoRoutingOperationDTO moRoutingOperationDTO, Operation operation, MoRouting moRouting) {
|
moRoutingOperationDTO.setMoRoutingId(moRouting.getId());
|
moRoutingOperationDTO.setProductionCounting(operation.getProductionCounting());
|
moRoutingOperationDTO.setDaq(operation.getDaq());
|
moRoutingOperationDTO.setSemiFinished(operation.getSemiFinished());
|
moRoutingOperationDTO.setInspection(operation.getInspection());
|
moRoutingOperationDTO.setAutoInspection(operation.getAutoInspection());
|
moRoutingOperationDTO.setMaterialCost(operation.getMaterialCost());
|
|
|
// /**
|
// * 是否成品工序
|
// */
|
// @ApiModelProperty(value = "是否成品工序")
|
// moRoutingOperationDTO. ;
|
//
|
//
|
// moRoutingOperationDTO.setWorkCenter(operation.getWorkCenter());
|
// moRoutingOperationDTO.setMachSetupTime(operation.getMachSetupTime());
|
// moRoutingOperationDTO.setMachRunFactor(operation.getMachRunFactor());
|
// moRoutingOperationDTO.setLaborClassNo(operation.getLaborClassNo());
|
// moRoutingOperationDTO.setLaborRunFactor(operation.getLaborRunFactor());
|
// moRoutingOperationDTO.setLaborSetupTime(operation.getLaborSetupTime());
|
// moRoutingOperationDTO.setRunTimeCodeDb(operation.getRunTimeCodeDb());
|
// moRoutingOperationDTO.setCrewSize(operation.getCrewSize());
|
//
|
// /**
|
// * 工序序号
|
// */
|
// @ApiModelProperty(value = "工序序号")
|
// private Integer operationOrder;
|
// /**
|
// * 是否最终工序
|
// */
|
// @ApiModelProperty(value = "是否最终工序")
|
// moRoutingOperationDTO.isLast ;
|
|
}
|
|
}
|