diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesCimSeresReportService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesCimSeresReportService.java new file mode 100644 index 0000000..9ce8e58 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesCimSeresReportService.java @@ -0,0 +1,31 @@ +package cn.estsh.i3plus.ext.mes.api.busi.report; + +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisQueue; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresSrmRunSheetJis; +import cn.estsh.i3plus.pojo.mes.model.report.DataTwoDimensionalModel; +import cn.estsh.i3plus.pojo.mes.model.report.MesCimSeresJisQueueRequest; +import cn.estsh.i3plus.pojo.mes.model.report.MesCimSeresJisQueueSummaryRequest; +import cn.estsh.i3plus.pojo.mes.model.report.MesCimSeresJisQueueSummaryResponse; + +import java.util.List; + +public interface IMesCimSeresReportService { + ListPager querySrmSunSheetJisLogByPager(Integer status, Pager pager); + + void doSrmSunSheetJisNormal(List ids); + + ListPager queryJisQueueLogByPager(Integer checkStatus, Pager pager); + + void doJisQueueNormal(List ids); + + ListPager queryJisVinOverPointByPager(MesCimSeresJisVinOverPoint request, Pager pager); + + ListPager queryJisQueueByPager(MesCimSeresJisQueueRequest request, Pager pager); + + ListPager queryJisQueueSummaryByPager(MesCimSeresJisQueueSummaryRequest request, Pager pager); + + ListPager queryTwoDimensionalByPager(DataTwoDimensionalModel request, Pager pager); +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesCimSeresReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesCimSeresReportController.java new file mode 100644 index 0000000..e90c2cb --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesCimSeresReportController.java @@ -0,0 +1,139 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.report; + +import cn.estsh.i3plus.ext.mes.api.busi.report.IMesCimSeresReportService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisQueue; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresSrmRunSheetJis; +import cn.estsh.i3plus.pojo.mes.model.report.*; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @Description :赛力斯报表 + * @Reference : + * @Author : jason.niu + * @CreateDate : 2025/03/04 09:59 + * @Modify: + **/ +@Api(tags = "赛力斯报表") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCimSeresReport") +public class MesCimSeresReportController { + @Autowired + private IMesCimSeresReportService mesCimSeresReportService; + + @ApiOperation(value = "赛力斯JIS单接收日志", notes = "赛力斯JIS单接收日志") + @GetMapping("/query-srm-sun-sheet-jis-log") + public ResultBean querySrmSunSheetJisLogByPager(Integer status, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.querySrmSunSheetJisLogByPager(status, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯JIS单转正常", notes = "赛力斯JIS单转正常") + @PostMapping("/srm-sun-sheet-jis-normal") + public ResultBean doSrmSunSheetJisNormal(@RequestBody List ids) { + try { + mesCimSeresReportService.doSrmSunSheetJisNormal(ids); + return ResultBean.success("执行成功"); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯JIS队列接收日志", notes = "赛力斯JIS队列接收日志") + @GetMapping("/query-jis-queue-log") + public ResultBean queryJisQueueLogByPager(Integer checkStatus, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.queryJisQueueLogByPager(checkStatus, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯JIS队列转正常", notes = "赛力斯JIS队列转正常") + @PostMapping("/jis-queue-normal") + public ResultBean doJisQueueNormal(@RequestBody List ids) { + try { + mesCimSeresReportService.doJisQueueNormal(ids); + return ResultBean.success("执行成功"); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯过点信息查询", notes = "赛力斯过点信息查询") + @GetMapping("/query-jis-vin-over-point") + public ResultBean queryJisVinOverPointByPager(MesCimSeresJisVinOverPoint request, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.queryJisVinOverPointByPager(request, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯排序信息查询", notes = "赛力斯排序信息查询") + @GetMapping("/query-jis-queue") + public ResultBean queryJisQueueByPager(MesCimSeresJisQueueRequest request, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.queryJisQueueByPager(request, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "赛力斯排序信息汇总", notes = "赛力斯排序信息汇总") + @GetMapping("/query-jis-queue-summary") + public ResultBean queryJisQueueSummaryByPager(MesCimSeresJisQueueSummaryRequest request, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.queryJisQueueSummaryByPager(request, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation(value = "数据二维报表", notes = "数据二维报表") + @GetMapping("/query-data-two-dimensional") + public ResultBean queryTwoDimensionalByPager(DataTwoDimensionalModel request, Pager pager){ + try { + ListPager queryResultListPager = mesCimSeresReportService.queryTwoDimensionalByPager(request, pager); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setListPager(queryResultListPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesCimSeresReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesCimSeresReportServiceImpl.java new file mode 100644 index 0000000..11dceee --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesCimSeresReportServiceImpl.java @@ -0,0 +1,324 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report; + +import cn.estsh.i3plus.ext.mes.api.busi.report.IMesCimSeresReportService; +import cn.estsh.i3plus.ext.mes.pojo.model.MesDefectRecordModel; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +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.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisQueue; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresJisVinOverPoint; +import cn.estsh.i3plus.pojo.mes.bean.seres.MesCimSeresSrmRunSheetJis; +import cn.estsh.i3plus.pojo.mes.model.report.*; +import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisQueueRepository; +import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresJisVinOverPointRepository; +import cn.estsh.i3plus.pojo.mes.repository.seres.IMesCimSeresSrmRunSheetJisRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.List; + +@Service +public class MesCimSeresReportServiceImpl implements IMesCimSeresReportService { + @Autowired + private EntityManager entityManager; + @Autowired + private IMesCimSeresSrmRunSheetJisRepository runSheetJisRDao; + @Autowired + private IMesCimSeresJisQueueRepository queueJisRDao; + @Autowired + private IMesCimSeresJisVinOverPointRepository overPointJisRDao; + + @Override + public ListPager querySrmSunSheetJisLogByPager(Integer status, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(status, "status", packBean); + + pager = PagerHelper.getPager(pager, runSheetJisRDao.findByHqlWhereCount(packBean)); + List list = runSheetJisRDao.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + @Override + public void doSrmSunSheetJisNormal(List ids) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + final String username = AuthUtil.getSessionUser().getUserName(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(ids, "id", packBean); + + runSheetJisRDao.updateByProperties(new String[]{"status","modifyUser","modifyDatetime"},new Object[]{MesExtEnumUtil.CIM_SERES_JIS_STATUS.WAIT_CHECK, username, TimeTool.getNowTime(true)}, packBean); + } + + @Override + public ListPager queryJisQueueLogByPager(Integer checkStatus, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(checkStatus, "checkStatus", packBean); + + pager = PagerHelper.getPager(pager, runSheetJisRDao.findByHqlWhereCount(packBean)); + List list = queueJisRDao.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + @Override + public void doJisQueueNormal(List ids) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + final String username = AuthUtil.getSessionUser().getUserName(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(ids, "id", packBean); + + queueJisRDao.updateByProperties(new String[]{"checkStatus","modifyUser","modifyDatetime"},new Object[]{MesExtEnumUtil.CIM_SERES_JIS_STATUS.WAIT_CHECK, username, TimeTool.getNowTime(true)}, packBean); + } + + @Override + public ListPager queryJisVinOverPointByPager(MesCimSeresJisVinOverPoint request, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringBiggerPack(request.getCreateDateTimeStart(), "overPointTime", packBean); + DdlPreparedPack.getStringSmallerPack(request.getCreateDateTimeEnd(), "overPointTime", packBean); + DdlPreparedPack.getStringLikerPack(request.getOverPoint(), "overPoint", packBean); + DdlPreparedPack.getStringLikerPack(request.getVin(), "vin", packBean); + + pager = PagerHelper.getPager(pager, overPointJisRDao.findByHqlWhereCount(packBean)); + List list = overPointJisRDao.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + @Override + public ListPager queryJisQueueByPager(MesCimSeresJisQueueRequest request, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringBiggerPack(request.getOverPointTimeStart(), "overPointTime", packBean); + DdlPreparedPack.getStringSmallerPack(request.getOverPointTimeEnd(), "overPointTime", packBean); + DdlPreparedPack.getStringLikerPack(request.getVin(), "vin", packBean); + DdlPreparedPack.getNumberBiggerEqualPack(request.getSerialNumberStart(), "serialNumber", packBean); + DdlPreparedPack.getNumberSmallerEqualPack(request.getSerialNumberEnd(), "serialNumber", packBean); + DdlPreparedPack.getStringLikerPack(request.getPartClassCode(), "partClassCode", packBean); + DdlPreparedPack.getNumEqualPack(request.getSortInfoStatus(), "sortInfoStatus", packBean); + DdlPreparedPack.getNumEqualPack(request.getShippingOrderStatus(), "shippingOrderStatus", packBean); + + pager = PagerHelper.getPager(pager, queueJisRDao.findByHqlWhereCount(packBean)); + List list = queueJisRDao.findByHqlWherePage(packBean, pager); + return new ListPager<>(list, pager); + } + + @Override + public ListPager queryJisQueueSummaryByPager(MesCimSeresJisQueueSummaryRequest request, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + + StringBuilder hql = new StringBuilder(); + hql.append(" from ("); + hql.append(" select b.cust_organize_code, c.shipping_group_name, a.part_no, a.part_name, a.cust_part_no, a.cust_info_seq, a.create_date_time, materiel_code, a.vin, part_class_code, part_class_name from mes_shipping_detail a join mes_shipping b on b.id = a.pid"); + hql.append(" and a.organize_code=:organizeCode and a.is_deleted=:isDeleted and a.is_valid=:isValid and b.organize_code = :organizeCode and b.is_deleted=:isDeleted and b.is_valid=:isValid"); + hql.append(" join mes_part_shipping_group c on b.shipping_group_code = c.shipping_group_code"); + hql.append(" and c.organize_code=:organizeCode and c.is_deleted=:isDeleted and c.is_valid=:isValid"); + hql.append(" join mes_cim_seres_jis_queue d on a.vin=d.vin and a.cust_part_no=d.materiel_code"); + hql.append(" and d.organize_code=:organizeCode and d.is_deleted=:isDeleted and d.is_valid=:isValid"); + hql.append(" join mes_part e on a.part_no=e.part_no"); + hql.append(" and e.organize_code=:organizeCode and e.is_deleted=:isDeleted and e.is_valid=:isValid"); + hql.append(" ) s"); + hql.append(" where 1=1"); + if (!StringUtils.isEmpty(request.getCustOrganizeCode())){ + hql.append(" and custOrganizeCode like :custOrganizeCode"); + } + if (!StringUtils.isEmpty(request.getShippingGroupName())){ + hql.append(" and shippingGroupName like :shippingGroupName"); + } + if (!StringUtils.isEmpty(request.getPartClassCode())){ + hql.append(" and partClassCode like :partClassCode"); + } + if (!StringUtils.isEmpty(request.getPartNo())){ + hql.append(" and partNo like :partNo"); + } + if (!StringUtils.isEmpty(request.getMaterielCode())){ + hql.append(" and materielCode like :materielCode"); + } + if (request.getSerialNumberStart() != null){ + hql.append(" and custInfoSeq >= :serialNumberStart"); + } + if (request.getSerialNumberEnd() != null){ + hql.append(" and custInfoSeq <= :serialNumberEnd"); + } + if (!StringUtils.isEmpty(request.getCreateDateTimeStart())){ + hql.append(" and createDatetime >= :createDateTimeStart"); + } + if (!StringUtils.isEmpty(request.getCreateDateTimeEnd())){ + hql.append(" and createDatetime <= :createDateTimeEnd"); + } + if (!StringUtils.isEmpty(request.getPartNumber())){ + hql.append(" and partNumber like :partNumber"); + } + if (!StringUtils.isEmpty(request.getVin())){ + hql.append(" and vin like :vin"); + } + hql.append(" group by cust_organize_code, shipping_group_name, part_class_code, part_class_name, part_no, part_name, materiel_code"); + + StringBuilder countQueryHql= new StringBuilder(); + countQueryHql.append("select count(1) "); + Query countQuery = entityManager.createNativeQuery(countQueryHql.append(hql).toString()); + packJisQueueSummary(countQuery, request, organizeCode); + //本次查询满足条件的总数 + int count = countQuery.getResultList().size(); + if (count <= 0) { + return new ListPager(new ArrayList(), pager); + } + + StringBuilder dataQueryHql = new StringBuilder(); + dataQueryHql.append(" select cust_organize_code, shipping_group_Name, part_class_code, part_class_name, part_no, part_name, materiel_code, COUNT(1)"); + Query dataQuery = entityManager.createNativeQuery(dataQueryHql.append(hql).toString()); + packJisQueueSummary(dataQuery, request, organizeCode); + + pager = PagerHelper.getPager(pager, count); + //查询本页数据 + dataQuery.setMaxResults(pager.getPageSize()); + dataQuery.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + List list = dataQuery.getResultList(); + List modelList = new ArrayList<>(); + for (Object result : list) { + Object[] cells = (Object[]) result; + MesCimSeresJisQueueSummaryResponse model = new MesCimSeresJisQueueSummaryResponse(); + String custOrganizeCode = String.valueOf(cells[0]); + String shippingGroupName = String.valueOf(cells[1]); + String partClassCode = String.valueOf(cells[2]); + String partClassName = String.valueOf(cells[3]); + String partNo = String.valueOf(cells[4]); + String partName = String.valueOf(cells[5]); + String materielCode = String.valueOf(cells[6]); + String seqCount = String.valueOf(cells[7]); + model.setCustOrganizeCode(custOrganizeCode); + model.setShippingGroupName(shippingGroupName); + model.setPartClassCode(partClassCode); + model.setPartClassName(partClassName); + model.setPartNo(partNo); + model.setPartName(partName); + model.setMaterielCode(materielCode); + model.setCount(Integer.parseInt(seqCount)); + modelList.add(model); + } + + return new ListPager<>(modelList, pager); + } + + private void packJisQueueSummary(Query query, MesCimSeresJisQueueSummaryRequest request, String organizeCode) { + query.setParameter("organizeCode", organizeCode) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE); + if (!StringUtils.isEmpty(request.getCustOrganizeCode())){ + query.setParameter("custOrganizeCode", request.getCustOrganizeCode()); + } + if (!StringUtils.isEmpty(request.getShippingGroupName())){ + query.setParameter("shippingGroupName", request.getShippingGroupName()); + } + if (!StringUtils.isEmpty(request.getPartClassCode())){ + query.setParameter("partClassCode", request.getPartClassCode()); + } + if (!StringUtils.isEmpty(request.getPartNo())){ + query.setParameter("partNo", request.getPartNo()); + } + if (!StringUtils.isEmpty(request.getMaterielCode())){ + query.setParameter("materielCode", request.getMaterielCode()); + } + if (request.getSerialNumberStart() != null){ + query.setParameter("serialNumberStart", request.getSerialNumberStart()); + } + if (request.getSerialNumberEnd() != null){ + query.setParameter("serialNumberEnd", request.getSerialNumberEnd()); + } + if (!StringUtils.isEmpty(request.getCreateDateTimeStart())){ + query.setParameter("createDateTimeStart", request.getCreateDateTimeStart()); + } + if (!StringUtils.isEmpty(request.getCreateDateTimeEnd())){ + query.setParameter("createDateTimeEnd", request.getCreateDateTimeEnd()); + } + if (!StringUtils.isEmpty(request.getPartNumber())){ + query.setParameter("partNumber", request.getPartNumber()); + } + if (!StringUtils.isEmpty(request.getVin())){ + query.setParameter("vin", request.getVin()); + } + } + + @Override + public ListPager queryTwoDimensionalByPager(DataTwoDimensionalModel request, Pager pager) { + final String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + + StringBuilder hql = new StringBuilder(); + hql.append(" from mes_cim_seres_jis_rfid AA join ("); + hql.append(" select A.shipping_code, B.cust_info_seq, B.vin as vin, A.create_date_time from mes_shipping as A join mes_shipping_detail as B on A.id = B.pid"); + hql.append(" where A.organize_code = :organizeCode and A.is_deleted=:isDeleted and A.is_valid=:isValid and B.organize_code = :organizeCode and B.is_deleted=:isDeleted and B.is_valid=:isValid"); + hql.append(" and A.shipping_group_code = :shippingGroupCode) BB on AA.vin = BB.vin"); + if (!StringUtils.isEmpty(request.getShippingCode())) { + hql.append(" and BB.shipping_code like :shippingCode"); + } + if (request.getCustInfoSeq() != null){ + hql.append(" and BB.cust_info_seq = :custInfoSeq"); + } + if (!StringUtils.isEmpty(request.getVin())){ + hql.append(" and BB.vin like :vin"); + } + + StringBuilder countQueryHql= new StringBuilder(); + countQueryHql.append("select count(1) "); + Query countQuery = entityManager.createNativeQuery(countQueryHql.append(hql).toString()); + packTwoDimensional(countQuery, request, organizeCode); + //本次查询满足条件的总数 + int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); + + StringBuilder dataQueryHql = new StringBuilder(); + dataQueryHql.append(" select BB.shipping_code, BB.cust_info_seq, BB.vin, csn, CONCAT(LEFT(rfid,114), UPPER('326312JSG1DJ05')) as rfid, AA.create_date_time"); + Query dataQuery = entityManager.createNativeQuery(dataQueryHql.append(hql).toString()); + packTwoDimensional(dataQuery, request, organizeCode); + + pager = PagerHelper.getPager(pager, count); + //查询本页数据 + dataQuery.setMaxResults(pager.getPageSize()); + dataQuery.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + List list = dataQuery.getResultList(); + List modelList = new ArrayList<>(); + for (Object result : list) { + Object[] cells = (Object[]) result; + DataTwoDimensionalModel model = new DataTwoDimensionalModel(); + String shippingCode = String.valueOf(cells[0]); + String custInfoSeq = String.valueOf(cells[1]); + String vin = String.valueOf(cells[2]); + String csn = String.valueOf(cells[3]); + String rfid = String.valueOf(cells[4]); + String createDateTime = String.valueOf(cells[5]); + model.setShippingCode(shippingCode); + model.setCustInfoSeq(Long.parseLong(custInfoSeq)); + model.setVin(vin); + model.setCsn(csn); + model.setRfid(rfid); + model.setCreateDatetime(createDateTime); + modelList.add(model); + } + + return new ListPager<>(modelList, pager); + } + + private void packTwoDimensional(Query query, DataTwoDimensionalModel request, String organizeCode) { + query.setParameter("organizeCode", organizeCode) + .setParameter("isValid", CommonEnumUtil.VALID) + .setParameter("isDeleted", CommonEnumUtil.FALSE); + query.setParameter("shippingGroupCode", request.getShippingGroupCode()); + if (!StringUtils.isEmpty(request.getShippingCode())){ + query.setParameter("shippingCode", request.getShippingCode()); + } + if (request.getCustInfoSeq() != null){ + query.setParameter("custInfoSeq", request.getCustInfoSeq()); + } + if (!StringUtils.isEmpty(request.getVin())){ + query.setParameter("vin", request.getVin()); + } + } +}