试运行问题修复

This commit is contained in:
hongchao 2025-05-19 08:54:57 +08:00
parent 229cf0eaff
commit 934c22bc47
10 changed files with 484 additions and 41 deletions

View File

@ -568,7 +568,7 @@ public class BackReceiveServiceImpl implements BackReceiveService {
applyInfo.setUnitNames(typeTreeNode.getUnitNames());
applyInfo.setTypeId(String.valueOf(typeTreeNode.getTypeId()));
applyInfo.setUseNum(typeTreeNode.getNum());
applyInfo.setBackNum(applyInfo.getPreNum());
applyInfo.setBackNum(applyInfo.getInCompletedBackNum());
foundMatch = true;
break;
}

View File

@ -9,7 +9,10 @@ import org.apache.poi.ss.util.RegionUtil;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -264,6 +267,65 @@ public class PoiOutPage {
return workbook;
}
public static HSSFWorkbook excelForcheckTwoMonth(List<Map<String, Object>> result, List<String> list, String filename, String projectName, String unit, BigDecimal totalCost,BigDecimal totalCostReal,int type,String month) {
// 创建工作簿和工作表
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
sheet.setDefaultColumnWidth(16); // 设置列宽
// 创建样式
HSSFCellStyle titleStyle = createTitleStyle(workbook);
HSSFCellStyle headerStyle = createHeaderStyle(workbook);
HSSFCellStyle contentStyle = createCellStyleCost(workbook);
HSSFCellStyle headerStyleNoSide = createHeaderStyleNoSide(workbook);
// 设置工作簿名称
workbook.setSheetName(0, filename);
// 填充标题行
int rowNum = 0;
rowNum = createTitleRowStyleMonth(sheet, rowNum, filename, titleStyle, list.size());
rowNum = createProjectAndUnitRowMonth(sheet, rowNum, projectName, unit, titleStyle, list.size(),type,month);
// 填充表头
rowNum = createHeaderRowMonth(sheet, rowNum, list, headerStyle);
// 填充数据行
if (result != null && !result.isEmpty()) {
rowNum = createDataRowsMonth(sheet, rowNum, result, contentStyle, list.size());
} else {
// 如果没有数据则仅显示表头
// rowNum++;
// rowNum = createDataRows(sheet, rowNum, result, contentStyle, list.size());
HSSFRow row = sheet.createRow(rowNum++);
HSSFCell cell = row.createCell(0);
cell.setCellStyle(headerStyle);
cell.setCellValue("暂无数据");
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (list.size() - 1)));
CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (list.size() - 1));
// 设置边框样式
RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet);
}
rowNum = createTotalRowMonth(sheet, rowNum, list, totalCost,totalCostReal, headerStyle);
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(30);
HSSFCell cell1 = row.createCell(1);
cell1.setCellStyle(headerStyleNoSide);
cell1.setCellValue("主管:");
HSSFCell cell2 = row.createCell(4);
cell2.setCellStyle(headerStyleNoSide);
cell2.setCellValue("审核:");
HSSFCell cell3 = row.createCell(7);
cell3.setCellStyle(headerStyleNoSide);
cell3.setCellValue("经办人:");
return workbook;
}
public static HSSFWorkbook excelForcheckAll(List<Map<String, Object>> resultLease,List<Map<String, Object>> resultLose,List<Map<String, Object>> resultRepair,List<Map<String, Object>> resultScrap,List<Map<String, Object>> resultsReduction,
List<String> listLease,List<String> listLose,List<String> listRepair,List<String> listScrap,List<String> listReduction, String filename, String projectName, String unit,
BigDecimal totalCostLease, BigDecimal totalCostLose, BigDecimal totalCostRepair, BigDecimal totalCostScrap,BigDecimal totalCostReduction) {
@ -681,6 +743,62 @@ public class PoiOutPage {
RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet);
return rowNum;
}
/**
* 在month数据的最后一行添加费用小计
*
* @param sheet 工作表
* @param rowNum 当前行号
* @param list 列名列表
* @param totalCost 总费用
* @param headerStyle 表头样式
*/
private static int createTotalRowMonth(HSSFSheet sheet, int rowNum, List<String> list, BigDecimal totalCost,BigDecimal totalCostReal, HSSFCellStyle headerStyle) {
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(30);
sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 0, 1));
HSSFCell cell = row.createCell(0);
cell.setCellStyle(headerStyle);
cell.setCellValue("合计");
// 设置边框样式覆盖整个合并区域
CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1);
RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet);
sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 2, (short) (list.size() - 4)));
CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (list.size() - 4));
// 设置边框样式
RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet);
// 假设总费用应该放在最后一列
int totalCostColumnIndex = list.size() - 3;
HSSFCell cell1 = row.createCell(totalCostColumnIndex);
cell1.setCellStyle(headerStyle);
cell1.setCellValue(String.format("%.2f", totalCost));
// 设置边框样式覆盖整个合并区域
CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 1, rowNum - 1, list.size() - 3, list.size() - 2); // 修改为包含至少两个单元格
RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet);
int totalCostColumnIndexTwo = list.size() - 2;
HSSFCell cell2 = row.createCell(totalCostColumnIndexTwo);
cell2.setCellStyle(headerStyle);
cell2.setCellValue(String.format("%.2f", totalCostReal));
int totalCostColumnIndexThree = list.size() - 1;
HSSFCell cellThree = row.createCell(totalCostColumnIndexThree);
cellThree.setCellStyle(headerStyle);
return rowNum;
}
/**
* 在数据的最后一行添加合计费用
*
@ -746,6 +864,27 @@ public class PoiOutPage {
return rowNum;
}
/**
* 创建月结标题行以及样式
*/
private static int createTitleRowStyleMonth(HSSFSheet sheet, int rowNum, String filename, HSSFCellStyle titleStyle, int nColumn) {
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(40);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (short) (nColumn - 1)));
HSSFCell cell = row.createCell(0);
cell.setCellStyle(titleStyle);
cell.setCellValue(filename);
// // 添加边框
// CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, rowNum - 1, (short) (nColumn - 1));
// // 设置边框样式
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet);
return rowNum;
}
/**
* 创建标题行以及样式--all
*/
@ -857,6 +996,124 @@ public class PoiOutPage {
return rowNum;
}
/**
* 创建结算单位和结算工程行
*/
private static int createProjectAndUnitRowMonth(HSSFSheet sheet, int rowNum, String projectName, String unitName,HSSFCellStyle titleStyle, int nColumn,int type,String month) {
// 第一行结算单位
HSSFRow row1 = sheet.createRow(rowNum++);
row1.setHeightInPoints(30);
// bug修复修改合并单元格区域确保包含两个或以上单元格
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1)); // 结算单位 占8
HSSFCell cell1 = row1.createCell(0);
cell1.setCellStyle(titleStyle);
cell1.setCellValue("领用单位:");
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 6))); // unitName 占剩余的22
HSSFCell cell2 = row1.createCell(2);
cell2.setCellStyle(titleStyle);
cell2.setCellValue(unitName);
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 5), (short) (nColumn - 4))); // 月结月份 占8
HSSFCell cellMonth = row1.createCell(6);
cellMonth.setCellStyle(titleStyle);
cellMonth.setCellValue("月结月份:");
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 3), (short) (nColumn - 1))); // 月份值 占剩余的22
HSSFCell cellMonthTwo = row1.createCell(8);
cellMonthTwo.setCellStyle(titleStyle);
try {
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy年M月");
Date date = inputFormat.parse(month);
cellMonthTwo.setCellValue(outputFormat.format(date));
} catch (ParseException e) {
// 如果解析失败直接使用原始值
cellMonthTwo.setCellValue(month);
}
// 第二行结算工程
HSSFRow row2 = sheet.createRow(rowNum++);
row2.setHeightInPoints(30);
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1)); // 工程名称 占8
HSSFCell cell3 = row2.createCell(0);
cell3.setCellStyle(titleStyle);
cell3.setCellValue("工程名称:");
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 6))); // projectName 占剩余的22
HSSFCell cell4 = row2.createCell(2);
cell4.setCellStyle(titleStyle);
cell4.setCellValue(projectName);
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 5), (short) (nColumn - 4))); // 费用承担方 占8
HSSFCell cell5 = row2.createCell(6);
cell5.setCellStyle(titleStyle);
cell5.setCellValue("费用承担方:");
sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 3), (short) (nColumn - 1))); // 费用承担方值 占剩余的22
HSSFCell cell6 = row2.createCell(8);
// 创建红色字体样式
HSSFCellStyle redStyle = sheet.getWorkbook().createCellStyle();
redStyle.cloneStyleFrom(titleStyle); // 复制原有样式
HSSFFont font = sheet.getWorkbook().createFont();
font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); // 设置字体颜色为红色
font.setFontHeightInPoints((short) 12);
redStyle.setFont(font);
cell6.setCellStyle(redStyle); // 应用红色字体样式
if(type==1){
cell6.setCellValue("01(项目)");
}else{
cell6.setCellValue("03(分包)");
}
// 添加边框
CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 2, rowNum - 2, 0, 1);
CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 2, rowNum - 2, 2, (short) (nColumn - 6));
CellRangeAddress cellRangeMonthOne = new CellRangeAddress(rowNum - 2, rowNum - 2, (short) (nColumn - 5), (short) (nColumn - 4));
CellRangeAddress cellRangeMonthTwo = new CellRangeAddress(rowNum -2, rowNum - 2, (short) (nColumn - 3), (short) (nColumn - 1));
CellRangeAddress cellRange3 = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1);
CellRangeAddress cellRange4 = new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 6));
CellRangeAddress cellRange5 = new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 5), (short) (nColumn - 4));
CellRangeAddress cellRange6 = new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 3), (short) (nColumn - 1));
// 设置边框样式
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRangeMonthOne, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRangeMonthOne, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRangeMonthOne, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRangeMonthOne, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRangeMonthTwo, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRangeMonthTwo, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRangeMonthTwo, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRangeMonthTwo, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange3, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange3, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange3, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange3, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange4, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange4, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange4, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange4, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange5, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange5, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange5, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange5, sheet);
// RegionUtil.setBorderTop(BorderStyle.THIN, cellRange6, sheet);
// RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange6, sheet);
// RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange6, sheet);
// RegionUtil.setBorderRight(BorderStyle.THIN, cellRange6, sheet);
return rowNum;
}
/**
* 创建结算单位和结算工程行
*/
@ -981,6 +1238,21 @@ public class PoiOutPage {
return rowNum;
}
/**
* 创建表头行
*/
private static int createHeaderRowMonth(HSSFSheet sheet, int rowNum, List<String> list, HSSFCellStyle headerStyle) {
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(40);
for (int j = 0; j < list.size(); j++) {
HSSFCell cell = row.createCell(j);
String header = list.get(j);
cell.setCellStyle(headerStyle);
cell.setCellValue(header != null ? header : "");
}
return rowNum;
}
private static int createHeaderRowTwo(HSSFSheet sheet, int rowNum, List<String> list, HSSFCellStyle headerStyle) {
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(20);
@ -1024,6 +1296,23 @@ public class PoiOutPage {
return rowNum;
}
private static int createDataRowsMonth(HSSFSheet sheet, int rowNum, List<Map<String, Object>> result,
HSSFCellStyle contentStyle, int nColumn) {
for (Map<String, Object> resultRow : result) {
HSSFRow row = sheet.createRow(rowNum++);
row.setHeightInPoints(15);
List<Object> rowData = map2List(resultRow);
for (int j = 0; j < nColumn; j++) {
HSSFCell cell = row.createCell(j);
Object data = rowData.get(j);
cell.setCellStyle(contentStyle);
setCellData(cell, data, contentStyle);
}
}
return rowNum;
}
/**
* 设置单元格数据并自动判断数据类型
*/

View File

@ -56,11 +56,11 @@ public class SltAgreementInfoController extends BaseController {
@Resource
private SltAgreementInfoService sltAgreementInfoService;
// @Autowired
// private CalcMonthlyService calcMonthlyService;
//
// @Value("${sgzb.job.settlementJobDay}")
// private String settlementJobDay;
@Autowired
private CalcMonthlyService calcMonthlyService;
@Value("${sgzb.job.settlementJobDay}")
private String settlementJobDay;
@ApiOperation(value = "工程下拉选")
@GetMapping("getProjectListByUnitIds")
@ -113,36 +113,71 @@ public class SltAgreementInfoController extends BaseController {
}
// @RequiresPermissions("cost:settlement:export")
@ApiOperation(value = "月结明细导出")
// @ApiOperation(value = "月结明细导出")
// @PostMapping("/exportSltInfoMonth")
// public void exportSltInfoMonth(HttpServletResponse response, @RequestBody List<AgreementInfo> list) throws IOException {
// List<SltAgreementInfo> sltInfoMonth = sltAgreementInfoService.getSltInfoMonth(list);
// List<List<MonthRepairInfo>> allLists = new ArrayList<>();
// for (AgreementInfo agreementInfo : list) {
// List<MonthRepairInfo> list1 = new ArrayList<>();
// for (SltAgreementInfo sltAgreementInfo : sltInfoMonth) {
// // 单个协议导出
// if (StringUtils.isNotBlank(agreementInfo.getCodeNum())) {
// String[] split = agreementInfo.getCodeNum().split(",");
// for (String s : split) {
// if (s.equals(sltAgreementInfo.getCodeNum().toString())) {
// List<SltAgreementInfo> node = sltAgreementInfo.getNode();
// List<MonthRepairInfo> leaseInfoList = Convert.toList(MonthRepairInfo.class, node);
// list1.addAll(leaseInfoList);
// }
// }
// } else {
// if (String.valueOf(agreementInfo.getAgreementId()).equals(sltAgreementInfo.getAgreementId())){
// // 多个协议导出
// List<SltAgreementInfo> node = sltAgreementInfo.getNode();
// List<MonthRepairInfo> leaseInfoList = Convert.toList(MonthRepairInfo.class, node);
// list1.addAll(leaseInfoList);
// }
// }
// }
// allLists.add(list1);
// }
// exportMultipleLists(allLists, response);
// }
/**
* 租赁明细导出
*/
@Log(title = "月结明细导出", businessType = BusinessType.EXPORT)
@PostMapping("/exportSltInfoMonth")
public void exportSltInfoMonth(HttpServletResponse response, @RequestBody List<AgreementInfo> list) throws IOException {
// @RequiresPermissions("ndertake:export_1")
public void exportLeaseMonth(HttpServletResponse response, @RequestBody List<AgreementInfo> list) throws Exception {
String fileName = "重庆市送变电工程有限公司设备租赁台班费月结算单";
List<SltAgreementInfo> sltInfoMonth = sltAgreementInfoService.getSltInfoMonth(list);
List<List<MonthRepairInfo>> allLists = new ArrayList<>();
for (AgreementInfo agreementInfo : list) {
List<MonthRepairInfo> list1 = new ArrayList<>();
for (SltAgreementInfo sltAgreementInfo : sltInfoMonth) {
// 单个协议导出
if (StringUtils.isNotBlank(agreementInfo.getCodeNum())) {
String[] split = agreementInfo.getCodeNum().split(",");
for (String s : split) {
if (s.equals(sltAgreementInfo.getCodeNum().toString())) {
List<SltAgreementInfo> node = sltAgreementInfo.getNode();
List<MonthRepairInfo> leaseInfoList = Convert.toList(MonthRepairInfo.class, node);
list1.addAll(leaseInfoList);
}
}
} else {
if (String.valueOf(agreementInfo.getAgreementId()).equals(sltAgreementInfo.getAgreementId())){
// 多个协议导出
List<SltAgreementInfo> node = sltAgreementInfo.getNode();
List<MonthRepairInfo> leaseInfoList = Convert.toList(MonthRepairInfo.class, node);
list1.addAll(leaseInfoList);
}
for (SltAgreementInfo sltAgreementInfo : sltInfoMonth) {
if(String.valueOf(sltAgreementInfo.getCodeNum()).equals(list.get(0).getCodeNum())){
List<SltAgreementInfo> explist = sltAgreementInfo.getNode();
String projectName = sltAgreementInfo.getProjectName();
String unitName = sltAgreementInfo.getUnitName();
String month = sltAgreementInfo.getMonth();
BigDecimal totalCost = BigDecimal.valueOf(0.00);
BigDecimal totalCostReal = BigDecimal.valueOf(0.00);
for (SltAgreementInfo sltAgreementInfoOne : explist) {
totalCost = totalCost.add(sltAgreementInfoOne.getCosts());
totalCostReal = totalCostReal.add(sltAgreementInfoOne.getRealCosts());
}
List<MonthRepairInfo> leaseInfoList = Convert.toList(MonthRepairInfo.class, explist);
if(sltAgreementInfo.getCostBearingParty().equals("01")){
expOutExcelMonth(response,leaseInfoList,fileName,projectName,unitName,totalCost,totalCostReal,1,month);
}else{
expOutExcelMonth(response,leaseInfoList,fileName,projectName,unitName,totalCost,totalCostReal,3,month);
}
ExcelUtil<MonthRepairInfo> util = new ExcelUtil<MonthRepairInfo>(MonthRepairInfo.class);
util.exportExcel(response, leaseInfoList, "月结明细导出");
}
allLists.add(list1);
}
exportMultipleLists(allLists, response);
};
}
/**
@ -410,6 +445,51 @@ public class SltAgreementInfoController extends BaseController {
}
}
/**
* 导出结算单
* @param response
* @param list
* @param filename
* @throws Exception
*/
private void expOutExcelMonth(HttpServletResponse response, List<MonthRepairInfo> list, String filename,String projectName,String unitName,BigDecimal totalCost,BigDecimal totalCostReal,int type,String month)
throws Exception {
if (list != null) {
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
int size = list.size();
for (int i = 0; i < size; i++) {
MonthRepairInfo bean = list.get(i);
Map<String, Object> maps = outReceiveDetailsBeanToMapMonth(bean,type,0);
results.add(maps);
}
List<String> headers = receiveDetailsHeaderMonth(type);
HSSFWorkbook workbook = PoiOutPage.excelForcheckTwoMonth(results, headers, filename,projectName,unitName,totalCost,totalCostReal,type,month);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}else{
List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();
List<String> headers = receiveDetailsHeaderMonth(type);
HSSFWorkbook workbook = PoiOutPage.excel(results, headers, filename);
OutputStream out = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls");
response.setHeader("Pragma", "No-cache");
out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}
}
/**
* 租赁费用单数据转换
* @param bean
@ -457,6 +537,51 @@ public class SltAgreementInfoController extends BaseController {
return maps;
}
/**
* 租赁费用单数据转换
* @param bean
* @return
*/
private Map<String, Object> outReceiveDetailsBeanToMapMonth(MonthRepairInfo bean,int type,int flag) {
// 创建一个SimpleDateFormat对象定义日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> maps = new LinkedHashMap<String, Object>();
// maps.put("unitName", bean.getUnitName());
// maps.put("projectName", bean.getProjectName());
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
maps.put("nuitName", bean.getNuitName());
maps.put("num", bean.getNum());
maps.put("leasePrice", bean.getLeasePrice());
maps.put("startTime", bean.getStartTime());
maps.put("endTime", bean.getEndTime());
maps.put("leaseDays", bean.getLeaseDays());
maps.put("costs", bean.getCosts().setScale(2, RoundingMode.HALF_UP));
maps.put("realCosts", bean.getRealCosts().setScale(2, RoundingMode.HALF_UP));
maps.put("remark",bean.getRemark());
return maps;
}
/**
* 月结费用单表头
* @return
*/
private List<String> receiveDetailsHeaderMonth(int type) {
ArrayList<String> list = new ArrayList<String>();
list.add("设备名称");
list.add("规格型号");
list.add("单位");
list.add("数量");
list.add("台班费单价(元/天)");
list.add("起租日期");
list.add("结算日期");
list.add("结算天数");
list.add("结算金额(元)");
list.add("本次暂记金额(元)");
list.add("备注");
return list;
}
/**
* 租赁费用单表头
* @return

View File

@ -131,6 +131,14 @@ public class MonthRepairInfo {
this.month = month;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 领料时间
*/
@ -212,4 +220,9 @@ public class MonthRepairInfo {
// @Excel(name = "月份")
@ExcelProperty(value = "月份")
private String month;
/**
* 备注
*/
private String remark;
}

View File

@ -77,4 +77,8 @@ public class ProjectMonthDetail {
private String nuitName;
private BigDecimal costs;
private BigDecimal realCosts;
/**
* 备注
*/
private String remark;
}

View File

@ -187,6 +187,7 @@ public class CalcMonthlyServiceImp implements CalcMonthlyService {
projectMonthDetail.setSltCosts(bean.getCosts());
projectMonthDetail.setMonthTemporarilyCosts(bean.getRealCosts());
projectMonthDetail.setProMonthCostId(pmcId);
projectMonthDetail.setRemark(bean.getRemark());
calMonthlyMapper.insertProjectMonthDetail(projectMonthDetail);
}
sltAgreementInfo.setCosts(leaseCostOne);

View File

@ -565,11 +565,11 @@ public class BackApplyServiceImpl implements BackApplyService {
if (bean == null || bean.getBackApplyInfo() == null || CollectionUtils.isEmpty(bean.getBackApplyDetails())) {
return AjaxResult.error("退料申请数据不能为空");
}
for (BackApplyInfo backApplyDetail : bean.getBackApplyDetails()) {
if (backApplyDetail.getBackNum() != null && backApplyDetail.getUseNum() != null && backApplyDetail.getBackNum() > Integer.parseInt(backApplyDetail.getUseNum())){
return AjaxResult.error("退料数不能超过在用数");
}
}
// for (BackApplyInfo backApplyDetail : bean.getBackApplyDetails()) {
// if (backApplyDetail.getBackNum() != null && backApplyDetail.getUseNum() != null && backApplyDetail.getBackNum() > Integer.parseInt(backApplyDetail.getUseNum())){
// return AjaxResult.error("退料数不能超过在用数");
// }
// }
String backTime = null;
if(bean.getBackApplyInfo().getBackTime()!=null){
backTime = bean.getBackApplyInfo().getBackTime();

View File

@ -677,7 +677,7 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService {
Map<String, SltAgreementInfo> mergedMap = new HashMap<>();
for (SltAgreementInfo info : leaseList) {
String key = info.getTypeId();
if (info.getStartTime() != null && info.getEndTime() != null) {
if (info.getStartTime() != null || info.getEndTime() != null) {
key += "_" + info.getStartTime() + "_" + info.getEndTime();
}
if (mergedMap.containsKey(key)) {

View File

@ -13,9 +13,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(#{agreementId},#{taskId},#{unitId},#{projectId},#{month},#{costBearingParty},now())
</insert>
<insert id="insertProjectMonthDetail">
insert into project_month_detail (type_id,ma_id,unit,start_time,end_time,slt_days,slt_costs,month_temporarily_costs,pro_month_cost_id,num,lease_price,create_time)
insert into project_month_detail (type_id,ma_id,unit,start_time,end_time,slt_days,slt_costs,month_temporarily_costs,pro_month_cost_id,num,lease_price,create_time,remark)
values
(#{typeId},#{maId},#{unit},#{startTime},#{endTime},#{sltDays},#{sltCosts},#{monthTemporarilyCosts},#{proMonthCostId},#{num},#{leasePrice},now())
(#{typeId},#{maId},#{unit},#{startTime},#{endTime},#{sltDays},#{sltCosts},#{monthTemporarilyCosts},#{proMonthCostId},#{num},#{leasePrice},now(),#{remark})
</insert>
<update id="updateProMonCosts">
update project_month_costs set costs = #{costs},update_time = now() where id = #{id}
@ -66,7 +66,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
DATE_FORMAT( pmd.end_time, '%Y-%m-%d' ) as endTime,
pmd.slt_days as leaseDays,
pmd.slt_costs as costs,
pmd.month_temporarily_costs as realCosts
pmd.month_temporarily_costs as realCosts,
pmd.remark as remark
FROM
project_month_detail pmd
LEFT JOIN project_month_costs pmc ON pmd.pro_month_cost_id = pmc.id

View File

@ -445,6 +445,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sai.is_slt AS isSlt,
lai.cost_bearing_party AS costBearingParty,
sai.trim_day AS trimDay,
IF (
sai.replace_type_id > 0,
'以大代小',
''
) AS remark,
DATE(#{bean.startTime}) AS startTime,
DATE(#{bean.endTime}) AS endTime,
DATEDIFF(#{bean.endTime}, #{bean.startTime}) + 1 AS leaseDays
@ -596,6 +601,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bp.lot_id AS lotId,
DATE( sai.start_time ) AS startTime,
lai.cost_bearing_party AS costBearingParty,
IF (
sai.replace_type_id > 0,
'以大代小',
''
) AS remark,
DATE( COALESCE ( sai.end_time, CURDATE() ) ) AS endTime
FROM
slt_agreement_info sai