package com.java110.job.export.adapt; import com.alibaba.fastjson.JSONObject; import com.java110.dto.data.ExportDataDto; import com.java110.dto.privilege.BasePrivilegeDto; import com.java110.dto.resource.ResourceStoreDto; import com.java110.dto.resource.ResourceStoreTimesDto; import com.java110.intf.community.IMenuInnerServiceSMO; import com.java110.intf.store.IResourceStoreInnerServiceSMO; import com.java110.intf.store.IResourceStoreTimesV1InnerServiceSMO; import com.java110.job.export.IExportDataAdapt; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.StringUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * 物品信息导出 * * @author fqz * @date 203-11-18 10:37 */ @Service("resourceStoreManage") public class ResourceStoreAdapt implements IExportDataAdapt { @Autowired private IResourceStoreInnerServiceSMO resourceStoreInnerServiceSMOImpl; @Autowired private IResourceStoreTimesV1InnerServiceSMO resourceStoreTimesV1InnerServiceSMOImpl; @Autowired private IMenuInnerServiceSMO menuInnerServiceSMOImpl; private static final int MAX_ROW = 200; @Override public SXSSFWorkbook exportData(ExportDataDto exportDataDto) { SXSSFWorkbook workbook = null; //工作簿 //工作表 workbook = new SXSSFWorkbook(); workbook.setCompressTempFiles(false); Sheet sheet = workbook.createSheet("物品信息"); Row row = sheet.createRow(0); row.createCell(0).setCellValue("物品名称(编号)"); row.createCell(1).setCellValue("仓库名称"); row.createCell(2).setCellValue("物品类型"); row.createCell(3).setCellValue("物品规格"); row.createCell(4).setCellValue("固定物品"); row.createCell(5).setCellValue("参考价格"); row.createCell(6).setCellValue("收费标准"); row.createCell(7).setCellValue("物品库存"); row.createCell(8).setCellValue("最小计量"); row.createCell(9).setCellValue("最小计量总数"); row.createCell(10).setCellValue("物品均价"); row.createCell(11).setCellValue("物品总价"); JSONObject reqJson = exportDataDto.getReqJson(); //查询数据 getResourceStoreManage(sheet, reqJson); return workbook; } private void getResourceStoreManage(Sheet sheet, JSONObject reqJson) { ResourceStoreDto resourceStoreDto = BeanConvertUtil.covertBean(reqJson, ResourceStoreDto.class); BasePrivilegeDto basePrivilegeDto1 = new BasePrivilegeDto(); basePrivilegeDto1.setResource("/viewHiddenWarehouse"); basePrivilegeDto1.setUserId(reqJson.getString("userId")); List privileges = menuInnerServiceSMOImpl.checkUserHasResource(basePrivilegeDto1); if (privileges.size() == 0) { resourceStoreDto.setIsShow("true"); } resourceStoreDto.setPage(1); resourceStoreDto.setRow(MAX_ROW); List resourceStores = resourceStoreInnerServiceSMOImpl.queryResourceStores(resourceStoreDto); appendData(resourceStores, sheet); } private void appendData(List resourceStores, Sheet sheet) { Row row = null; for (int index = 0; index < resourceStores.size(); index++) { row = sheet.createRow(index + 1); ResourceStoreDto resourceStoreDto = resourceStores.get(index); row.createCell(0).setCellValue(resourceStoreDto.getResName() + "(" + resourceStoreDto.getResCode() + ")"); row.createCell(1).setCellValue(resourceStoreDto.getShName()); if (!StringUtil.isEmpty(resourceStoreDto.getRstName())) { row.createCell(2).setCellValue(resourceStoreDto.getParentRstName() + ">" + resourceStoreDto.getRstName()); } else { row.createCell(2).setCellValue(resourceStoreDto.getParentRstName()); } if (!StringUtil.isEmpty(resourceStoreDto.getRssName())) { row.createCell(3).setCellValue(resourceStoreDto.getRssName()); } else { row.createCell(3).setCellValue("--"); } row.createCell(4).setCellValue(resourceStoreDto.getIsFixedName()); row.createCell(5).setCellValue("¥" + resourceStoreDto.getPrice()); if (resourceStoreDto.getOutHighPrice().equals(resourceStoreDto.getOutLowPrice())) { row.createCell(6).setCellValue("¥" + resourceStoreDto.getOutLowPrice()); } else { row.createCell(6).setCellValue("¥" + resourceStoreDto.getOutLowPrice() + "-¥" + resourceStoreDto.getOutHighPrice()); } row.createCell(7).setCellValue(resourceStoreDto.getStock() + resourceStoreDto.getUnitCodeName()); row.createCell(8).setCellValue("1" + resourceStoreDto.getUnitCodeName() + "=" + resourceStoreDto.getMiniUnitStock() + resourceStoreDto.getMiniUnitCodeName()); row.createCell(9).setCellValue(resourceStoreDto.getMiniStock() + resourceStoreDto.getMiniUnitCodeName()); if (!StringUtil.isEmpty(resourceStoreDto.getAveragePrice())) { row.createCell(10).setCellValue("¥" + resourceStoreDto.getAveragePrice()); } else { row.createCell(10).setCellValue("¥0"); } //查询物品次数表resource_store_times,计算物品总价 ResourceStoreTimesDto resourceStoreTimesDto = new ResourceStoreTimesDto(); resourceStoreTimesDto.setResCode(resourceStoreDto.getResCode()); resourceStoreTimesDto.setShId(resourceStoreDto.getShId()); resourceStoreTimesDto.setStoreId(resourceStoreDto.getStoreId()); List resourceStoreTimesList = resourceStoreTimesV1InnerServiceSMOImpl.queryResourceStoreTimess(resourceStoreTimesDto); BigDecimal totalPrice = new BigDecimal(0.00); if (resourceStoreTimesList != null && resourceStoreTimesList.size() > 0) { for (ResourceStoreTimesDto resourceStoreTimes : resourceStoreTimesList) { BigDecimal stock = new BigDecimal(resourceStoreTimes.getStock()); //库存数 BigDecimal price = new BigDecimal(resourceStoreTimes.getPrice()); //资源单价 BigDecimal singlePrice = stock.multiply(price).setScale(2, BigDecimal.ROUND_HALF_UP); //计算单次总价 totalPrice = totalPrice.add(singlePrice); } } row.createCell(11).setCellValue("¥" + totalPrice); } } }