产量统计报表

tags/yfai-mes-ext-v2.5
王杰 5 months ago
parent 1b0d0c5756
commit 79dc62a687

@ -8,6 +8,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -25,6 +26,7 @@ import java.util.List;
* @CreateDate : 2024/9/29 10:21
* @Modify:
**/
@Slf4j
@Service
public class MesProductionRecordReportExtDao implements IMesProductionRecordReportExtDao {
@ -42,162 +44,167 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
StringBuilder unionQueryHql = new StringBuilder();
StringBuilder countQueryHql = new StringBuilder();
StringBuilder prQueryHql = new StringBuilder();
StringBuilder prCommonQueryHql = new StringBuilder();
StringBuilder woQueryHql = new StringBuilder();
StringBuilder woCommonQueryHql = new StringBuilder();
StringBuilder endHql = new StringBuilder();
StringBuilder limitHql = new StringBuilder();
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) {
unionQueryHql.append("SELECT\n" +
"\to.workCenterCode,\n" +
"\to.workCellCode,\n" +
"\to.partNo,\n" +
"\to.partName,\n" +
"\to.shiftCode,\n" +
"\to.equipmentCode,\n" +
"\to.equipmentName,\n" +
"\to.reportStatus,\n" +
"\to.dataSource,\n" +
"\to.statisticsQty \n" +
"FROM\n" +
"\t(\n" +
"\t\t(\n");
countQueryHql.append("SELECT count(1)\n" +
"FROM\n" +
"\t(\n" +
"\t\t(\n");
unionQueryHql.append("SELECT " +
" o.workCenterCode, " +
" o.workCellCode, " +
" o.partNo, " +
" o.partName, " +
" o.shiftCode, " +
" o.equipmentCode, " +
" o.equipmentName, " +
" o.reportStatus, " +
" o.dataSource, " +
" o.statisticsQty " +
" FROM " +
" (( ");
countQueryHql.append("SELECT count(1) " +
" FROM " +
" (( ");
} else {
countQueryHql.append("SELECT count(1) FROM\n");
countQueryHql.append("SELECT count(1) FROM ( ");
}
if (!CollectionUtils.isEmpty(reportStatusList)) {
prQueryHql.append("\t\tSELECT\n" +
"\t\t\ta.work_center_code AS workCenterCode,\n" +
"\t\t\ta.work_cell_code AS workCellCode,\n" +
"\t\t\ta.part_no AS partNo,\n" +
"\t\t\ta.part_name AS partName,\n" +
"\t\t\ta.shift_code AS shiftCode,\n" +
"\t\t\ta.equipment_code AS equipmentCode,\n" +
"\t\t\ta.equipment_name AS equipmentName,\n" +
"\t\t\ta.report_status AS reportStatus,\n" +
"\t\t\t1 AS dataSource,\n" +
"\t\t\tSUM( qty ) AS statisticsQty \n" +
"\t\tFROM\n");
prCommonQueryHql.append("\t\t\tmes_production_record a \n" +
"\t\tWHERE\n" +
"\t\t\ta.organize_code = :organizeCode \n" +
"\t\t\tAND a.is_deleted = :isDeleted \n" +
"\t\t\tAND a.is_valid = :isValid \n" +
"\t\t\tAND a.complete_date_time >= :completeDateTimeStart \n" +
"\t\t\tAND a.complete_date_time <= :completeDateTimeEnd \n");
prQueryHql.append("" +
" SELECT " +
" a.work_center_code AS workCenterCode, " +
" a.work_cell_code AS workCellCode, " +
" a.part_no AS partNo, " +
" a.part_name AS partName, " +
" a.shift_code AS shiftCode, " +
" a.equipment_code AS equipmentCode, " +
" a.equipment_name AS equipmentName, " +
" a.report_status AS reportStatus, " +
" 1 AS dataSource, " +
" SUM( qty ) AS statisticsQty " +
" FROM ");
prQueryHql.append(" mes_production_record a " +
" WHERE " +
" a.organize_code = :organizeCode " +
" AND a.is_deleted = :isDeleted " +
" AND a.is_valid = :isValid " +
" AND a.complete_date_time >= :completeDateTimeStart " +
" AND a.complete_date_time <= :completeDateTimeEnd ");
if (reportStatusList.size() == 1) {
prCommonQueryHql.append("\t\t\tAND a.report_status = :reportStatus \n");
prQueryHql.append(" AND a.report_status = :reportStatus ");
} else {
prCommonQueryHql.append("\t\t\tAND a.report_status in (:reportStatus) \n");
prQueryHql.append(" AND a.report_status in (:reportStatus) ");
}
if (!StringUtils.isEmpty(model.getPartNo())) {
prCommonQueryHql.append("\t\t\tAND a.part_no = :partNo \n");
prQueryHql.append(" AND a.part_no = :partNo ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
prCommonQueryHql.append("\t\t\tAND a.work_center_code = :workCenterCode \n");
prQueryHql.append(" AND a.work_center_code = :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getWorkCellCode())) {
prCommonQueryHql.append("\t\t\tAND a.work_cell_code = :workCellCode \n");
prQueryHql.append(" AND a.work_cell_code = :workCellCode ");
}
if (!StringUtils.isEmpty(model.getShiftCode())) {
prCommonQueryHql.append("\t\t\tAND a.shift_code = :shiftCode \n");
prQueryHql.append(" AND a.shift_code = :shiftCode ");
}
if (!StringUtils.isEmpty(model.getEquipmentCode())) {
prCommonQueryHql.append("\t\t\tAND a.equipment_code = :equipmentCode \n");
prQueryHql.append(" AND a.equipment_code = :equipmentCode ");
}
prCommonQueryHql.append("\t\tGROUP BY\n" +
"\t\t\ta.work_center_code,\n" +
"\t\t\ta.work_cell_code,\n" +
"\t\t\ta.part_no,\n" +
"\t\t\ta.shift_code,\n" +
"\t\t\ta.report_status \n" +
"\t\tORDER BY\n" +
"\t\t\ta.complete_date_time DESC \n");
prQueryHql.append(" GROUP BY " +
" a.work_center_code, " +
" a.work_cell_code, " +
" a.part_no, " +
" a.shift_code, " +
" a.report_status " +
" ORDER BY " +
" a.complete_date_time DESC ");
}
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) {
prCommonQueryHql.append("\t\t) UNION ALL\n" +
"\t\t(");
prQueryHql.append(" ) UNION ALL ( ");
}
if (model.getIsQueryWo()) {
woQueryHql.append("\t\tSELECT\n" +
"\t\t\tb.work_center_code AS workCenterCode,\n" +
"\t\t\tNULL AS workCellCode,\n" +
"\t\t\tb.part_no AS partNo,\n" +
"\t\t\tb.part_name AS partName,\n" +
"\t\t\tb.shift_code AS shiftCode,\n" +
"\t\t\tNULL AS equipmentCode,\n" +
"\t\t\tNULL AS equipmentName,\n" +
"\t\t\t30 AS reportStatus,\n" +
"\t\t\t2 AS dataSource,\n" +
"\t\t\tSUM( modify_qty ) AS statisticsQty \n" +
"\t\tFROM\n");
woCommonQueryHql.append("\t\t\tmes_work_order_log b \n" +
"\t\tWHERE\n" +
"\t\t\tb.organize_code = :organizeCode \n" +
"\t\t\tAND b.is_deleted = :isDeleted \n" +
"\t\t\tAND b.is_valid = :isValid \n" +
"\t\t\tAND b.modify_date_time >= :completeDateTimeStart \n" +
"\t\t\tAND b.modify_date_time <= :completeDateTimeEnd \n" +
"\t\t\tAND b.type = :messageType \n");
woQueryHql.append("" +
" SELECT " +
" b.work_center_code AS workCenterCode, " +
" ' ' AS workCellCode, " +
" b.part_no AS partNo, " +
" b.part_name AS partName, " +
" b.shift_code AS shiftCode, " +
" ' ' AS equipmentCode, " +
" ' ' AS equipmentName, " +
" 30 AS reportStatus, " +
" 2 AS dataSource, " +
" SUM( modify_qty ) AS statisticsQty " +
" FROM ");
woQueryHql.append(" mes_work_order_log b " +
" WHERE " +
" b.organize_code = :organizeCode " +
" AND b.is_deleted = :isDeleted " +
" AND b.is_valid = :isValid " +
" AND b.modify_date_time >= :completeDateTimeStart " +
" AND b.modify_date_time <= :completeDateTimeEnd " +
" AND b.type = :messageType ");
if (!StringUtils.isEmpty(model.getPartNo())) {
woCommonQueryHql.append("\t\t\tAND b.part_no = :partNo \n");
woQueryHql.append(" AND b.part_no = :partNo ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
woCommonQueryHql.append("\t\t\tAND b.work_center_code = :workCenterCode \n");
woQueryHql.append(" AND b.work_center_code = :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getShiftCode())) {
woCommonQueryHql.append("\t\t\tAND b.shift_code = :shiftCode \n");
woQueryHql.append(" AND b.shift_code = :shiftCode ");
}
woCommonQueryHql.append("\t\tGROUP BY\n" +
"\t\t\tb.work_center_code,\n" +
"\t\t\tb.part_no,\n" +
"\t\t\tb.shift_code \n" +
"\t\tORDER BY\n" +
"\t\t\tb.modify_date_time DESC \n");
woQueryHql.append(" GROUP BY " +
" b.work_center_code, " +
" b.part_no, " +
" b.shift_code " +
" ORDER BY " +
" b.modify_date_time DESC ");
}
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) {
woCommonQueryHql.append("\t) \n" +
"\t) AS o \n");
endHql.append(" )) AS o ");
} else {
endHql.append(" ) AS o ");
}
limitHql.append(" LIMIT :startRow , :pageSize ");
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) {
queryHql.append(unionQueryHql).append(prQueryHql).append(prCommonQueryHql).append(woQueryHql).append(woCommonQueryHql);
countHql.append(countQueryHql).append(prQueryHql).append(prCommonQueryHql).append(woQueryHql).append(woCommonQueryHql);
queryHql.append(unionQueryHql).append(prQueryHql).append(woQueryHql).append(endHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(woQueryHql).append(endHql);
} else {
if (!CollectionUtils.isEmpty(reportStatusList)) {
queryHql.append(prQueryHql).append(prCommonQueryHql);
countHql.append(countQueryHql).append(prCommonQueryHql);
queryHql.append(prQueryHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(endHql);
} else {
queryHql.append(woQueryHql).append(woCommonQueryHql);
countHql.append(countQueryHql).append(woCommonQueryHql);
queryHql.append(woQueryHql).append(limitHql);
countHql.append(countQueryHql).append(woQueryHql).append(endHql);
}
}
// log.info("queryHql: --- {}", queryHql.toString());
// log.info("countHql: --- {}", countHql.toString());
Query dataQuery = entityManager.createNativeQuery(queryHql.toString());
setQueryParams(dataQuery, model, reportStatusList);
setQueryParams(dataQuery, model, reportStatusList, pager);
Query countQuery = entityManager.createNativeQuery(countHql.toString());
setQueryParams(countQuery, model, reportStatusList);
setQueryParams(countQuery, model, reportStatusList, null);
pager = PagerHelper.getPager(pager, Integer.parseInt(countQuery.getSingleResult().toString()));
Object o = countQuery.getSingleResult();
dataQuery.setMaxResults(pager.getPageSize());
if (pager.getCurrentPage() == 0) {
pager.setCurrentPage(1);
}
dataQuery.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize());
int count = Integer.parseInt(o.toString());
List list = dataQuery.getResultList();
if (!CollectionUtils.isEmpty(list)) {
for (Object object : list) {
if (null == object) continue;
@ -217,12 +224,14 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
resultList.add(result);
}
}
pager = PagerHelper.getPager(pager, count);
return new ListPager(resultList, pager);
}
private void setQueryParams(Query query, MesProductionRecordReportExtModel model, List<Integer> reportStatusList) {
private void setQueryParams(Query query, MesProductionRecordReportExtModel model, List<Integer> reportStatusList, Pager pager) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue());
@ -251,6 +260,11 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
if (!StringUtils.isEmpty(model.getEquipmentCode())) {
query.setParameter(MesExtConstWords.EQUIPMENT_CODE, model.getEquipmentCode());
}
if (null != pager) {
Integer startRow = (pager.getCurrentPage() - 1) * pager.getPageSize();
query.setParameter("startRow", startRow);
query.setParameter("pageSize", pager.getPageSize());
}
}
}

@ -54,8 +54,6 @@ public class MesProductionRecordReportExtService implements IMesProductionRecord
if (StringUtils.isEmpty(model.getWorkCellCode()) && StringUtils.isEmpty(model.getEquipmentCode()) &&
reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue())) model.setIsQueryWo(true);
Integer startRow = (pager.getCurrentPage() - 1) * pager.getPageSize();
ListPager<MesProductionRecordReportExtModel> listPager = productionRecordReportExtDao.queryProductionRecordUnionWorkOrderLogReport(model, pager, reportStatusList2Pr);
return listPager;

Loading…
Cancel
Save