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