package com.mes.order.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.order.entity.Orderdetail;
import com.mes.order.entity.Orders;
import com.mes.order.mapper.OrderdetailMapper;
import com.mes.order.mapper.OrdersMapper;
import com.mes.order.service.OrdersService;
import com.mes.pp.entity.OrderChange;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author wu
* @since 2024-06-17
*/
@Service
@DS("sd")
@Slf4j
public class OrdersServiceImpl extends ServiceImpl implements OrdersService {
@Resource
private OrderdetailMapper orderdetailMapper;
@Resource
private GlassInfoService glassInfoService;
@Resource
private GlassInfoMapper glassInfoMapper;
@Override
public List selectOrders() {
//获取所有未完成的订单
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.ne("warehousing", "2");
return baseMapper.selectList(queryWrapper);
}
@Override
public List selectOrderdetail(Orders orders) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_id", orders.getOrderId());
return orderdetailMapper.selectList(queryWrapper);
}
@Override
public List orderChange(List orderChanges) {
for (OrderChange orderChange : orderChanges) {
glassInfoService.update(
new LambdaUpdateWrapper()
.set(GlassInfo::getProductionStatus, 3)
.eq(GlassInfo::getFlowCardId, orderChange.getOldProcessId())
.eq(GlassInfo::getGlassType, orderChange.getOldOrderNumber())
.eq(GlassInfo::getLayer, orderChange.getOldTechnologyNumber())
);
int affectedRows = glassInfoMapper.update(null,
new LambdaUpdateWrapper()
.eq(GlassInfo::getFlowCardId, orderChange.getOldProcessId())
.eq(GlassInfo::getGlassType, orderChange.getOldOrderNumber())
.eq(GlassInfo::getLayer, orderChange.getOldTechnologyNumber())
.set(GlassInfo::getFlowCardId, orderChange.getNewProcessId())
.set(GlassInfo::getGlassType, orderChange.getNewOrderNumber())
.set(GlassInfo::getLayer, orderChange.getNewTechnologyNumber())
.set(GlassInfo::getProductionStatus, 2)
.orderByDesc(GlassInfo::getTemperingLayoutId, GlassInfo::getTemperingLayoutId)
.last("limit " + orderChange.getChangeNumber())
.inSql(GlassInfo::getGlassId, "select glass_id from edg_storage_cage_details where flow_card_id ='" + orderChange.getOldProcessId() +
"' and glass_id not in (select glass_id from damage where (type=8 or type=9) and process_id='" + orderChange.getOldProcessId() + "')"));
orderChange.setChangedNumber(affectedRows);
}
log.info("订单变更:" + orderChanges);
return orderChanges;
}
}