diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 4f15500..c2c5344 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -1,14 +1,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; +import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import lombok.extern.slf4j.Slf4j; +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.persistence.EntityManager; import javax.persistence.Query; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -27,15 +32,28 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { @Override public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select new " + MesWorkOrderModel.class.getName() + "(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + - " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + - " and workOrderType = 20 "+ - "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion"); - Query query = entityManager.createQuery(hql.toString(), MesWorkOrderModel.class); + StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS sumQty " + + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + + " and work_order_type = 20 "+ + "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); + Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("statusList", statusList); - return query.getResultList(); + query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); + + List> hashMaps = query.getResultList(); + List mesWorkOrderList =new ArrayList<>(); + for (HashMap hashMap : hashMaps) { + try { + mesWorkOrderList.add((MesWorkOrderModel) BeanUtil.populateBean(hashMap, MesWorkOrderModel.class)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + return mesWorkOrderList; } }