From 5074c51d978a490a1d0e9dc116a874d33ddeb16c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 04 六月 2025 13:22:03 +0800
Subject: [PATCH] DO单excel导入功能 任务工作档优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java |   78 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 1 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
index 261413d..6d2c9a9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
@@ -1,25 +1,35 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.entity.Delivery;
+import com.vincent.rsf.server.manager.entity.DeliveryItem;
+import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate;
+import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.manager.service.CompanysService;
+import com.vincent.rsf.server.manager.service.DeliveryItemService;
 import com.vincent.rsf.server.manager.service.DeliveryService;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.controller.BaseController;
 import com.vincent.rsf.server.system.service.SerialRuleService;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
@@ -29,6 +39,8 @@
 
     @Autowired
     private DeliveryService deliveryService;
+    @Autowired
+    private DeliveryItemService deliveryItemService;
 
     @PreAuthorize("hasAuthority('manager:delivery:list')")
     @PostMapping("/delivery/page")
@@ -121,7 +133,71 @@
     @PreAuthorize("hasAuthority('manager:delivery:list')")
     @PostMapping("/delivery/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        ExcelUtil.build(ExcelUtil.create(deliveryService.list(), Delivery.class), response);
+        if (!Cools.isEmpty(map) && !Cools.isEmpty(map.get("ids"))) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<Delivery> orders = new ArrayList<>();
+        if (!Objects.isNull(map.get("ids"))) {
+            List<Long> ids = JSONArray.parseArray(JSONObject.toJSONString(map.get("ids")), Long.class);
+            if (!ids.isEmpty()) {
+                orders = deliveryService.list(new LambdaQueryWrapper<Delivery>().in(Delivery::getId, ids));
+            } else {
+                orders = deliveryService.list(new LambdaQueryWrapper<>());
+            }
+        } else {
+            orders = deliveryService.list();
+        }
+        List<DeliveryTemplate> orderTemplates = new ArrayList<>();
+        for (Delivery order : orders) {
+            List<DeliveryItem> orderItems = deliveryItemService.list(new LambdaQueryWrapper<DeliveryItem>().eq(DeliveryItem::getDeliveryId, order.getId()));
+            for (DeliveryItem item : orderItems) {
+                if (Objects.isNull(item)) {
+                    continue;
+                }
+                DeliveryTemplate template = new DeliveryTemplate();
+                template.setDoCode(order.getCode())
+                        .setType(OrderType.getValType(order.getType()))
+                        .setWkType(OrderWorkType.getWorkDesc(order.getWkType()))
+                        .setAnfme(item.getAnfme() + "")
+                        .setMaktx(item.getMaktx())
+                        .setMemo(item.getMemo())
+                        .setMatnrCode(item.getMatnrCode())
+                        .setPlatItemId(item.getPlatItemId())
+                        .setSplrBatch(item.getSplrBatch())
+                        .setSplrName(item.getSplrName())
+                        .setSplrCode(item.getSplrCode());
+                orderTemplates.add(template);
+            }
+        }
+        ExcelUtil.build(ExcelUtil.create(orderTemplates, DeliveryTemplate.class), response);
+    }
+
+    @PostMapping("/delivery/import")
+    @ApiOperation("DO鍗曞鍏ユ帴鍙�")
+    @PreAuthorize("hasAuthority('manager:delivery:update')")
+    public R importExcel(@RequestParam(value = "file") MultipartFile file) throws Exception {
+        if (Objects.isNull(file)) {
+            return R.error("鏂囦欢涓嶈兘涓虹┖锛侊紒");
+        }
+        Map<String, Object> hashMap = new HashMap<>();
+        return R.ok("瀵煎叆鎴愬姛").add(deliveryItemService.excelImport(file, hashMap, getLoginUserId()));
+
+    }
+
+    /**
+     * @author Ryan
+     * @description 涓嬭浇妯℃澘
+     * @param
+     * @return
+     * @time 2025/4/18 08:17
+     */
+    @PostMapping("/delivery/template/download")
+    @ApiOperation("涓嬭浇鏀惰揣鍗曟ā鏉�")
+    @PreAuthorize("hasAuthority('manager:delivery:update')")
+    public void downloadTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+        DeliveryTemplate template = ExcelUtil.mockData(DeliveryTemplate.class);
+        List<DeliveryTemplate> list = Arrays.asList(template);
+        ExcelUtil.build(ExcelUtil.create(list, DeliveryTemplate.class, true), response);
     }
 
 }
\ No newline at end of file

--
Gitblit v1.9.1