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<UnitWorkMapper, UnitWork> implements UnitWorkService {
|
|
private final static BigDecimal param = new BigDecimal("1.5");
|
|
|
@Override
|
public IPage<List<UnitWorkDTO>> getUnitWorkPage(Page page, QueryWrapper<UnitWorkDTO> 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.<UnitWork>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.<UnitWork>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.<UnitWork>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.<UnitWork>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<UnitWork> 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;
|
}
|
}
|