|
@@ -8,13 +8,20 @@ import cn.ezhizao.framework.web.domain.AjaxResult;
|
|
|
import cn.ezhizao.framework.web.page.TableDataInfo;
|
|
|
import cn.ezhizao.project.business.domain.*;
|
|
|
import cn.ezhizao.project.business.service.*;
|
|
|
+import cn.hutool.core.io.IoUtil;
|
|
|
import cn.hutool.json.JSONArray;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
+import com.alibaba.excel.write.metadata.fill.FillConfig;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
@@ -60,6 +67,8 @@ public class BizBeforeCheckoutVerifyController extends BaseController {
|
|
|
private IBizLotTechnologicalProcessService bizLotTechnologicalProcessService;
|
|
|
@Resource
|
|
|
private IBizLotTechnologicalProcessDetailService bizLotTechnologicalProcessDetailService;
|
|
|
+ @Value("${file.excelTemplate.url}")
|
|
|
+ private String templatePath;
|
|
|
|
|
|
/**
|
|
|
* 查询报工列表
|
|
@@ -162,6 +171,74 @@ public class BizBeforeCheckoutVerifyController extends BaseController {
|
|
|
return AjaxResult.success(bizProcessInspecionList.stream().map(BizProcessInspecion::getId).collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
+ @Log(title = "查询外协结算审核列表", businessType = BusinessType.EXPORT)
|
|
|
+ @PostMapping("/export")
|
|
|
+ public void export(HttpServletResponse response, BizProcessInspecion bizProcessInspecion) throws NoSuchFieldException, IllegalAccessException, IOException {
|
|
|
+ List<BizProcessInspecion> list = bizProcessInspecionService.getVerifyList(bizProcessInspecion);
|
|
|
+ List<BizDaywork> dayworks = bizDayworkService.query().in("id", list.isEmpty() ? Collections.singletonList(0L) : list.stream().map(BizProcessInspecion::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+ List<BizOutsourcedOrderDetail> outsourcedOrderDetails = bizOutsourcedOrderDetailService.query().in("id", list.isEmpty() ? Collections.singletonList(0L) : list.stream().map(BizProcessInspecion::getOutsourceOrderDetailId).collect(Collectors.toList())).list();
|
|
|
+ List<BizReturnReceiptDetail> returnReceiptDetails = bizReturnReceiptDetailService.query().in("id", list.isEmpty() ? Collections.singletonList(0L) : list.stream().map(BizProcessInspecion::getReturnReceiptDetailId).collect(Collectors.toList())).list();
|
|
|
+ List<BizSupplier> suppliers = bizSupplierService.query().in("id", outsourcedOrderDetails.isEmpty() ? Collections.singletonList(0L) : outsourcedOrderDetails.stream().map(BizOutsourcedOrderDetail::getSupplierId).collect(Collectors.toList())).list();
|
|
|
+ list.forEach(l -> {
|
|
|
+ l.setDaywork(dayworks.stream().filter(v -> v.getId().equals(l.getDayworkId())).findFirst().orElse(new BizDaywork()));
|
|
|
+ l.setOutsourcedOrderDetail(outsourcedOrderDetails.stream().filter(v -> v.getId().equals(l.getOutsourceOrderDetailId())).findFirst().orElse(new BizOutsourcedOrderDetail()));
|
|
|
+ l.setReturnReceiptDetail(returnReceiptDetails.stream().filter(v -> v.getId().equals(l.getReturnReceiptDetailId())).findFirst().orElse(new BizReturnReceiptDetail()));
|
|
|
+ BizSupplier supplier = suppliers.stream().filter(e -> l.getOutsourcedOrderDetail() != null && e.getId().equals(l.getOutsourcedOrderDetail().getSupplierId())).findFirst().orElse(new BizSupplier());
|
|
|
+ l.setSupplierName(supplier.getName());
|
|
|
+ l.setMnemonicCode(supplier.getMnemonicCode());
|
|
|
+ Integer materialLoss = l.getOutsourcedOrderDetail().getProductNum() - l.getReturnReceiptDetail().getAuditNum();
|
|
|
+ l.setMaterialLoss(materialLoss);
|
|
|
+ });
|
|
|
+ String template = "processInspectionTemplate";
|
|
|
+ String templateFilePath = templatePath + template + ".xlsx";
|
|
|
+ List<Map<String, Object>> exportList = new ArrayList<>();
|
|
|
+ list.forEach(l -> {
|
|
|
+ Arrays.stream(l.getProcessNames().split(",")).forEach(v -> {
|
|
|
+ Map<String, Object> value = new HashMap<>();
|
|
|
+ value.put("mnemonicCode", l.getMnemonicCode());
|
|
|
+ value.put("supplierName", l.getSupplierName());
|
|
|
+ value.put("productDescription", l.getProductDescription());
|
|
|
+ value.put("lotCode", l.getLotCode());
|
|
|
+ value.put("productNum", l.getOutsourcedOrderDetail().getProductNum());
|
|
|
+ value.put("auditNum", l.getReturnReceiptDetail().getAuditNum());
|
|
|
+ value.put("materialLoss", l.getMaterialLoss());
|
|
|
+ value.put("processName", v);
|
|
|
+ value.put("outsourceDate", l.getOutsourcedOrderDetail().getFormDate());
|
|
|
+ value.put("returnReceiptDate", l.getReturnReceiptDetail().getFormDate());
|
|
|
+ value.put("auditDate", l.getAuditStatus().equals(1) ? l.getUpdateTime() : null);
|
|
|
+// value.put("balanceDate", l.getBalanceDate());
|
|
|
+ value.put("outsourcedOrderDetailFormCode", l.getOutsourcedOrderDetail().getFormCode());
|
|
|
+ value.put("returnReceiptDetailFormCode", l.getReturnReceiptDetail().getFormCode());
|
|
|
+ value.put("carrierNum", l.getOutsourcedOrderDetail().getCarrierNum());
|
|
|
+ value.put("auditStatus", l.getAuditStatus().equals(1) ? "已审核" : "未审核");
|
|
|
+ exportList.add(value);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ com.alibaba.excel.ExcelWriter writer = EasyExcel.write(response.getOutputStream())
|
|
|
+ .withTemplate(templateFilePath)
|
|
|
+ .build();
|
|
|
+ WriteSheet firstSheet = EasyExcel.writerSheet(0).build();
|
|
|
+ FillConfig fillConfig = FillConfig.builder()
|
|
|
+ // 开启填充行 不开启是在一行覆盖,开启会创建新的行
|
|
|
+ .forceNewRow(true)
|
|
|
+ .build();
|
|
|
+ // 执行填充操作
|
|
|
+ writer.fill(exportList, fillConfig, firstSheet);
|
|
|
+ writer.finish();
|
|
|
+ response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
+ //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");
|
|
|
+ ServletOutputStream out = null;
|
|
|
+ try {
|
|
|
+ out = response.getOutputStream();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ //此处记得关闭输出Servlet流
|
|
|
+ IoUtil.close(out);
|
|
|
+// bizOutsourcedOrderService.exportTemplateProvinceAreaData(response, bizOutsourcedOrder);
|
|
|
+ }
|
|
|
+
|
|
|
private void addBalanceCheckout(List<BizProcessInspecion> inspections, String authorization) {
|
|
|
// HttpUtils.sentPostJson()
|
|
|
// 获取外协商
|