通用导出报表开发

tags/yfai-mes-ext-v2.3
jun 6 months ago
parent 3582cfca98
commit a4a0ac889e

@ -8,6 +8,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesCokpitKanbanData; import cn.estsh.i3plus.pojo.mes.bean.MesCokpitKanbanData;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel;
import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -52,4 +53,7 @@ public interface IMesYfReportService {
@ApiOperation("看板数据") @ApiOperation("看板数据")
ListPager<MesCokpitKanbanData> queryMesCokpitKanbanData(MesCokpitKanbanData kanbanData, Pager pager); ListPager<MesCokpitKanbanData> queryMesCokpitKanbanData(MesCokpitKanbanData kanbanData, Pager pager);
@ApiOperation("通用导出报表")
ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager);
} }

@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesDowntimeRecordResModel; import cn.estsh.i3plus.pojo.mes.model.report.MesDowntimeRecordResModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel; import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel; import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.base.controller.MesBaseController;
@ -165,4 +166,20 @@ public class MesBusiReportController extends MesBaseController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e); return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} }
} }
@ApiOperation(value = "通用导出报表查询", notes = "通用导出报表查询")
@PostMapping("/generalExport/query")
public ResultBean queryGeneralExport(MesGeneralExportReportModel model, Pager pager) {
try {
ValidatorBean.beginValid(model)
.notNull("organizeCode", model.getOrganizeCode());
return ResultBean.success("查询成功").setListPager(mesYfReportService.queryGeneralExport(model,pager));
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
} }

@ -4,6 +4,8 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditi
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import io.swagger.annotations.ApiOperation;
/** /**
* @Description : - * @Description : -
@ -22,4 +24,7 @@ public interface IMesYfReportDao {
*/ */
ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager); ListPager<MesDeviceDataQueryReportResultModel> queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager);
@ApiOperation("通用导出报表")
ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager);
} }

@ -1,19 +1,26 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report; package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao; import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @Description : - * @Description : -
@ -107,4 +114,62 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
return new ListPager<>(resultList, pager); return new ListPager<>(resultList, pager);
} }
@Override
public ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager) {
StringBuilder dataHql = new StringBuilder();
dataHql.append(" select new ").append(MesGeneralExportReportModel.class.getName()).append("(workOrder.organizeCode,workOrder.workCenterCode,workOrder.id,workOrder.workOrderNo,workOrder.custSn,partType.partTypeName,assembly.assemblySn,orderAssembly.createDatetime,workOrder.shippingTime)");
//共用HQL
String commonHql = getCommonHql(mesGeneralExportReportModel);
//行数
Query countQuery = entityManager.createQuery("select count(1) " + commonHql);
setParameter(mesGeneralExportReportModel, countQuery);
//数据
Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesGeneralExportReportModel)).toString(), MesShippingOrderManagementDetailModel.class);
setParameter(mesGeneralExportReportModel, dataQuery);
if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager);
int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult()));
if (count <= 0) return new ListPager<>(new ArrayList<>(), pager);
pager = PagerHelper.getPager(pager, count);
dataQuery.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize());
return new ListPager<>(dataQuery.getResultList(), pager);
}
private void setParameter(MesGeneralExportReportModel model, Query query) {
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("organizeCode", model.getOrganizeCode());
query.setParameter("workOrderStatus", Stream.of(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(),MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue(),MesExtEnumUtil.ORDER_STATUS.SHIPPING.getValue()).collect(Collectors.toList()));
if (!StringUtils.isEmpty(model.getShippingTimeStart())) query.setParameter("shippingTimeStart", model.getShippingTimeStart());
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd());
}
private String getOrderBy(MesGeneralExportReportModel model) {
StringBuilder orderBy = new StringBuilder();
if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) {
model.setOrderByParam("createDatetime");
model.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue());
}
return orderBy.append(" order by d.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString();
}
private String getCommonHql(MesGeneralExportReportModel model) {
StringBuilder commonHql = new StringBuilder();
commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on orderAssembly.workOrderNo = workOrder.workOrderNo and workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid");
commonHql.append(" left join MesProductionAssembly assembly on workOrder.custSn = assembly.custSn and orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid ");
commonHql.append(" left join MesProdRuleSortCfg sortCfg on orderAssembly.pid = sortCfg.id and sortCfg.organizeCode = :organizeCode and sortCfg.isDeleted=:isDeleted and sortCfg.isValid=:isValid");
commonHql.append(" left join MesPartType partType on sortCfg.partTypeCode = partType.partTypeCode and partType.organizeCode = :organizeCode and partType.isDeleted=:isDeleted and partType.isValid=:isValid");
commonHql.append(" where orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid and workOrder.organizeCode = :organizeCode");
commonHql.append(" and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid and assembly.organizeCode = :organizeCode and assembly.isDeleted=:isDeleted and assembly.isValid=:isValid");
commonHql.append(" and sortCfg.organizeCode = :organizeCode and sortCfg.isDeleted=:isDeleted and sortCfg.isValid=:isValid and partType.organizeCode = :organizeCode and partType.isDeleted=:isDeleted and partType.isValid=:isValid ");
commonHql.append(" and partType.assemblyDescription = '通用追溯' and workOrder.workOrderStatus in (:workOrderStatus) ");
if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and workOrder.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' ");
if (!StringUtils.isEmpty(model.getCustSn())) commonHql.append(" and orderAssembly.custSn like '%").append(model.getCustSn()).append("%' ");
if (!StringUtils.isEmpty(model.getAssemblySn())) commonHql.append(" and orderAssembly.assemblySn like '%").append(model.getAssemblySn()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkOrderNo())) commonHql.append(" and workOrder.workOrderNo like '%").append(model.getWorkOrderNo()).append("%' ");
if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and workOrder.shippingTime >= :shippingTimeStart ");
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and workOrder.shippingTime <= :shippingTimeEnd ");
return commonHql.toString();
}
} }

@ -23,6 +23,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel;
import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.repository.*;
@ -268,6 +269,11 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
return new ListPager<>(mesCokpitKanbanDataList,pager); return new ListPager<>(mesCokpitKanbanDataList,pager);
} }
@Override
public ListPager<MesGeneralExportReportModel> queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager) {
return mesYfReportDao.queryGeneralExport(mesGeneralExportReportModel,pager);
}
private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) { private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode());
DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean);

Loading…
Cancel
Save