package com.chinaztt.mes.production.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaztt.mes.production.dto.UnitWorkDTO; import com.chinaztt.mes.production.entity.UnitWork; import com.chinaztt.mes.production.mapper.UnitWorkMapper; import com.chinaztt.mes.production.service.UnitWorkService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * 单位工时系数 * * @author yy * @date 2022-12-02 10:48:37 */ @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class UnitWorkServiceImpl extends ServiceImpl implements UnitWorkService { private final static BigDecimal param = new BigDecimal("1.5"); @Override public IPage> getUnitWorkPage(Page page, QueryWrapper gen) { return baseMapper.getUnitWorkPage(page,gen); } @Override public UnitWorkDTO getUnitWorkById(Long id) { return baseMapper.getUnitWorkById(id); } @Override public Boolean saveUnitWork(UnitWork unitWork) { checkNull(unitWork); if (unitWork.getOperationId() == null) { UnitWork unitWorkBySelect = baseMapper.selectOne(Wrappers.lambdaQuery() .isNull(UnitWork::getOperationId) .eq(UnitWork::getPartId, unitWork.getPartId()) .eq(UnitWork::getWorkstationId, unitWork.getWorkstationId())); if(unitWorkBySelect!=null){ throw new RuntimeException("已根据机台+零件号维护定额值"); } } else { UnitWork unitWorkBySelect = baseMapper.selectOne(Wrappers.lambdaQuery() .eq(UnitWork::getOperationId, unitWork.getOperationId()) .eq(UnitWork::getPartId, unitWork.getPartId()) .eq(UnitWork::getWorkstationId, unitWork.getWorkstationId())); if(unitWorkBySelect!=null){ throw new RuntimeException("已根据工序+机台+零件号维护定额值"); } } BigDecimal unitWorkFactor = param.divide(unitWork.getQuota(), 5, RoundingMode.HALF_UP); unitWork.setUnitWorkFactor(unitWorkFactor); save(unitWork); return true; } public void checkNull(UnitWork unitWork){ if(unitWork.getWorkstationId()==null || unitWork.getPartId()==null || unitWork.getQuota()==null){ throw new RuntimeException("机台,零件,定额不能为空"); } } @Override public Boolean updateUnitWork(UnitWork unitWork) { checkNull(unitWork); if (unitWork.getOperationId() == null) { UnitWork unitWorkBySelect = baseMapper.selectOne(Wrappers.lambdaQuery() .isNull(UnitWork::getOperationId) .eq(UnitWork::getPartId, unitWork.getPartId()) .eq(UnitWork::getWorkstationId, unitWork.getWorkstationId()) .ne(UnitWork::getId,unitWork.getId())); if(unitWorkBySelect!=null){ throw new RuntimeException("已根据机台+零件号维护定额值"); } } else { UnitWork unitWorkBySelect = baseMapper.selectOne(Wrappers.lambdaQuery() .eq(UnitWork::getOperationId, unitWork.getOperationId()) .eq(UnitWork::getPartId, unitWork.getPartId()) .eq(UnitWork::getWorkstationId, unitWork.getWorkstationId()) .ne(UnitWork::getId,unitWork.getId())); if (unitWorkBySelect != null) { throw new RuntimeException("已根据工序+机台+零件号维护定额值"); } } BigDecimal unitWorkFactor = param.divide(unitWork.getQuota(), 5, RoundingMode.HALF_UP); unitWork.setUnitWorkFactor(unitWorkFactor); updateById(unitWork); return true; } @Override public Boolean updateQuota(UnitWorkDTO unitWorkDTO) { List unitWorkList = new ArrayList<>(); BigDecimal unitWorkFactor = param.divide(unitWorkDTO.getQuota(), 5, RoundingMode.HALF_UP); for (Long id:unitWorkDTO.getIdList()) { UnitWork unitWork = new UnitWork(); unitWork.setId(id); unitWork.setUnitWorkFactor(unitWorkFactor); unitWork.setQuota(unitWorkDTO.getQuota()); unitWorkList.add(unitWork); } this.updateBatchById(unitWorkList); return true; } }