package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; 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.yuanchu.mom.mapper.ManualTechnologyMapper; import com.yuanchu.mom.mapper.ManufactureOrderMapper; import com.yuanchu.mom.pojo.ManufactureOrder; import com.yuanchu.mom.pojo.ManufactureScheduling; import com.yuanchu.mom.service.ManufactureOrderService; import com.yuanchu.mom.service.ManufactureSchedulingService; import com.yuanchu.mom.utils.MyUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * 生产订单表(ManufactureOrder)表服务实现类 * * @author zss * @since 2023-08-17 14:16:25 */ @Service public class ManufactureOrderServiceImpl extends ServiceImpl implements ManufactureOrderService { @Resource ManufactureOrderMapper manufactureOrderMapper; @Resource ManualTechnologyMapper manualTechnologyMapper; @Autowired private ManufactureSchedulingService manufactureSchedulingService; //查询生产订单的列表 @Override public IPage> selectAllManord(Page page, String downTime, String delTime, String customerCode, Integer type) { return manufactureOrderMapper.selectAllManord(page,downTime,delTime,customerCode,type); } //查看排产详情 @Override public Map sePros(Integer schedulingId) { //基本信息 Map manufactureOrder = manufactureSchedulingService.sePros(schedulingId); MyUtil.PrintLog(manufactureOrder.toString()); //计划编制 List> mapList = manualTechnologyMapper.selectListTowTree(schedulingId); manufactureOrder.put("message",mapList); return manufactureOrder; } //下达 @Override public void down(Integer manufactureOrderId, Integer schedulingId) { // 先更新排产 LambdaUpdateWrapper updateWrapperScheduling = Wrappers.lambdaUpdate() .eq(ManufactureScheduling::getId, schedulingId) .set(ManufactureScheduling::getGoState, 1); manufactureSchedulingService.update(updateWrapperScheduling); // 然后更新订单表的状态 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(ManufactureScheduling::getManufactureOrderId, manufactureOrderId) .select(ManufactureScheduling::getGoState); List list = manufactureSchedulingService.list(queryWrapper); boolean goStateAll = false; for (int i = 0; i <= list.size() - 1; i++){ if (list.get(i).getGoState() == 0) { goStateAll = true; break; } } LambdaUpdateWrapper updateWrapperOrder = new LambdaUpdateWrapper<>(); updateWrapperOrder.eq(ManufactureOrder::getId, manufactureOrderId); // 如果排产表中有一个是待下达,那么订单表中就为待下达 if (goStateAll){ // 待下达 updateWrapperOrder.set(ManufactureOrder::getGoState, 0); } else { // 已下达 updateWrapperOrder.set(ManufactureOrder::getGoState, 1); } manufactureOrderMapper.update(new ManufactureOrder(), updateWrapperOrder); } @Override public void deleteManufacture(List manOrdId) { manufactureOrderMapper.deleteManufacture(manOrdId); } @Override public List> towTree() { return manufactureOrderMapper.towTree(); } @Override public Integer checkScheduled(Integer manOrdId, Integer schedulingNumber) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() .eq(ManufactureOrder::getId, manOrdId) .eq(ManufactureOrder::getState, 1) .select(ManufactureOrder::getNumber, ManufactureOrder::getScheduledProduction); ManufactureOrder manufactureOrder = manufactureOrderMapper.selectOne(queryWrapper); if (ObjectUtils.isEmpty(manufactureOrder.getScheduledProduction())){ manufactureOrder.setScheduledProduction(0); } return manufactureOrder.getNumber() - (manufactureOrder.getScheduledProduction() + schedulingNumber); } }