From 84c7372af746e1ba52e2a2b7d81e518ce833f194 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Wed, 5 Apr 2023 15:30:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E8=B7=B3=E8=BD=AC=E5=88=B0?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=94=B3=E8=AF=B7=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MaterialController.java | 527 ++-------- .../controller/PageController.java | 81 +- .../static/js/lay-module/layuimini/miniTab.js | 61 ++ .../application-out_scanQrCode.html | 37 - .../application-out_scanQrCode.html | 986 +++++++++++++----- .../pages/depository/Inventory-view.html | 62 +- .../pages/scanQrCode/ScanBarCode.html | 67 -- .../pages/scanQrCode/ScanBarCodeByNew.html | 81 -- .../pages/scanQrCode/ScanBarCodeOut.html | 123 --- .../static/js/lay-module/layuimini/miniTab.js | 61 ++ .../application-out_scanQrCode.html | 37 - .../application-out_scanQrCode.html | 986 +++++++++++++----- .../pages/scanQrCode/ScanBarCode.html | 67 -- .../pages/scanQrCode/ScanBarCodeByNew.html | 81 -- .../pages/scanQrCode/ScanBarCodeOut.html | 123 --- 15 files changed, 1736 insertions(+), 1644 deletions(-) delete mode 100644 src/main/resources/templates/pages/scanQrCode/ScanBarCode.html delete mode 100644 src/main/resources/templates/pages/scanQrCode/ScanBarCodeByNew.html delete mode 100644 src/main/resources/templates/pages/scanQrCode/ScanBarCodeOut.html delete mode 100644 target/classes/templates/pages/scanQrCode/ScanBarCode.html delete mode 100644 target/classes/templates/pages/scanQrCode/ScanBarCodeByNew.html delete mode 100644 target/classes/templates/pages/scanQrCode/ScanBarCodeOut.html diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java index 06b5ff6e..be15022f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java @@ -20,6 +20,7 @@ import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.TimeUnit; /** * @author Dreamchaser @@ -41,7 +42,7 @@ public class MaterialController { PlaceService placeService; @Autowired - RedisTemplate redisTemplate; + RedisTemplate redisTemplate; @Autowired @@ -75,7 +76,7 @@ public class MaterialController { public RestResponse findInventoryForStockTaking(@RequestParam Map map, HttpServletRequest request) { Integer depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId")); String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -99,7 +100,7 @@ public class MaterialController { @GetMapping("/findInventoryForGroup") public RestResponse findInventoryForGroup(@RequestParam Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -147,7 +148,7 @@ public class MaterialController { @GetMapping("/findInventory") public RestResponse findInventory(@RequestParam Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -176,7 +177,7 @@ public class MaterialController { if (!flag) { // 如果不是一次成功 page = ObjectFormatUtil.toInteger(map.get("page")); - if(page == null){ + if (page == null) { page = 1; } if (size - list.size() != size) { @@ -310,7 +311,7 @@ public class MaterialController { String mname = (String) map.get("mname"); String type = (String) map.get("type"); String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -327,11 +328,12 @@ public class MaterialController { /** * 用于根据物料id获取物料基础信息 + * * @param map * @return */ @PostMapping("/findOnlyMaterialById") - public RestResponse findOnlyMaterialById(@RequestBody Map map){ + public RestResponse findOnlyMaterialById(@RequestBody Map map) { Material materialById = materialService.findMaterialById(ObjectFormatUtil.toInteger(map.get("id"))); return new RestResponse(materialById); } @@ -345,7 +347,7 @@ public class MaterialController { @GetMapping("/findMatrialById") public RestResponse findMatrialById(@RequestParam(value = "mid", required = false) String mid, @RequestParam(value = "type", required = false) String type, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -404,7 +406,7 @@ public class MaterialController { @RequestParam(value = "pid", required = false) String pid, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -461,7 +463,7 @@ public class MaterialController { @GetMapping("/findMatrialByCode") public RestResponse findMatrialByCode(@RequestParam Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -558,7 +560,7 @@ public class MaterialController { @PostMapping("/findInventoryByCondition") public RestResponse findInventoryByCondition(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -642,27 +644,45 @@ public class MaterialController { @PostMapping("/temporaryValue") public RestResponse temporaryValue(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - ArrayList arrayList = (ArrayList) map.get("materialList"); - ArrayList materailList = new ArrayList(); - for (int i = 0; i < arrayList.size(); i++) { - if (materailList.indexOf(arrayList.get(i)) == -1) { - materailList.add(arrayList.get(i)); + if (map.containsKey("id")) { + String s = map.get("id").toString(); + String key = "WMS_temporaryValue" + userByPort.getNumber(); + List range = redisTemplate.opsForList().range(key, 0, -1); + if (range != null) { + if (!range.contains(s)) { + redisTemplate.opsForList().rightPush(key,s); + redisTemplate.expire(key,DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); + } } + return new RestResponse(); + } else { + return CrudUtil.insertHandle(-1, 0); + } + } + + @PostMapping("/delTemporaryValue") + public void delTemporaryValue(@RequestBody Map map, HttpServletRequest request) { + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); + if (map.containsKey("id")) { + String s = map.get("id").toString(); + redisTemplate.opsForList().remove("WMS_temporaryValue" + userByPort.getNumber(), 0, s); + } - map.put("materialList", materailList); - redisTemplate.opsForValue().set("scanQrCodeValue" + userByPort.getNumber(), JSONObject.toJSONString(map)); - return new RestResponse(); } // 将入库物料数据暂存到redis中 @PostMapping("/temporaryValueForMaterial") public RestResponse temporaryValueForMaterial(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -675,7 +695,7 @@ public class MaterialController { @PostMapping("/temporaryBarCodeValueForMaterial") public RestResponse temporaryBarCodeValueForMaterial(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -684,60 +704,12 @@ public class MaterialController { return new RestResponse(200); } - // 判断当前扫描的物料是否存在 - @GetMapping("/IsMaterialExist") - public RestResponse IsMaterialExist(HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue); - JSONObject depository = (JSONObject) jsonObject.get("depository"); // 扫描的仓库 - JSONObject place = (JSONObject) jsonObject.get("place"); // 扫描的库位 - JSONArray materialList = (JSONArray) jsonObject.get("materialList"); // 扫描的物料集合 - ArrayList newMaterialList = new ArrayList(); - Map map = new HashMap<>(); - - for (Object o : materialList) { - JSONObject obj = (JSONObject) o; - map.put("code", obj.get("code")); - if (depository != null) { - map.put("depositoryId", depository.get("did")); - } - if (place != null) { - map.put("depositoryId", place.get("depositoryId")); - } - List inventory = materialService.findMaterial(map); - if (inventory.size() > 0) { - MaterialP materialP = inventory.get(0); - Map params = new HashMap<>(); - // 有该物料 - // 重新缓存到redis中 - params.put("mid", materialP.getId()); - params.put("mname", materialP.getMname()); - params.put("code", materialP.getCode()); - params.put("version", materialP.getVersion()); - newMaterialList.add(params); - } else { - // 没有该物料 - continue; - } - } - map.put("depository", depository); - map.put("place", place); - map.put("materialList", newMaterialList); - redisTemplate.opsForValue().set("scanQrCodeValue" + userByPort.getNumber(), JSONObject.toJSONString(map)); - return new RestResponse(); - } //用于判断当前出库数量是否合适 @PostMapping("/MaterialQuantityIsTrue") public RestResponse MaterialQuantityIsTrue(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -763,7 +735,7 @@ public class MaterialController { // 如果是基础单位 for (InventoryP inventoryP : inventoryPList) { double integer = inventoryP.getBaseUnitQuantity(); - if (quantity <= (integer - (int)(inventoryP.getNumberOfTemporary() / 100))) { // 如果当前数量合适则跳出循环 + if (quantity <= (integer - (int) (inventoryP.getNumberOfTemporary() / 100))) { // 如果当前数量合适则跳出循环 flag = true; break; } @@ -853,54 +825,12 @@ public class MaterialController { return new RestResponse(s); } - // 获取扫描结果并跳转到入库 - @GetMapping("/application_in_scanQrCode") - public RestResponse applicationInScanQrCode(HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - // 获取当前用户所在部门拥有的仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue); - JSONArray materialListByJson = jsonObject.getJSONArray("materialList"); - Map param = new HashMap<>(); - List materialPList = new ArrayList<>(); - - for (int i = 0; i < materialListByJson.size(); i++) { - JSONObject material = (JSONObject) materialListByJson.get(i); - List placePList = new ArrayList<>(); - param.put("mcode", material.getString("code")); - MaterialP mp = new MaterialP(materialService.findMaterialById(material.getInteger("mid"))); - // 获取物料与条形码的对应关系 - param.put("codeFlag", 1); - List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); - for (int j = 0; j < depositoryByAdminorg.size(); j++) { - Depository depository = depositoryByAdminorg.get(j); - param.put("mcode", material.getString("code")); - param.put("depositoryId", depository.getId()); - List inventory = materialService.findInventory(param); - if (inventory.size() > 0) { - List place = placeService.findPlaceByMidAndDid(inventory.get(0).getId(), depository.getId()); - placePList.addAll(place); - } - } - mp.setPlacePList(placePList); - mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); - materialPList.add(mp); - } - jsonObject.put("materialList", materialPList); - return new RestResponse(jsonObject); - } // 获取扫描结果并跳转到入库 @PostMapping("/qywxApplicationInScanQrCode") public RestResponse qywxApplicationInScanQrCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -962,7 +892,7 @@ public class MaterialController { @PostMapping("/qywxApplicationOutScanQrCode") public RestResponse qywxApplicationOutScanQrCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -1025,68 +955,6 @@ public class MaterialController { } - // 获取扫描结果并跳转到盘点 - @PostMapping("/stockTaking_scanQrCode") - public RestResponse stockTakingScanQrCode(@RequestBody Map map, HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - // 获取当前用户所在部门拥有的仓库 - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue); - // 获取扫描的物料 - JSONArray materialListByJson = jsonObject.getJSONArray("materialList"); - Map param = new HashMap<>(); - List materialPList = new ArrayList<>(); - - String placeId = (String) map.get("placeId"); - for (int i = 0; i < materialListByJson.size(); i++) { - Boolean flag = true; - JSONObject material = (JSONObject) materialListByJson.get(i); - param.put("mcode", material.getString("code")); - InventoryP mp = new InventoryP(materialService.findInventoryById(material.getInteger("mid"))); - // 获取物料与条形码的对应关系 - param.put("codeFlag", 1); - List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); - param.put("mcode", material.getString("code")); - param.put("depositoryId", map.get("depositoryId")); - List inventory = materialService.findInventory(param); - if (inventory.size() > 0) { - InventoryP materialP = inventory.get(0); - if (!"0".equals(placeId)) { - // 如果不是默认库位 - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(ObjectFormatUtil.toInteger(placeId), materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - // 如果当前物料不在该库位 - flag = false; - } - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); - } else { - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(0, materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - // 如果当前物料不在该库位 - flag = false; - } - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); - } - mp = materialP; - } else { - flag = false; - } - mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); - if (flag) { - // 如果可以添加 - - materialPList.add(mp); - } - } - jsonObject.put("materialList", materialPList); - return new RestResponse(jsonObject); - } - // 获取扫描结果并跳转到盘点 @PostMapping("/qywxStockTakingScanQrCode") public RestResponse qywxStockTakingScanQrCode(@RequestBody Map map, HttpServletRequest request) { @@ -1128,7 +996,7 @@ public class MaterialController { // 如果当前物料不在该库位 flag = false; } else { - materialP.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); + materialP.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } else { MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(0, materialP.getId()); @@ -1136,7 +1004,7 @@ public class MaterialController { // 如果当前物料不在该库位 flag = false; } else { - materialP.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); + materialP.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } mp = materialP; @@ -1161,63 +1029,12 @@ public class MaterialController { return new RestResponse(null); } - // 获取条形码扫描结果 - @GetMapping("/application_in_scanBarCode") - public RestResponse applicationInScanBarCode(HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - String scanBarCodeValue = redisTemplate.opsForValue().get("temporaryBarCodeValueForMaterial" + userByPort.getNumber()).toString(); - redisTemplate.delete("temporaryBarCodeValueForMaterial" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanBarCodeValue); - JSONArray barCodeList = (JSONArray) jsonObject.get("barCodeList"); - // 获取标志位,用于判断是否扫描二维码 - Boolean flag = jsonObject.getBoolean("flag"); - Map result = new HashMap<>(); - List materialList = new ArrayList<>(); - // 获取当前用户所在部门拥有的仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); - Map param = new HashMap<>(); - for (int i = 0; i < barCodeList.size(); i++) { - // 获取具体的条形码 - String barCode = barCodeList.getString(i); - // 获取条形码与物料的映射 - MaterialAndBarCode materialByBarCode = null; - for (int j = 0; j < depositoryByAdminorg.size(); j++) { - param.put("depositoryId", depositoryByAdminorg.get(j).getId()); - param.put("barCode", barCode); - // 通过仓库与条形码获取对应关系 - materialByBarCode = materialService.findMaterialByBarCodeByBarCodeAndDepositoryId(param); - if (materialByBarCode != null) { - // 如果获取到对应关系 - break; - } - } - if (materialByBarCode == null) { - // 如果没有获取到 - materialByBarCode = materialService.findMaterialByBarCode(barCode); - } - materialList.add(materialByBarCode); - } - result.put("materialList", materialList); - if (flag) { - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject parseObject = JSONObject.parseObject(scanQrCodeValue); - result.put("depository", parseObject.get("depository")); - result.put("place", parseObject.get("place")); - } - return new RestResponse(result); - } - // 获取企业微信条形码扫描结果 @PostMapping("/qywxApplicationInScanBarCode") public RestResponse qywxApplicationInScanBarCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -1254,67 +1071,11 @@ public class MaterialController { } - // 获取条形码扫描结果 - @GetMapping("/application_transfer_scanBarCode") - public RestResponse applicationTransferScanBarCode(HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - // 获取当前用户部门所拥有仓库 - List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString()); - String scanBarCodeValue = redisTemplate.opsForValue().get("temporaryBarCodeValueForMaterial" + userByPort.getNumber()).toString(); - redisTemplate.delete("temporaryBarCodeValueForMaterial" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanBarCodeValue); - JSONArray barCodeList = (JSONArray) jsonObject.get("barCodeList"); - // 获取标志位,用于判断是否扫描二维码 - Boolean flag = jsonObject.getBoolean("flag"); - Map result = new HashMap<>(); - List materialList = new ArrayList<>(); - for (int i = 0; i < barCodeList.size(); i++) { - // 获取具体的条形码 - String barCode = barCodeList.getString(i); - // 获取条形码与物料的映射 - MaterialAndBarCode materialByBarCode = materialService.findMaterialByBarCode(barCode); - Boolean isExist = false; - List placePList = new ArrayList<>(); - for (int j = 0; j < depositoryByAdminorg.size(); j++) { - Map param = new HashMap<>(); - param.put("depositoryId", depositoryByAdminorg.get(j).getId()); - param.put("mcode", materialByBarCode.getMcode()); - List inventory = materialService.findInventory(param); - if (inventory.size() > 0) { - // 如果存在该物料 - InventoryP materialP = inventory.get(0); - materialByBarCode.setMid(materialP.getId()); - List placeByMidAndDid = placeService.findPlaceByMidAndDid(materialP.getId(), depositoryByAdminorg.get(j).getId()); - placePList.addAll(placeByMidAndDid); - isExist = true; - } - } - if (isExist) { - materialByBarCode.setPlacePList(placePList); - materialList.add(materialByBarCode); - } - } - result.put("materialList", materialList); - if (flag) { - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject parseObject = JSONObject.parseObject(scanQrCodeValue); - result.put("depository", parseObject.get("depository")); - result.put("place", parseObject.get("place")); - } - return new RestResponse(result); - } - - // 获取条形码扫描结果 @PostMapping("/qywxApplicationOutScanBarCode") public RestResponse qywxApplicationOutScanBarCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -1364,135 +1125,11 @@ public class MaterialController { } - // 获取条形码扫描结果 - @PostMapping("/stockTaking_scanBarCode") - public RestResponse stockTakingScanBarCode(@RequestBody Map map, HttpServletRequest request) { - String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - // 获取当前用户部门所拥有仓库 - String scanBarCodeValue = redisTemplate.opsForValue().get("temporaryBarCodeValueForMaterial" + userByPort.getNumber()).toString(); - redisTemplate.delete("temporaryBarCodeValueForMaterial" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanBarCodeValue); - JSONArray barCodeList = (JSONArray) jsonObject.get("barCodeList"); - // 获取标志位,用于判断是否扫描二维码 - Boolean flag = jsonObject.getBoolean("flag"); - Map result = new HashMap<>(); - List materialList = new ArrayList<>(); - String placeId = (String) map.get("placeId"); - // 用于存储没有对应关系的条形码 - List barCodeListByNoMaterial = new ArrayList<>(); - for (int i = 0; i < barCodeList.size(); i++) { - // 获取具体的条形码 - String barCode = barCodeList.getString(i); - // 获取条形码与物料的映射 - MaterialAndBarCode materialByBarCode = materialService.findMaterialByBarCode(barCode); - if (materialByBarCode != null) { - // 如果存在对应关系 - Boolean isExist = false; - Map param = new HashMap<>(); - param.put("depositoryId", map.get("depositoryId")); - param.put("mcode", materialByBarCode.getMcode()); - List inventory = materialService.findInventory(param); - InventoryP mp = new InventoryP(); - if (inventory.size() > 0) { - // 如果存在该物料 - InventoryP materialP = inventory.get(0); - Map paramByBarCode = new HashMap<>(); - paramByBarCode.put("mcode", materialP.getCode()); - paramByBarCode.put("codeFlag", 1); - List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(paramByBarCode); - materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); - isExist = true; - if (!"0".equals(placeId)) { - // 如果不是默认库位 - // 获取物料与库位的对应关系 - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(ObjectFormatUtil.toInteger(placeId), materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - isExist = false; - } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); - } - } else { - // 获取物料与库位的对应关系 - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(0, materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - isExist = false; - } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); - - } - } - mp = materialP; - - } - if (isExist) { - materialList.add(mp); - } - // 如果当前条形码不存对应物料 - } else { - barCodeListByNoMaterial.add(barCode); - } - } - if (flag) { - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject parseObject = JSONObject.parseObject(scanQrCodeValue); - // 获取扫描的物料 - JSONArray materialListByJson = jsonObject.getJSONArray("materialList"); - Map param = new HashMap<>(); - for (int i = 0; i < materialListByJson.size(); i++) { - Boolean tempflag = true; - JSONObject material = (JSONObject) materialListByJson.get(i); - param.put("mcode", material.getString("code")); - InventoryP mp = new InventoryP(materialService.findInventoryById(material.getInteger("mid"))); - // 获取物料与条形码的对应关系 - param.put("codeFlag", 1); - List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); - param.put("mcode", material.getString("code")); - param.put("depositoryId", map.get("depositoryId")); - List inventory = materialService.findInventory(param); - if (inventory.size() > 0) { - InventoryP materialP = inventory.get(0); - if (!"0".equals(placeId)) { - // 如果不是默认库位 - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(ObjectFormatUtil.toInteger(placeId), materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - // 如果当前物料不在该库位 - tempflag = false; - } - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); - } else { - // 获取物料与库位的对应关系 - MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(0, materialP.getId()); - if (placeAndMaterialByMidAndPid == null) { - tempflag = false; - } - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); - } - mp = materialP; - } else { - tempflag = false; - } - mp.setMaterialAndBarCodeList(materialByBarCodeByCondition); - if (tempflag) { - // 如果可以添加 - materialList.add(mp); - } - } - } - result.put("materialList", materialList); - result.put("barCodeListByNoMaterial", barCodeListByNoMaterial); - return new RestResponse(result); - } - @PostMapping("/qywxStockTakingScanBarCode") public RestResponse qywxStockTakingScanBarCode(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -1531,7 +1168,7 @@ public class MaterialController { if (placeAndMaterialByMidAndPid == null) { isExist = false; } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity() / 100); + mp.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } else { // 获取物料与库位的对应关系 @@ -1539,7 +1176,7 @@ public class MaterialController { if (placeAndMaterialByMidAndPid == null) { isExist = false; } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); + mp.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } @@ -1561,7 +1198,7 @@ public class MaterialController { for (MaterialAndProducedDate materialAndProducedDate : materialAndProducedDateByMid) { // 获取当前生产日期 producedDateList.add(DateUtil.TimeStampToDateTimeForDay(materialAndProducedDate.getProducedDate())); - material.setQuantity((double)materialAndProducedDate.getInventory() / 100); + material.setQuantity((double) materialAndProducedDate.getInventory() / 100); } List splitInfoByMid = splitUnitService.findSplitInfoByMid(material.getMid()); material.setSplitInfoList(splitInfoByMid); @@ -1576,7 +1213,7 @@ public class MaterialController { @GetMapping("/findMaterialByBarCode") public RestResponse findMaterialByBarCode(@RequestParam String barCode, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); @@ -1653,7 +1290,7 @@ public class MaterialController { List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialP.getMid()); materialP.setSplitInfoList(splitInfoByMid); materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); - materialP.setBaseUnitQuantity((double)pm.getQuantity() / 100); + materialP.setBaseUnitQuantity((double) pm.getQuantity() / 100); return new RestResponse(materialP, 1, 200); } else { return new RestResponse("", 0, 200); @@ -1680,7 +1317,7 @@ public class MaterialController { List splitInfoByMid = splitUnitService.findSplitInfoByMid(materialP.getMid()); materialP.setSplitInfoList(splitInfoByMid); materialP.setMaterialAndBarCodeList(materialByBarCodeByCondition); - materialP.setQuantity((double)pm.getQuantity()/100); + materialP.setQuantity((double) pm.getQuantity() / 100); return new RestResponse(materialP, 1, 200); } else { return new RestResponse("", 0, 200); @@ -1703,7 +1340,7 @@ public class MaterialController { @PostMapping("/findMatrialByCodeForTaking") public RestResponse findMatrialByCodeForTaking(@RequestBody Map map, HttpServletRequest request) { String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -1738,7 +1375,7 @@ public class MaterialController { // 如果当前库位没有该物料 mp = null; } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); + mp.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } else { @@ -1748,7 +1385,7 @@ public class MaterialController { // 如果当前库位没有该物料 mp = null; } else { - mp.setQuantity((double)placeAndMaterialByMidAndPid.getQuantity()/100); + mp.setQuantity((double) placeAndMaterialByMidAndPid.getQuantity() / 100); } } @@ -1763,7 +1400,7 @@ public class MaterialController { // 获取当前生产日期 producedDateList.add(DateUtil.TimeStampToDateTimeForDay(materialAndProducedDate.getProducedDate())); if (flagForQuantity) { - mp.setQuantity((double)materialAndProducedDate.getInventory()/100); + mp.setQuantity((double) materialAndProducedDate.getInventory() / 100); flagForQuantity = false; } } @@ -1872,7 +1509,7 @@ public class MaterialController { String mname = (String) map.get("mname"); String type = (String) map.get("type"); String token = request.getHeader("user-token"); - if(token == null){ + if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); @@ -1975,8 +1612,8 @@ public class MaterialController { } @PostMapping("/findSplitInventoryByUnit") - public RestResponse findSplitInventoryByUnit(@RequestBody Map map){ - if(map.containsKey("id")){ + public RestResponse findSplitInventoryByUnit(@RequestBody Map map) { + if (map.containsKey("id")) { // 获取当前的计量单位 @@ -1985,23 +1622,23 @@ public class MaterialController { Integer id = ObjectFormatUtil.toInteger(map.get("id")); // 获取库存记录 Inventory inventory = materialService.findInventoryById(id); - if("-1".equals(unit)){ - return new RestResponse((double)(inventory.getQuantity() / 100)); - }else{ - Map paramForSplitInfoStringObjectMap = new HashMap<>(); - paramForSplitInfoStringObjectMap.put("mid",inventory.getMid()); - paramForSplitInfoStringObjectMap.put("newUnit",unit); + if ("-1".equals(unit)) { + return new RestResponse((double) (inventory.getQuantity() / 100)); + } else { + Map paramForSplitInfoStringObjectMap = new HashMap<>(); + paramForSplitInfoStringObjectMap.put("mid", inventory.getMid()); + paramForSplitInfoStringObjectMap.put("newUnit", unit); SplitInfo splitInfoByMidAndUnit = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfoStringObjectMap); List placeByMidAndDid = placeService.findPlaceByMidAndDid(inventory.getId(), inventory.getDepositoryId()); double allInventory = 0.0; - for (PlaceP placeP:placeByMidAndDid - ) { + for (PlaceP placeP : placeByMidAndDid + ) { MaterialAndPlace placeAndMaterialByMidAndPid = placeService.findPlaceAndMaterialByMidAndPid(placeP.getId(), inventory.getId()); - allInventory += splitUnitService.findAllInventoryForSplitInfo(-1, placeAndMaterialByMidAndPid, splitInfoByMidAndUnit.getId(), 0, true); + allInventory += splitUnitService.findAllInventoryForSplitInfo(-1, placeAndMaterialByMidAndPid, splitInfoByMidAndUnit.getId(), 0, true); } return new RestResponse(allInventory); } - }else{ + } else { throw new MyException("缺少必要参数"); } } @@ -2011,14 +1648,14 @@ public class MaterialController { public RestResponse findMaterialByConditionForStockTaking(@RequestParam Map map, HttpServletRequest request) { if (map.containsKey("mid")) { String mid = (String) map.get("mid"); - if("".equals(mid)){ + if ("".equals(mid)) { return new RestResponse(null); } String token = request.getHeader("user-token"); - if(token == null){ - token = (String) request.getSession().getAttribute("userToken"); - } - UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); // 获取当前部门所拥有的仓库 List depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userToken.getMaindeparment().toString()); // 查询当前用户管理的仓库 @@ -2036,11 +1673,11 @@ public class MaterialController { depositoryIdList.add(rad.getDepositoryId()); } } - map.put("userTokenId",userToken.getId()); + map.put("userTokenId", userToken.getId()); List materialAndPlaceForViews = materialService.findInventoryByMidAndDepository(map, depositoryIdList); Integer count = placeService.findPlaceAndMaterialCountByDidsAndMid(depositoryIdList, map); - return new RestResponse(materialAndPlaceForViews,count,200); - }else{ + return new RestResponse(materialAndPlaceForViews, count, 200); + } else { return new RestResponse(null); } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index dcd33982..3e0553cf 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -504,7 +504,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/split/split-out_mobile"); } return mv; @@ -536,7 +536,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/material/material-out_mobile"); } return mv; @@ -923,7 +923,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/depository/table-in_mobile"); } return mv; @@ -950,7 +950,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/depository/table-out_mobile"); } return mv; @@ -990,7 +990,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/depository/table-stock_mobile"); } return mv; @@ -1047,7 +1047,7 @@ public class PageController { inventory.setPlacePList(placeByMidAndDid); List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryById.getMid()); inventory.setSplitInfoList(splitInfoByMid); - mv.addObject("record",inventory); + mv.addObject("record", inventory); return mv; } else { throw new MyException("缺少必要参数"); @@ -1103,7 +1103,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/group/group-out_mobile"); } return mv; @@ -1157,7 +1157,7 @@ public class PageController { String userAgent = request.getHeader("user-agent"); // 判断当前使用的设备为移动端还是pc端 boolean b = DeviceUtil.checkAgentIsMobile(userAgent); - if(b){ + if (b) { mv.setViewName("pages/group/group_edit_mobile"); } @@ -2622,11 +2622,6 @@ public class PageController { return "pages/scanQrCode/ScanQrCodeIn"; } - // 用于扫码条形码 - @GetMapping("/scanBarCode") - public String scanBarCode() { - return "pages/scanQrCode/ScanBarCode"; - } // 跳转到扫码盘点物料界面 @GetMapping("/scanMaterialCodeForTaking") @@ -2737,12 +2732,6 @@ public class PageController { return mv; } - @GetMapping("/scanBarCodeOut") - public ModelAndView scanBarCodeOut() { - ModelAndView mv = new ModelAndView(); - mv.setViewName("pages/scanQrCode/ScanBarCodeOut"); - return mv; - } // 获取扫描结果并跳转到入库 @GetMapping("/application_in_scanQrCode") @@ -2818,27 +2807,41 @@ public class PageController { if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } - UserByPort userByPort = AuthenticationTokenPool.getUserToken(token); - String scanQrCodeValue = redisTemplate.opsForValue().get("scanQrCodeValue" + userByPort.getNumber()).toString(); - redisTemplate.delete("scanQrCodeValue" + userByPort.getNumber()); - JSONObject jsonObject = JSONObject.parseObject(scanQrCodeValue); - JSONObject depository = (JSONObject) jsonObject.get("depository"); - JSONObject place = (JSONObject) jsonObject.get("place"); - JSONArray materialList = (JSONArray) jsonObject.get("materialList"); - if (depository == null && place == null) { - // 如果库位与仓库都未选中 - } else if (depository != null && place == null) { - // 如果选中仓库未选中库位 - mv.addObject("depository", depository); - } else if (depository == null) { - // 如果选中库位未选中仓库 - mv.addObject("place", place); - } - mv.addObject("materialList", materialList); - mv.setViewName("pages/application/application-out_scanQrCode"); - if (Integer.compare(userByPort.getMaindeparment(), 361) == 0) { - mv.setViewName("pages/applicationForStorageCenter/application-out_scanQrCode"); + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + List range = redisTemplateForHash.boundListOps("WMS_temporaryValue" + userToken.getNumber()).range(0, -1); + if (range.size() > 0) { + List result = new ArrayList<>(); + for (String value : range + ) { + if ("".equals(value)) { + continue; + } + Inventory inventoryById = materialService.findInventoryById(ObjectFormatUtil.toInteger(value)); + List splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryById.getMid()); + inventoryById.setSplitInfoList(splitInfoByMid); + result.add(inventoryById); + + } + mv.addObject("inventoryList", JSONObject.toJSONString(result)); + mv.setViewName("pages/application/application-out_scanQrCode"); + Integer role = userToken.getIsadmin(); + if (role == null) { + role = 1; + } + if (role == 4 || Integer.compare(userToken.getMaindeparment(), 361) == 0) { + mv.setViewName("pages/applicationForStorageCenter/application-out_scanQrCode"); + } + } else { + mv.setViewName("pages/application/application-out"); + Integer role = userToken.getIsadmin(); + if (role == null) { + role = 1; + } + if (role == 4 || Integer.compare(userToken.getMaindeparment(), 361) == 0) { + mv.setViewName("pages/applicationForStorageCenter/application-out"); + } } + return mv; } diff --git a/src/main/resources/static/js/lay-module/layuimini/miniTab.js b/src/main/resources/static/js/lay-module/layuimini/miniTab.js index 76871fcb..7d62b172 100644 --- a/src/main/resources/static/js/lay-module/layuimini/miniTab.js +++ b/src/main/resources/static/js/lay-module/layuimini/miniTab.js @@ -61,6 +61,28 @@ layui.define(["element", "layer", "jquery"], function (exports) { $('.layuimini-menu-left').attr('layuimini-tab-tag', 'add'); sessionStorage.setItem('layuiminimenu_' + options.tabId, options.title); }, + createNew: function (options) { + options.tabId = options.tabId || null; + options.href = options.href || null; + options.title = options.title || null; + options.isIframe = options.isIframe || false; + options.maxTabNum = options.maxTabNum || 20; + if ($(".layuimini-tab .layui-tab-title li").length >= options.maxTabNum) { + layer.msg('Tab窗口已达到限定数量,请先关闭部分Tab'); + return false; + } + var ele = element; + if (options.isIframe) ele = parent.parent.layui.element; + ele.tabAdd('layuiminiTab', { + title: '' + options.title + '' //用于演示 + , + content: '' + , + id: options.tabId + }); + $('.layuimini-menu-left').attr('layuimini-tab-tag', 'add'); + sessionStorage.setItem('layuiminimenu_' + options.tabId, options.title); + }, /** @@ -108,6 +130,24 @@ layui.define(["element", "layer", "jquery"], function (exports) { parent.layer.close(loading); }, + openNewTabByIframeNew: function (options) { + options.href = options.href || null; + options.title = options.title || null; + var loading = parent.parent.layer.load(0, {shade: false, time: 2 * 1000}); + if (options.href === null || options.href === undefined) options.href = new Date().getTime(); + var checkTab = miniTab.checkNew(options.href, true); + if (!checkTab) { + miniTab.createNew({ + tabId: options.href, + href: options.href, + title: options.title, + isIframe: true, + }); + } + parent.parent.layui.element.tabChange('layuiminiTab', options.href); + parent.parent.layer.close(loading); + }, + /** * 在iframe层关闭当前tab方法 */ @@ -143,6 +183,27 @@ layui.define(["element", "layer", "jquery"], function (exports) { return checkTab; }, + checkNew: function (tabId, isIframe) { + // 判断选项卡上是否有 + var checkTab = false; + if (isIframe === undefined || isIframe === false) { + $(".layui-tab-title li").each(function () { + var checkTabId = $(this).attr('lay-id'); + if (checkTabId != null && checkTabId === tabId) { + checkTab = true; + } + }); + } else { + parent.parent.layui.$(".layui-tab-title li").each(function () { + var checkTabId = $(this).attr('lay-id'); + if (checkTabId != null && checkTabId === tabId) { + checkTab = true; + } + }); + } + return checkTab; + }, + /** * 开启tab右键菜单 * @param tabId diff --git a/src/main/resources/templates/pages/application/application-out_scanQrCode.html b/src/main/resources/templates/pages/application/application-out_scanQrCode.html index 12869d6f..e7f8b7fc 100644 --- a/src/main/resources/templates/pages/application/application-out_scanQrCode.html +++ b/src/main/resources/templates/pages/application/application-out_scanQrCode.html @@ -34,8 +34,6 @@