From 63211c7592b9c7b814de2756d338ffd33ac0c58f Mon Sep 17 00:00:00 2001
From: zhai <1528081232@qq.com>
Date: 星期一, 19 一月 2026 16:37:38 +0800
Subject: [PATCH] 1、提交验收按钮新增判断是否关联附件 2、借阅暂存添加不可外借新增提醒 3、成果表单借阅管理修改为借阅记录 4、合格资料模块,导出文件按钮需要添加日志 5、装盒按钮调整:需要一个确认按钮并且可以更改盒号,调整盒号时能同步展示盒号容量 6、对接斑马打印机 7、利用用户修改

---
 src/main/java/com/zbooksoft/gdmis/controller/ImportExcelController.java |  159 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 158 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zbooksoft/gdmis/controller/ImportExcelController.java b/src/main/java/com/zbooksoft/gdmis/controller/ImportExcelController.java
index 04fd67b..f37d05f 100644
--- a/src/main/java/com/zbooksoft/gdmis/controller/ImportExcelController.java
+++ b/src/main/java/com/zbooksoft/gdmis/controller/ImportExcelController.java
@@ -9,6 +9,7 @@
 import com.ruili.wcp.web.common.LicenseException;
 import com.ruili.wcp.web.model.AjaxResponse;
 import com.ruili.wcp.web.model.ErrorInfo;
+import com.zbooksoft.gdmis.common.BoxEnum;
 import com.zbooksoft.gdmis.service.CatSwajxxService;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -29,6 +30,7 @@
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
+import javax.crypto.spec.PSource;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.*;
@@ -123,13 +125,19 @@
         HashMap<String, Object> map = new HashMap<>();
         //璇诲彇绗琲涓伐浣滆〃
         HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
-//椤圭洰鍚嶇О锛�1:25涓囧崡娌欏箙娴峰煙鍖哄煙鍦拌川璋冩煡
+        //椤圭洰鍚嶇О锛�1:25涓囧崡娌欏箙娴峰煙鍖哄煙鍦拌川璋冩煡
         String xmmc = getValue(sheet, 6, 3);
         map.put("XMMC", xmmc);
 
         String xmbh = getValue(sheet, 7, 3);
         map.put("XMBH", xmbh);
 
+        String selectProject = "SELECT ID FROM CAT_FILE_AJJXX WHERE XMKYQMC = '" + xmmc + "' AND XMKYQBH = '" + xmbh + "'";
+        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(selectProject);
+        if (mapList.size() > 0) {
+            String ajId = mapList.get(0).get("ID").toString();
+            map.put("AJ_ID", ajId);
+        }
         String dcchc = getValue(sheet, 8, 3);
         map.put("DCCHC", dcchc);
 
@@ -304,4 +312,153 @@
             }
         }
     }
+
+    /**
+     * 鍏宠仈鐩掑彿鍏宠仈
+     *
+     * @param
+     * @return
+     */
+    @RequestMapping({"/packingIndex"})
+    @RequiresUser
+    public ModelAndView packingIndex() {
+        ModelAndView mv = new ModelAndView("gh/excel/packingExcel");
+        return mv;
+    }
+
+    /**
+     * @param file 0 瀵煎叆杞瓟淇℃伅  1 瀵煎叆鍥惧箙淇℃伅 2 瀵煎叆瀹炵墿妗堝嵎淇℃伅
+     * @return
+     * @throws LicenseException
+     */
+
+    @RequestMapping({"/packingExcel"})
+    @ResponseBody
+    @RequiresUser
+    public Object packingExcel(@RequestParam(value = "file", required = false) MultipartFile file) throws LicenseException {
+        try {
+            relationPacking(file);
+            return new AjaxResponse(true);
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return new AjaxResponse(new ErrorInfo("瀵煎叆澶辫触"), false);
+        }
+    }
+
+    private void relationPacking(MultipartFile file) throws IOException {
+
+        String originalFilename = file.getOriginalFilename();
+
+        InputStream inputStream = file.getInputStream();
+        if (originalFilename.matches("^.+\\.(?i)(xls)$")) {
+            //鍒涘缓宸ヤ綔绨垮璞�
+            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inputStream);
+            //璇诲彇绗琲涓伐浣滆〃
+            HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
+
+            int maxRow = sheet.getLastRowNum();
+
+            for (int j = 1; j <= maxRow; j++) {
+                Row rowValue = sheet.getRow(j);
+                Cell boxNumberCell = rowValue.getCell(0);
+                Object boxNumber = getExcelValue(boxNumberCell);
+
+                Cell storageLocationCell = rowValue.getCell(1);
+                Object storageLocation = getExcelValue(storageLocationCell);
+
+                //04 1 10 1 02 06
+                //ZO1 A10宸� 02鍒� 06灞�
+                String update = "update BUS_PACKING_MANAGE set STORAGE_LOCATION ='" + storageLocation + "' where BOX_NUMBER = '" + boxNumber + "'";
+                jdbcTemplate.update(update);
+            }
+
+        }
+        if (originalFilename.matches("^.+\\.(?i)(xlsx)$")) {
+            //鍒涘缓宸ヤ綔绨垮璞�
+            XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);
+
+            XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
+            //鑾峰彇鏈�鍚庝竴琛岀殑num锛屽嵆鎬昏鏁般�傛澶勪粠0寮�濮�
+            int maxRow = sheet.getLastRowNum();
+            Row row = sheet.getRow(0);
+            for (int j = 1; j <= maxRow; j++) {
+                Row rowValue = sheet.getRow(j);
+                Cell boxNumberCell = rowValue.getCell(0);
+                Object boxNumber = getExcelValue(boxNumberCell);
+
+                Cell storageLocationCell = rowValue.getCell(1);
+                Object storageLocationCode = getExcelValue(storageLocationCell);
+
+                String storageLocation = parseStorageLocationWithEnum(storageLocationCode == null ? "" : storageLocationCode.toString());
+                String update = "update BUS_PACKING_MANAGE set STORAGE_LOCATION_CODE = '" + storageLocationCode + "', STORAGE_LOCATION ='" + storageLocation + "' where BOX_NUMBER = '" + boxNumber + "'";
+                jdbcTemplate.update(update);
+            }
+        }
+
+    }
+
+    public static String parseStorageLocationWithEnum(String code) {
+        if (code == null || code.length() != 10) {
+            throw new IllegalArgumentException("Invalid code format, expected 10 characters");
+        }
+
+        // 鎻愬彇鍚勯儴鍒�
+        String zoneCode = code.substring(0, 2);
+        String zoneName = code.substring(2, 3);
+        String rackCode = code.substring(3, 5);
+        String sideCode = code.substring(5, 6);
+        String column = code.substring(6, 8);
+        String layer = code.substring(8, 10);
+
+        // 浣跨敤鏋氫妇鑾峰彇鍖哄煙鍚嶇О
+        String zoneStr = BoxEnum.getNameByCode(zoneCode);
+
+        // 澶勭悊鏂瑰悜鏄犲皠
+        String sideStr = "1".equals(sideCode) ? "宸�" : "鍙�";
+
+        // 鏍规嵁鏁板瓧鑾峰彇瀵瑰簲瀛楁瘝
+        String letter = BoxEnum.RackLetter.getLetterByNumber(zoneName); // 杩斿洖 "A"
+
+        // 鏋勯�犳灦鍙�
+        String rackStr = letter + rackCode;
+
+        // 缁勫悎鏈�缁堢粨鏋�
+        return String.format("%s-%s%s-%s鍒�-%s灞�", zoneStr, rackStr, sideStr, column, layer);
+    }
+
+    public static String generateStorageLocationCode(String location) {
+        // 绀轰緥杈撳叆: Z01-A01宸�-08鍒�-02灞�
+        String[] parts = location.split("-");
+
+        String zoneStr = parts[0];           // Z01
+        String rackAndSide = parts[1];       // A01宸�
+
+        // 鍖哄煙浠g爜 (渚嬪 Z01 -> 04)
+        String zoneCode = BoxEnum.getCodeByName(zoneStr);
+
+        // 鏋跺彿涓殑瀛楁瘝涓庢暟瀛� (渚嬪 A01 -> A=1, 01)
+        String rackLetter = rackAndSide.substring(0, 1);   // A
+        String rackNumber = rackAndSide.substring(1, 3); // 01
+        String sideStr = rackAndSide.substring(3); // 宸� or 鍙�
+
+        // 鑾峰彇瀛楁瘝瀵瑰簲鐨勬暟瀛� (渚嬪 A -> 1)
+        // 鏍规嵁鏁板瓧鑾峰彇瀵瑰簲瀛楁瘝
+        String rackLetterNum = BoxEnum.RackLetter.getNumberByLetter(rackLetter); // 杩斿洖 "A"
+
+
+        // 鏂瑰悜浠g爜 (宸� -> 1, 鍙� -> 2)
+        String sideCode = "宸�".equals(sideStr) ? "1" : "0";
+
+
+        // 鎷兼帴鏈�缁堢粨鏋�
+        return zoneCode + rackLetterNum + rackNumber + sideCode;
+    }
+
+    public static void main(String[] args) {
+//        String s = parseStorageLocationWithEnum("0411010206");
+        String locationNumber = "Z01-A01宸�-08鍒�-02灞�";
+        //0410110802
+        String s = generateStorageLocationCode(locationNumber);
+        System.out.println(s);
+    }
 }

--
Gitblit v1.9.1