/* * 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 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.lambdaQuery().eq(MoRouting::getMoId, moId)); //超过一条就删除了重新添加 if (count > 0) { baseMapper.delete(Wrappers.lambdaQuery().eq(MoRouting::getMoId, moId)); moRoutingOperationMapper.delete(Wrappers.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 moRoutingOperations = moRoutingOperationMapper .selectList(Wrappers.lambdaQuery().eq(MoRoutingOperation::getMoRoutingId, moRouting.getId())); //删除工序 moRoutingOperationMapper.delete(Wrappers.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 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.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 ; } }