Commit 871eac5b3ddc01fbbf741a7ec42c90ed7a8cf8d6

Authored by 房远帅
1 parent 55489fa9

销售:规格变更单-模板调整和时间变更打印不展示修改

@@ -200,20 +200,12 @@ public class OrderChangeRecordController extends DefaultBaseController { @@ -200,20 +200,12 @@ public class OrderChangeRecordController extends DefaultBaseController {
200 200
201 // 过滤需要显示的变更前记录(DELETE 或 UPDATE 且有变化) 201 // 过滤需要显示的变更前记录(DELETE 或 UPDATE 且有变化)
202 List<PurchaseOrderLine> beforeLines = beforeChangeSpecList.stream() 202 List<PurchaseOrderLine> beforeLines = beforeChangeSpecList.stream()
203 - .filter(line -> "DELETE".equals(line.getType()) ||  
204 - ("UPDATE".equals(line.getType()) &&  
205 - (line.getBrandChange() || line.getLengthChange() || line.getWidthChange() ||  
206 - line.getThicknessChange() || line.getStatusChange() ||  
207 - line.getQuantityChange() || line.getSalesPriceChange()))) 203 + .filter(this::shouldPrintChangeLine)
208 .collect(Collectors.toList()); 204 .collect(Collectors.toList());
209 205
210 // 过滤需要显示的变更后记录(ADD 或 UPDATE 且有变化) 206 // 过滤需要显示的变更后记录(ADD 或 UPDATE 且有变化)
211 List<PurchaseOrderLine> afterLines = afterChangeSpecList.stream() 207 List<PurchaseOrderLine> afterLines = afterChangeSpecList.stream()
212 - .filter(line -> "ADD".equals(line.getType()) ||  
213 - ("UPDATE".equals(line.getType()) &&  
214 - (line.getBrandChange() || line.getLengthChange() || line.getWidthChange() ||  
215 - line.getThicknessChange() || line.getStatusChange() ||  
216 - line.getQuantityChange() || line.getSalesPriceChange()))) 208 + .filter(this::shouldPrintChangeLine)
217 .collect(Collectors.toList()); 209 .collect(Collectors.toList());
218 210
219 // ========== 填充变更前区域(起始行:5)========== 211 // ========== 填充变更前区域(起始行:5)==========
@@ -227,44 +219,7 @@ public class OrderChangeRecordController extends DefaultBaseController { @@ -227,44 +219,7 @@ public class OrderChangeRecordController extends DefaultBaseController {
227 PurchaseOrderLine line = i < beforeLines.size() ? beforeLines.get(i) : null; 219 PurchaseOrderLine line = i < beforeLines.size() ? beforeLines.get(i) : null;
228 int rowIdx = beforeStartRow + i; 220 int rowIdx = beforeStartRow + i;
229 if (line != null) { 221 if (line != null) {
230 - ExcelUtil.setCellValue(sheet, rowIdx, 0, line.getIndustry());  
231 - ExcelUtil.setCellValue(sheet, rowIdx, 1, line.getQuality());  
232 - ExcelUtil.setCellValue(sheet, rowIdx, 2, line.getBrand());  
233 - List<LatexFormulaExcelExporterUtil.FormulaComponent> formulaComponentList = new ArrayList<>(3);  
234 - if (line.getThickness() != null) {  
235 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
236 - formulaComponent.setBase(line.getThickness());  
237 - formulaComponent.setSup(line.getThicknessTolPos());  
238 - formulaComponent.setSub(line.getThicknessTolNeg());  
239 - formulaComponentList.add(formulaComponent);  
240 - }  
241 -  
242 - if (line.getWidth() != null) {  
243 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
244 - formulaComponent.setBase(line.getWidth());  
245 - formulaComponent.setSup(line.getWidthTolPos());  
246 - formulaComponent.setSub(line.getWidthTolNeg());  
247 - formulaComponentList.add(formulaComponent);  
248 - }  
249 -  
250 - if (line.getLength() != null) {  
251 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
252 - formulaComponent.setBase(line.getLength());  
253 - formulaComponent.setSup(line.getLengthTolPos());  
254 - formulaComponent.setSub(line.getLengthTolNeg());  
255 - formulaComponentList.add(formulaComponent);  
256 - }  
257 -  
258 - String latex = LatexFormulaExcelExporterUtil.convertToLatex(formulaComponentList);  
259 - if (StringUtils.isNotBlank(latex)) {  
260 - LatexFormulaExcelExporterUtil.insertLatexImageToCell(workbook, sheet, latex, rowIdx, 3, 1, 1);  
261 - }  
262 - ExcelUtil.setCellValue(sheet, rowIdx, 4, line.getStatus());  
263 - ExcelUtil.setCellValue(sheet, rowIdx, 5, line.getQuantity());  
264 - ExcelUtil.setCellValue(sheet, rowIdx, 6, line.getSalesPrice());  
265 - ExcelUtil.setCellValue(sheet, rowIdx, 7,  
266 - line.getDeliveryDate() == null ? "" : line.getDeliveryDate().format(dateFormatter));  
267 - ExcelUtil.setCellValue(sheet, rowIdx, 8, line.getAssessmentExceedsAgreement()); 222 + fillChangePrintRow(workbook, sheet, rowIdx, line, dateFormatter);
268 } else { 223 } else {
269 for (int col = 0; col <= 8; col++) { 224 for (int col = 0; col <= 8; col++) {
270 ExcelUtil.setCellValue(sheet, rowIdx, col, ""); 225 ExcelUtil.setCellValue(sheet, rowIdx, col, "");
@@ -282,44 +237,7 @@ public class OrderChangeRecordController extends DefaultBaseController { @@ -282,44 +237,7 @@ public class OrderChangeRecordController extends DefaultBaseController {
282 PurchaseOrderLine line = i < afterLines.size() ? afterLines.get(i) : null; 237 PurchaseOrderLine line = i < afterLines.size() ? afterLines.get(i) : null;
283 int rowIdx = afterStartRow + i; 238 int rowIdx = afterStartRow + i;
284 if (line != null) { 239 if (line != null) {
285 - ExcelUtil.setCellValue(sheet, rowIdx, 0, line.getIndustry());  
286 - ExcelUtil.setCellValue(sheet, rowIdx, 1, line.getQuality());  
287 - ExcelUtil.setCellValue(sheet, rowIdx, 2, line.getBrand());  
288 - List<LatexFormulaExcelExporterUtil.FormulaComponent> formulaComponentList = new ArrayList<>(3);  
289 - if (line.getThickness() != null) {  
290 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
291 - formulaComponent.setBase(line.getThickness());  
292 - formulaComponent.setSup(line.getThicknessTolPos());  
293 - formulaComponent.setSub(line.getThicknessTolNeg());  
294 - formulaComponentList.add(formulaComponent);  
295 - }  
296 -  
297 - if (line.getWidth() != null) {  
298 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
299 - formulaComponent.setBase(line.getWidth());  
300 - formulaComponent.setSup(line.getWidthTolPos());  
301 - formulaComponent.setSub(line.getWidthTolNeg());  
302 - formulaComponentList.add(formulaComponent);  
303 - }  
304 -  
305 - if (line.getLength() != null) {  
306 - LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();  
307 - formulaComponent.setBase(line.getLength());  
308 - formulaComponent.setSup(line.getLengthTolPos());  
309 - formulaComponent.setSub(line.getLengthTolNeg());  
310 - formulaComponentList.add(formulaComponent);  
311 - }  
312 -  
313 - String latex = LatexFormulaExcelExporterUtil.convertToLatex(formulaComponentList);  
314 - if (StringUtils.isNotBlank(latex)) {  
315 - LatexFormulaExcelExporterUtil.insertLatexImageToCell(workbook, sheet, latex, rowIdx, 3, 1, 1);  
316 - }  
317 - ExcelUtil.setCellValue(sheet, rowIdx, 4, line.getStatus());  
318 - ExcelUtil.setCellValue(sheet, rowIdx, 5, line.getQuantity());  
319 - ExcelUtil.setCellValue(sheet, rowIdx, 6, line.getSalesPrice());  
320 - ExcelUtil.setCellValue(sheet, rowIdx, 7,  
321 - line.getDeliveryDate() == null ? "" : line.getDeliveryDate().format(dateFormatter));  
322 - ExcelUtil.setCellValue(sheet, rowIdx, 8, line.getAssessmentExceedsAgreement()); 240 + fillChangePrintRow(workbook, sheet, rowIdx, line, dateFormatter);
323 } else { 241 } else {
324 for (int col = 0; col <= 8; col++) { 242 for (int col = 0; col <= 8; col++) {
325 ExcelUtil.setCellValue(sheet, rowIdx, col, ""); 243 ExcelUtil.setCellValue(sheet, rowIdx, col, "");
@@ -510,4 +428,96 @@ public class OrderChangeRecordController extends DefaultBaseController { @@ -510,4 +428,96 @@ public class OrderChangeRecordController extends DefaultBaseController {
510 target.setAssessmentExceedsAgreementChange(!Objects.equals(before.getAssessmentExceedsAgreement(), after.getAssessmentExceedsAgreement())); 428 target.setAssessmentExceedsAgreementChange(!Objects.equals(before.getAssessmentExceedsAgreement(), after.getAssessmentExceedsAgreement()));
511 } 429 }
512 430
  431 + /**
  432 + * 判断当前记录是否需要在规格变更打印中展示。
  433 + *
  434 + * @param line 订货单明细
  435 + * @return true:需要打印;false:不需要打印
  436 + */
  437 + private boolean shouldPrintChangeLine(PurchaseOrderLine line) {
  438 + if (line == null) {
  439 + return false;
  440 + }
  441 + if ("DELETE".equals(line.getType()) || "ADD".equals(line.getType())) {
  442 + return true;
  443 + }
  444 + return "UPDATE".equals(line.getType()) && (line.getBrandChange()
  445 + || line.getLengthChange()
  446 + || line.getWidthChange()
  447 + || line.getThicknessChange()
  448 + || line.getStatusChange()
  449 + || line.getQuantityChange()
  450 + || line.getSalesPriceChange()
  451 + || line.getDeliveryDateChange()
  452 + || line.getAssessmentExceedsAgreementChange());
  453 + }
  454 +
  455 + /**
  456 + * 填充规格变更单打印行数据,并按订货单一致的方式渲染规格。
  457 + *
  458 + * @param workbook 工作簿
  459 + * @param sheet 工作表
  460 + * @param rowIdx 行号
  461 + * @param line 订货单明细
  462 + * @param dateFormatter 日期格式化器
  463 + * @throws IOException 规格渲染异常
  464 + */
  465 + private void fillChangePrintRow(Workbook workbook, Sheet sheet, int rowIdx, PurchaseOrderLine line,
  466 + DateTimeFormatter dateFormatter) throws IOException {
  467 + ExcelUtil.setCellValue(sheet, rowIdx, 0, line.getIndustry());
  468 + ExcelUtil.setCellValue(sheet, rowIdx, 1, line.getQuality());
  469 + ExcelUtil.setCellValue(sheet, rowIdx, 2, line.getBrand());
  470 + renderSpecForChangePrint(workbook, sheet, rowIdx, line);
  471 + ExcelUtil.setCellValue(sheet, rowIdx, 4, line.getStatus());
  472 + ExcelUtil.setCellValue(sheet, rowIdx, 5, line.getQuantity());
  473 + ExcelUtil.setCellValue(sheet, rowIdx, 6, line.getSalesPrice());
  474 + ExcelUtil.setCellValue(sheet, rowIdx, 7,
  475 + line.getDeliveryDate() == null ? "" : line.getDeliveryDate().format(dateFormatter));
  476 + ExcelUtil.setCellValue(sheet, rowIdx, 8, line.getAssessmentExceedsAgreement());
  477 + }
  478 +
  479 + /**
  480 + * 按订货单打印规则渲染规格,避免规格图片过大并保持左对齐。
  481 + *
  482 + * @param workbook 工作簿
  483 + * @param sheet 工作表
  484 + * @param rowIdx 行号
  485 + * @param line 订货单明细
  486 + * @throws IOException 规格渲染异常
  487 + */
  488 + private void renderSpecForChangePrint(Workbook workbook, Sheet sheet, int rowIdx, PurchaseOrderLine line)
  489 + throws IOException {
  490 + List<LatexFormulaExcelExporterUtil.FormulaComponent> formulaComponentList = new ArrayList<>(3);
  491 + if (line.getThickness() != null) {
  492 + LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();
  493 + formulaComponent.setBase(line.getThickness());
  494 + formulaComponent.setSup(line.getThicknessTolPos());
  495 + formulaComponent.setSub(line.getThicknessTolNeg());
  496 + formulaComponentList.add(formulaComponent);
  497 + }
  498 +
  499 + if (line.getWidth() != null) {
  500 + LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();
  501 + formulaComponent.setBase(line.getWidth());
  502 + formulaComponent.setSup(line.getWidthTolPos());
  503 + formulaComponent.setSub(line.getWidthTolNeg());
  504 + formulaComponentList.add(formulaComponent);
  505 + }
  506 +
  507 + if (line.getLength() != null) {
  508 + LatexFormulaExcelExporterUtil.FormulaComponent formulaComponent = new LatexFormulaExcelExporterUtil.FormulaComponent();
  509 + formulaComponent.setBase(line.getLength());
  510 + formulaComponent.setSup(line.getLengthTolPos());
  511 + formulaComponent.setSub(line.getLengthTolNeg());
  512 + formulaComponentList.add(formulaComponent);
  513 + }
  514 +
  515 + String latex = LatexFormulaExcelExporterUtil.convertToContractSpecLatexSingleLineFixed3(formulaComponentList);
  516 + if (StringUtils.isNotBlank(latex)) {
  517 + LatexFormulaExcelExporterUtil.insertLatexImageToCellLeftAligned(workbook, sheet, latex, rowIdx, 3, 1, 1);
  518 + } else {
  519 + ExcelUtil.setCellValue(sheet, rowIdx, 3, "");
  520 + }
  521 + }
  522 +
513 } 523 }