package com.ruoyi.business.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.business.entity.Production;
|
import com.ruoyi.business.entity.ProductionScheduling;
|
import com.ruoyi.business.mapper.ProductionMapper;
|
import com.ruoyi.business.mapper.ProductionSchedulingMapper;
|
import com.ruoyi.business.service.ProductionSchedulingService;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.system.mapper.SysUserMapper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* @author :yys
|
* @date : 2025/8/25 16:38
|
*/
|
@Service
|
@Slf4j
|
public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSchedulingMapper, ProductionScheduling> implements ProductionSchedulingService {
|
|
@Autowired
|
private ProductionSchedulingMapper productionSchedulingMapper;
|
|
@Autowired
|
private ProductionMapper productionMapper;
|
|
@Autowired
|
private SysUserMapper sysUserMapper;
|
|
@Autowired
|
private ProductionMasterServiceImpl productionMasterService;
|
|
@Override
|
public IPage<ProductionScheduling> listPage(Page<ProductionScheduling> page, ProductionScheduling productionScheduling) {
|
return productionSchedulingMapper.listPage(page, productionScheduling);
|
}
|
|
@Override
|
public boolean addProductionScheduling(List<ProductionScheduling> productionScheduling) {
|
if (CollectionUtils.isEmpty(productionScheduling)) {
|
return false;
|
}
|
BigDecimal reduce = productionScheduling.stream()
|
.map(ProductionScheduling::getSchedulingNum)
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
if(reduce.compareTo(productionScheduling.get(0).getProductionQuantity()) < 0){
|
return false;
|
}
|
Production production = productionMapper.selectById(productionScheduling.get(0).getProductionId());
|
if(production == null){
|
throw new RuntimeException("生产订单为空");
|
}
|
production.setStatus(2);
|
if(reduce.compareTo(productionScheduling.get(0).getProductionQuantity()) == 0){
|
production.setStatus(3);
|
}
|
productionMapper.updateById(production);
|
for (ProductionScheduling scheduling : productionScheduling) {
|
SysUser sysUser = sysUserMapper.selectUserById(scheduling.getSchedulingUserId());
|
if(sysUser == null) throw new RuntimeException("排产人员不存在");
|
scheduling.setStatus(1);
|
scheduling.setSchedulingUserName(sysUser.getNickName());
|
productionSchedulingMapper.insert(scheduling);
|
}
|
return true;
|
}
|
|
@Override
|
public boolean work(ProductionScheduling productionScheduling) {
|
ProductionScheduling productionScheduling1 = productionSchedulingMapper.selectById(productionScheduling.getId());
|
if(productionScheduling1 == null){
|
throw new RuntimeException("生产报工不存在");
|
}
|
Production production = productionMapper.selectById(productionScheduling1.getProductionId());
|
if(production == null){
|
throw new RuntimeException("生产订单为空");
|
}
|
production.setProductionQuantity(productionScheduling.getSuccessNum());
|
production.setProducerId(productionScheduling.getSchedulingUserId());
|
// 入库
|
productionMasterService.insertPendingInventory(Arrays.asList(production));
|
// 修改报工表的入库数量
|
|
productionScheduling1.setSuccessNum(productionScheduling1.getSuccessNum().add(productionScheduling.getSuccessNum()));
|
productionScheduling1.setStatus(2);
|
// 入库数量 == 排产数量 则修改生产订单状态
|
if(productionScheduling1.getSuccessNum().compareTo(productionScheduling1.getSchedulingNum()) == 0){
|
productionScheduling1.setStatus(3);
|
}
|
productionSchedulingMapper.updateById(productionScheduling1);
|
return true;
|
}
|
}
|