| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import com.product.core.entity.SQLEntity; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | public void getReportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | //获取机号查询信息 |
| | | FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); |
| | | DataTableEntity workCenterOperationInfomationSheet = this.dtSNItemInfo(fse); |
| | | |
| | | Boolean isAll = fse.getBoolean("is_all"); |
| | | if (isAll) { |
| | | fse.setValue(CmnConst.CPAGE, 1); |
| | | fse.setValue(CmnConst.PAGESIZE, 999); |
| | | } |
| | | //初始EXCEL信息 |
| | | response.setContentType("multipart/form-data"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | //这里URLEncoder.encode可以防止中文乱码 |
| | | String fileName = URLEncoder.encode("SN关联物料" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx", "UTF-8"); |
| | | response.setHeader("Content-disposition", "attachment;filename=" + fileName); |
| | | |
| | | List<SNAssociatedItemEntity> traceSNItemEntityList = new ArrayList<>(); |
| | | for (int i = 0; i < workCenterOperationInfomationSheet.getRows(); i++) { |
| | | FieldSetEntity fieldSetEntity = workCenterOperationInfomationSheet.getFieldSetEntity(i); |
| | | Map<Object, Object> values = fieldSetEntity.getValues(); |
| | | JSONObject jsonObject = new JSONObject((Map) values); |
| | | SNAssociatedItemEntity manufacturingOrderEntity = jsonObject.toBean(SNAssociatedItemEntity.class); |
| | | traceSNItemEntityList.add(manufacturingOrderEntity); |
| | | } |
| | | ServletOutputStream outputStream = response.getOutputStream(); |
| | | ExcelWriter excelWriter = EasyExcel.write(outputStream, SNAssociatedItemEntity.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); |
| | | |
| | | DataTableEntity workCenterOperationInfomationSheet; |
| | | try { |
| | | WriteSheet writeSheet = EasyExcel.writerSheet(1, "data").build(); |
| | | excelWriter.write(traceSNItemEntityList, writeSheet); |
| | | do { |
| | | workCenterOperationInfomationSheet = this.dtSNItemInfo(fse); |
| | | if (DataTableEntity.isEmpty(workCenterOperationInfomationSheet)) { |
| | | continue; |
| | | } |
| | | List<SNAssociatedItemEntity> traceSNItemEntityList = new ArrayList<>(); |
| | | for (int i = 0; i < workCenterOperationInfomationSheet.getRows(); i++) { |
| | | FieldSetEntity fieldSetEntity = workCenterOperationInfomationSheet.getFieldSetEntity(i); |
| | | Map<Object, Object> values = fieldSetEntity.getValues(); |
| | | JSONObject jsonObject = new JSONObject((Map) values); |
| | | SNAssociatedItemEntity manufacturingOrderEntity = jsonObject.toBean(SNAssociatedItemEntity.class); |
| | | traceSNItemEntityList.add(manufacturingOrderEntity); |
| | | } |
| | | |
| | | WriteSheet writeSheet = EasyExcel.writerSheet(1, "data").build(); |
| | | excelWriter.write(traceSNItemEntityList, writeSheet); |
| | | |
| | | |
| | | fse.setValue(CmnConst.CPAGE, fse.getInteger(CmnConst.CPAGE) + 1); |
| | | } while ( |
| | | isAll && workCenterOperationInfomationSheet != null && workCenterOperationInfomationSheet.getSqle().isCountLoad()); |
| | | } catch (Exception e) { |
| | | throw e; |
| | | } finally { |
| | |
| | | boolean isRecentData = fse.getBoolean(CmnConst.IS_RECENT_DATA) == true;//是否近期数据 |
| | | Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); //页数大小 |
| | | Integer cpage = fse.getInteger(CmnConst.CPAGE); //目标页 |
| | | |
| | | SQLEntity sqle = new SQLEntity(); |
| | | sqle.setCountLoad(false); |
| | | //创建tracking表SQL,并获取过滤的数据 |
| | | String parseTrackingSql = createTrackingSql(fse, isBakTable, isRecentData); |
| | | DataTableEntity dtTracking = baseDao.listTable(parseTrackingSql, new Object[]{}, pageSize, cpage); |
| | | if (!BaseUtil.dataTableIsEmpty(dtTracking)) { |
| | | |
| | | if (dtTracking.getRows() == pageSize) { |
| | | sqle.setCountLoad(true); |
| | | } |
| | | //获取总条数 |
| | | String totalTrackingSql = "SELECT COUNT(*)count_total FROM (" + parseTrackingSql + ")t"; |
| | | // FieldSetEntity fseTotalTracking = baseDao.getFieldSetBySQL(totalTrackingSql, new Object[]{}, false); |
| | |
| | | //Method1:使用OR查询 |
| | | Object[] serialNumbers = dtTracking.getUuids(); |
| | | String keypSql = createKeypSql(serialNumbers, isBakTable, isRecentData); |
| | | System.out.println(keypSql); |
| | | DataTableEntity dtKeyp = baseDao.listTable(keypSql, new Object[]{}); |
| | | |
| | | if (!BaseUtil.dataTableIsEmpty(dtKeyp)) { |
| | | //将tracking表的数据转为(key,value)形式存储 |
| | | JSONObject json = convertDataTableToJson(dtTracking); |
| | | addKeypInfo(json, dtKeyp); |
| | | dtKeyp.setSqle(sqle); |
| | | return dtKeyp; |
| | | } |
| | | } |
| | | return null; |
| | | DataTableEntity dataTableEntity = new DataTableEntity(); |
| | | dataTableEntity.setSqle(sqle); |
| | | return dataTableEntity; |
| | | } |
| | | } |