package com.thhy.materials.modules.biz.concret.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.thhy.general.common.BasicResult; import com.thhy.general.config.SysUserInfo; import com.thhy.general.utils.UserInfoUtils; import com.thhy.materials.modules.biz.concret.entity.TMaterialRelease; import com.thhy.materials.modules.biz.concret.entity.TRawMaterial; import com.thhy.materials.modules.biz.concret.entity.TReleaseData; import com.thhy.materials.modules.biz.concret.entity.dto.DicetName; import com.thhy.materials.modules.biz.concret.entity.dto.PieceDto; import com.thhy.materials.modules.biz.concret.mapper.TMaterialReleaseMappper; import com.thhy.materials.modules.biz.concret.service.TMaterialReleaseService; import com.thhy.materials.modules.biz.weigh.mapper.WeighMapper; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class TMaterialReleaseServiceImpl implements TMaterialReleaseService { @Resource private TMaterialReleaseMappper materialReleaseMappper; @Resource private WeighMapper weighMapper; @Override @Transactional public BasicResult materialReleaseInsert(Map values) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); String userId = sysUserInfo.getUserId(); Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format1 = format.format(date); values.put("materialReleaseTime",format1); values.put("companyId",companyId); values.put("createUser",userId); values.put("materialReleaseId",""); materialReleaseMappper.materialReleaseInsert(values); List> tReleaseData = (List>) values.get("releaseData"); for (Map releaseData : tReleaseData){ releaseData.put("materialReleaseId",values.get("materialReleaseId").toString()); releaseData.put("releaseDataId",""); materialReleaseMappper.releaseDataInsert(releaseData); } return BasicResult.success(); } @Override public BasicResult dictList() { List dictList = weighMapper.dictList(); return BasicResult.success(dictList); } @Override public BasicResult materialReleaseList(HashMap values) { Integer pageSize = Integer.valueOf(values.get("pageSize").toString()); Integer pageNum = Integer.valueOf(values.get("pageNum").toString()); PageHelper.startPage(pageNum,pageSize); List materialReleases = materialReleaseMappper.materialReleaseList(values); for (TMaterialRelease materialRelease : materialReleases){ List tReleaseData = materialReleaseMappper.materialDataList(materialRelease.getMaterialReleaseId()); DecimalFormat df = new DecimalFormat("#.####"); tReleaseData.stream().forEach(tReleaseData1 -> { if(tReleaseData1.getReleaseData()!=null && tReleaseData1.getReleaseData()>0){ String formattedNumber = df.format(tReleaseData1.getReleaseData()); tReleaseData1.setReleaseData(Double.valueOf(formattedNumber)); } }); if(materialRelease.getQuantity()!=null){ String formattedNumber = df.format(materialRelease.getQuantity()); materialRelease.setQuantity(Double.valueOf(formattedNumber)); } materialRelease.setTReleaseData(tReleaseData); } PageInfo tMaterialReleasePageInfo = new PageInfo<>(materialReleases); return BasicResult.success(tMaterialReleasePageInfo); } @Override @Transactional public BasicResult materialReleaseUpdate(Map values) { materialReleaseMappper.materialReleaseUpdate(values); materialReleaseMappper.releaseDataDel(values.get("materialReleaseId").toString()); List> tReleaseData = (List>) values.get("releaseData"); for (Map releaseData : tReleaseData){ releaseData.put("materialReleaseId",values.get("materialReleaseId").toString()); releaseData.put("releaseDataId",""); materialReleaseMappper.releaseDataInsert(releaseData); } return BasicResult.success(); } @Override @Transactional public BasicResult materialReleaseDel(String materialReleaseId) { materialReleaseMappper.materialReleaseDel(materialReleaseId); return BasicResult.success(); } @Override public BasicResult materialReleaseExcel(HashMap values, HttpServletResponse response) throws FileNotFoundException { List materialReleases = materialReleaseMappper.materialReleaseList(values); for (TMaterialRelease materialRelease : materialReleases){ List tReleaseData = materialReleaseMappper.materialDataList(materialRelease.getMaterialReleaseId()); materialRelease.setTReleaseData(tReleaseData); } XSSFWorkbook book = new XSSFWorkbook(); XSSFSheet sheet = book.createSheet(); XSSFRow row1 = sheet.createRow(0); List dictList = weighMapper.dictList(); if(materialReleases.size()>0&&dictList.size()>0){ // 创建一个合并单元格区域,从A1到D1 CellRangeAddress mergedRegion = new CellRangeAddress(0, 1, 0, 0); CellRangeAddress mergedRegion1 = new CellRangeAddress(0, 1, 1, 1); sheet.addMergedRegion(mergedRegion); sheet.addMergedRegion(mergedRegion1); row1.createCell(0).setCellValue("时间"); row1.createCell(1).setCellValue("方量"); CellRangeAddress mergedRegionD1 = new CellRangeAddress(0, 0, 2, 1+dictList.size()); CellRangeAddress mergedRegionD2 = new CellRangeAddress(0, 0, 2+dictList.size(), 1+dictList.size()+dictList.size()); sheet.addMergedRegion(mergedRegionD1); sheet.addMergedRegion(mergedRegionD2); row1.createCell(2).setCellValue("理论配比(kg/m³)"); row1.createCell(2+dictList.size()).setCellValue("实际消耗(kg/m³)"); for (int i=0 ; i values) { Integer pageSize = Integer.valueOf(values.get("pageSize").toString()); Integer pageNum = Integer.valueOf(values.get("pageNum").toString()); PageHelper.startPage(pageNum,pageSize); List pieceDtos = materialReleaseMappper.pieceList(values); for (PieceDto pieceDto : pieceDtos){ List rawMaterials = materialReleaseMappper.materialRew(pieceDto.getById()); pieceDto.setRawMaterials(rawMaterials); } PageInfo pieceDtoPageInfo = new PageInfo<>(pieceDtos); return BasicResult.success(pieceDtoPageInfo); } }