Browse Source

修改移动端库存查询跳转到出库申请页面

lwx_dev
erdanergou 3 years ago
parent
commit
84c7372af7
  1. 527
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  2. 81
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  3. 61
      src/main/resources/static/js/lay-module/layuimini/miniTab.js
  4. 37
      src/main/resources/templates/pages/application/application-out_scanQrCode.html
  5. 986
      src/main/resources/templates/pages/applicationForStorageCenter/application-out_scanQrCode.html
  6. 62
      src/main/resources/templates/pages/depository/Inventory-view.html
  7. 67
      src/main/resources/templates/pages/scanQrCode/ScanBarCode.html
  8. 81
      src/main/resources/templates/pages/scanQrCode/ScanBarCodeByNew.html
  9. 123
      src/main/resources/templates/pages/scanQrCode/ScanBarCodeOut.html
  10. 61
      target/classes/static/js/lay-module/layuimini/miniTab.js
  11. 37
      target/classes/templates/pages/application/application-out_scanQrCode.html
  12. 986
      target/classes/templates/pages/applicationForStorageCenter/application-out_scanQrCode.html
  13. 67
      target/classes/templates/pages/scanQrCode/ScanBarCode.html
  14. 81
      target/classes/templates/pages/scanQrCode/ScanBarCodeByNew.html
  15. 123
      target/classes/templates/pages/scanQrCode/ScanBarCodeOut.html

527
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<Object, Object> redisTemplate;
RedisTemplate<String, String> redisTemplate;
@Autowired
@ -75,7 +76,7 @@ public class MaterialController {
public RestResponse findInventoryForStockTaking(@RequestParam Map<String, Object> 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<String, Object> 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<String, Object> 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<String,String> map){
public RestResponse findOnlyMaterialById(@RequestBody Map<String, String> 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<String, Object> 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<String, Object> 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<String, Object> 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<String> 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<String, Object> 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<String, Object> 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<String, Object> 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<Object> newMaterialList = new ArrayList();
Map<String, Object> 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<MaterialP> inventory = materialService.findMaterial(map);
if (inventory.size() > 0) {
MaterialP materialP = inventory.get(0);
Map<String, Object> 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<String, Object> 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<Depository> 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<String, Object> param = new HashMap<>();
List<MaterialP> materialPList = new ArrayList<>();
for (int i = 0; i < materialListByJson.size(); i++) {
JSONObject material = (JSONObject) materialListByJson.get(i);
List<PlaceP> placePList = new ArrayList<>();
param.put("mcode", material.getString("code"));
MaterialP mp = new MaterialP(materialService.findMaterialById(material.getInteger("mid")));
// 获取物料与条形码的对应关系
param.put("codeFlag", 1);
List<MaterialAndBarCode> 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<InventoryP> inventory = materialService.findInventory(param);
if (inventory.size() > 0) {
List<PlaceP> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> param = new HashMap<>();
List<InventoryP> 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<MaterialAndBarCode> materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param);
param.put("mcode", material.getString("code"));
param.put("depositoryId", map.get("depositoryId"));
List<InventoryP> 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<String, Object> 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<String, Object> result = new HashMap<>();
List<Object> materialList = new ArrayList<>();
// 获取当前用户所在部门拥有的仓库
List<Depository> depositoryByAdminorg = depositoryService.findDepositoryByAdminorg(userByPort.getMaindeparment().toString());
Map<String, Object> 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<String, Object> 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<Depository> 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<String, Object> result = new HashMap<>();
List<Object> 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<PlaceP> placePList = new ArrayList<>();
for (int j = 0; j < depositoryByAdminorg.size(); j++) {
Map<String, Object> param = new HashMap<>();
param.put("depositoryId", depositoryByAdminorg.get(j).getId());
param.put("mcode", materialByBarCode.getMcode());
List<InventoryP> inventory = materialService.findInventory(param);
if (inventory.size() > 0) {
// 如果存在该物料
InventoryP materialP = inventory.get(0);
materialByBarCode.setMid(materialP.getId());
List<PlaceP> 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<String, Object> 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<String, Object> 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<String, Object> result = new HashMap<>();
List<InventoryP> materialList = new ArrayList<>();
String placeId = (String) map.get("placeId");
// 用于存储没有对应关系的条形码
List<String> 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<String, Object> param = new HashMap<>();
param.put("depositoryId", map.get("depositoryId"));
param.put("mcode", materialByBarCode.getMcode());
List<InventoryP> inventory = materialService.findInventory(param);
InventoryP mp = new InventoryP();
if (inventory.size() > 0) {
// 如果存在该物料
InventoryP materialP = inventory.get(0);
Map<String, Object> paramByBarCode = new HashMap<>();
paramByBarCode.put("mcode", materialP.getCode());
paramByBarCode.put("codeFlag", 1);
List<MaterialAndBarCode> 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<String, Object> 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<MaterialAndBarCode> materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param);
param.put("mcode", material.getString("code"));
param.put("depositoryId", map.get("depositoryId"));
List<InventoryP> 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<String, Object> 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<SplitInfo> 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<SplitInfo> 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<SplitInfo> 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<String, Object> 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<String,Object> map){
if(map.containsKey("id")){
public RestResponse findSplitInventoryByUnit(@RequestBody Map<String, Object> 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<String,Object> 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<String, Object> paramForSplitInfoStringObjectMap = new HashMap<>();
paramForSplitInfoStringObjectMap.put("mid", inventory.getMid());
paramForSplitInfoStringObjectMap.put("newUnit", unit);
SplitInfo splitInfoByMidAndUnit = splitUnitService.findSplitInfoByMidAndUnit(paramForSplitInfoStringObjectMap);
List<PlaceP> 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<String, Object> 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<Depository> 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<MaterialAndPlaceForViewP> 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);
}

81
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<SplitInfo> 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<String> range = redisTemplateForHash.boundListOps("WMS_temporaryValue" + userToken.getNumber()).range(0, -1);
if (range.size() > 0) {
List<Inventory> result = new ArrayList<>();
for (String value : range
) {
if ("".equals(value)) {
continue;
}
Inventory inventoryById = materialService.findInventoryById(ObjectFormatUtil.toInteger(value));
List<SplitInfo> 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;
}

61
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: '<span class="layuimini-tab-active"></span><span>' + options.title + '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>' //用于演示
,
content: '<iframe width="100%" height="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" src="' + options.href + '"></iframe>'
,
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

37
src/main/resources/templates/pages/application/application-out_scanQrCode.html

@ -34,8 +34,6 @@
<div class="layui-fluid">
<!-- 出库申请-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<input th:value="${materialList}" style="display:none;" id="scanValue_materialList">
<input th:value="${depository}" style="display: none" id="scanValue_depositoryId">
<input th:value="${place}" style="display: none" id="scanValue_placeId">
<div carousel-item style="overflow: inherit">
<div>
@ -118,8 +116,6 @@
}]
});
let scanValue = {}; // 用于暂存扫描得到的结果
let materialOnPlaceList = []; // 用于保存当前物料所处的库位
let materialIsExist = ''; // 用于判断当前物料是否存在
// 页面初始化
$(function () {
let depository = $("#scanValue_depositoryId").val();
@ -143,39 +139,6 @@
});
// 用于获取当前物料所处的库位
function getPlaceByMaterial(material){
var req = {};
req.code = material.code;
req.type = "out";
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data:(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
materialIsExist = false;
}else{
req.mid = d.id;
$.ajax({
url: "/place/findPlaceByMid",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success:function (res) {
materialOnPlaceList = res.data;
materialIsExist = true;
}
});
}
}
})
}
//用于页面初始化时的卡片构造

986
src/main/resources/templates/pages/applicationForStorageCenter/application-out_scanQrCode.html

File diff suppressed because it is too large

62
src/main/resources/templates/pages/depository/Inventory-view.html

@ -64,7 +64,7 @@
<div class="layui-form-item">
<label class="layui-form-label">品牌:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" th:value="${record.getBrand()}" readonly
<input type="text" class="layui-input" th:value="${record.getBrand()}" readonly
name="brand"/>
</div>
</div>
@ -72,7 +72,7 @@
<div class="layui-form-item">
<label class="layui-form-label">物料类型</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" id="openSonByMateralType" readonly
<input type="text" class="layui-input" id="openSonByMateralType" readonly
th:value="${record.getTypeName()}"
lay-verify="required"/>
</div>
@ -99,7 +99,8 @@
<div class="layui-form-item">
<label class="layui-form-label">所处仓库</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getDepositoryName()}" name="depositoryName" required autocomplete="off" readonly
<input type="text" th:value="${record.getDepositoryName()}" name="depositoryName" required
autocomplete="off" readonly
class="layui-input">
<input type="text" id="depositoryId" th:value="${record.getDepositoryId()}" style="display: none">
</div>
@ -117,38 +118,44 @@
<div class="layui-form-item">
<label class="layui-form-label">数量</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getQuantity()}" name="quantity" required autocomplete="off" id="quantity" readonly
<input type="text" th:value="${record.getQuantity()}" name="quantity" required autocomplete="off"
id="quantity" readonly
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">单价</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price" readonly
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price"
readonly
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">总额</label>
<div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts" readonly
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts"
readonly
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-customize" type="button" onclick="applicationIn()">入库申请</button>
<button class="layui-btn layui-btn-customize" type="button" onclick="applicationOut()">出库申请</button>
</div>
</div>
</form>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
function applicationIn(){
function applicationIn() {
}
function applicationOut(){
function applicationOut() {
}
@ -157,9 +164,13 @@
let flagForForm = false;
var barCode = [];
var flag = false;
layui.use(['form', 'laydate'], function () {
var form = layui.form, laydate = layui.laydate, $ = layui.$;
//提交
layui.use(['form', 'laydate', 'miniTab'], function () {
var form = layui.form,
laydate = layui.laydate,
$ = layui.$,
miniTab = layui.miniTab;
miniTab.listen();
form.on('select()', function (data) {
var id = data.elem.id; //得到select原始DOM对象id
@ -176,10 +187,10 @@
$("#quantity").val(d.data)
}
});
})
});
applicationOut = function() {
var index = layer.open({
applicationOut = function () {
/*var index = layer.open({
title: '出库申请',
type: 2,
shade: 0.2,
@ -190,9 +201,24 @@
});
$(window).on("resize", function () {
layer.full(index);
});
});*/
// 暂存当前选择的库存记录
$.ajax({
url: "/material/temporaryValue",
type: "post",
dataType: 'json',
data: JSON.stringify({"id": $("#id").val()}),
contentType: "application/json;charset=utf-8",
success: function (d) {
miniTab.openNewTabByIframeNew({
href: "/application_Out_scanQrCode",
title: "出库申请"
});
}
})
return false;
}
};
applicationIn = function () {
var index = layer.open({
@ -202,7 +228,7 @@
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/application_in_back?mid=' + $("#id").val() + "&depositoryId=" +$("#depositoryId").val()
content: '/application_in_back?mid=' + $("#id").val() + "&depositoryId=" + $("#depositoryId").val()
});
$(window).on("resize", function () {
layer.full(index);
@ -210,7 +236,7 @@
return false;
}
}) ;
});
</script>
</body>

67
src/main/resources/templates/pages/scanQrCode/ScanBarCode.html

@ -1,67 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
const html5QrCode = new Html5Qrcode("reader");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
/* 扫描成功 */
console.log(decodedText,decodedResult);
html5QrCode.stop().then((ignore) => {
// 暂停扫描
// 发送ajax请求去获取当前条码的数据
layui.$.ajax({
url: "/material/findMaterialByBarCode?barCode="+decodedText,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
// 将扫描结果赋值给父页面
layui.$("#barcode", window.parent.document).val(decodedText);
if(data === null || data === undefined){
// 如果没有查询到物料
}else{
layui.$("#mname", window.parent.document).val(data.mname);
layui.$("#code", window.parent.document).val(data.code);
}
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
})
}).catch((err) => {
console.log(err)
// 停止失败,处理它。
});
};
const config = { fps: 10, aspectRatio: 2 };
// Select back camera or fail with `OverconstrainedError`.
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
</script>
</body>
</html>

81
src/main/resources/templates/pages/scanQrCode/ScanBarCodeByNew.html

@ -1,81 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
// 用于判断是否包含字母
var barCodeList = [];
layui.$(function () {
parent.parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
outboundLogic(result);
},
error: function(res) {
if (res.errMsg.indexOf('function_not_exist') > 0) {
alert('版本过低请升级')
}
}
});
});
outboundLogic = function (result) {
barCodeList.push(result);
layer.confirm("是否继续扫描", {
btn: ["扫描", "取消"]
}, function () { // 继续
layer.close(layer.index); // 关闭弹窗
parent.parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
outboundLogic(result)
}
})
}, function () { // 取消
// 关闭当前页
layui.$("#barCodeList", window.parent.document).val(barCodeList);
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
})
}
</script>
</body>
</html>

123
src/main/resources/templates/pages/scanQrCode/ScanBarCodeOut.html

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
// 用于判断是否包含字母
let barCodeList = [];
var depository;
var place;
// 是否扫描二维码标志位
var flag = false;
const html5QrCode = new Html5Qrcode("reader");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
var formatName = decodedResult.result.format.formatName;
/* 扫描成功 */
// console.log(decodedText,decodedResult);
if (formatName.includes("QR_CODE")||formatName.includes("AZTEC")) {
// console.log("二维码",decodedText);
// 如果扫描的位本地二维码
flag = true;
// 先解密
let jmResult = {};
jmResult.result = decodedText;
layui.$.ajax({
url: "/material/decode3Des",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jmResult),
success:function (d) {
let parse = JSON.parse(d.data);
if (parse.did !== undefined) {
// 如果扫描的是仓库二维码
depository = parse;
}
if (parse.pid !== undefined) {
// 如果扫描的是库位二维码
place = parse;
}
}
})
}else{
// 如果是条形码
barCodeList.push(decodedText);
}
html5QrCode.stop().then((ignore) => {
// 暂停扫描
layer.confirm("是否继续扫描?",
{
btn: ["继续", "取消"]
},
function () {// 继续
// 弹出选择框
layer.close(layer.index);
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
},
function () { // 取消当前操作
layer.close(layer.index); // 关闭弹窗
// 将数据暂存到redis
var param = {};
param.barCodeList = barCodeList;
param.flag = flag;
layui.$.ajax({
url:"/material/temporaryBarCodeValueForMaterial",
type:"post",
datatype:"json",
data:JSON.stringify(param),
contentType: "application/json;charset=utf-8",
});
if(flag){
var params = {};
params.depository = depository;
params.place = place;
params.materialList = [];
layui.$.ajax({
url: "/material/temporaryValue",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(params)
});
}
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
)
}).catch((err) => {
console.log(err)
// 停止失败,处理它。
});
};
const config = { fps: 10, aspectRatio: 2 };
// Select back camera or fail with `OverconstrainedError`.
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
</script>
</body>
</html>

61
target/classes/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: '<span class="layuimini-tab-active"></span><span>' + options.title + '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>' //用于演示
,
content: '<iframe width="100%" height="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" src="' + options.href + '"></iframe>'
,
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

37
target/classes/templates/pages/application/application-out_scanQrCode.html

@ -34,8 +34,6 @@
<div class="layui-fluid">
<!-- 出库申请-->
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<input th:value="${materialList}" style="display:none;" id="scanValue_materialList">
<input th:value="${depository}" style="display: none" id="scanValue_depositoryId">
<input th:value="${place}" style="display: none" id="scanValue_placeId">
<div carousel-item style="overflow: inherit">
<div>
@ -118,8 +116,6 @@
}]
});
let scanValue = {}; // 用于暂存扫描得到的结果
let materialOnPlaceList = []; // 用于保存当前物料所处的库位
let materialIsExist = ''; // 用于判断当前物料是否存在
// 页面初始化
$(function () {
let depository = $("#scanValue_depositoryId").val();
@ -143,39 +139,6 @@
});
// 用于获取当前物料所处的库位
function getPlaceByMaterial(material){
var req = {};
req.code = material.code;
req.type = "out";
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data:(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if(d == null){
materialIsExist = false;
}else{
req.mid = d.id;
$.ajax({
url: "/place/findPlaceByMid",
type: "post",
dataType: 'json',
data:JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success:function (res) {
materialOnPlaceList = res.data;
materialIsExist = true;
}
});
}
}
})
}
//用于页面初始化时的卡片构造

986
target/classes/templates/pages/applicationForStorageCenter/application-out_scanQrCode.html

File diff suppressed because it is too large

67
target/classes/templates/pages/scanQrCode/ScanBarCode.html

@ -1,67 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
const html5QrCode = new Html5Qrcode("reader");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
/* 扫描成功 */
console.log(decodedText,decodedResult);
html5QrCode.stop().then((ignore) => {
// 暂停扫描
// 发送ajax请求去获取当前条码的数据
layui.$.ajax({
url: "/material/findMaterialByBarCode?barCode="+decodedText,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
// 将扫描结果赋值给父页面
layui.$("#barcode", window.parent.document).val(decodedText);
if(data === null || data === undefined){
// 如果没有查询到物料
}else{
layui.$("#mname", window.parent.document).val(data.mname);
layui.$("#code", window.parent.document).val(data.code);
}
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
})
}).catch((err) => {
console.log(err)
// 停止失败,处理它。
});
};
const config = { fps: 10, aspectRatio: 2 };
// Select back camera or fail with `OverconstrainedError`.
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
</script>
</body>
</html>

81
target/classes/templates/pages/scanQrCode/ScanBarCodeByNew.html

@ -1,81 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
// 用于判断是否包含字母
var barCodeList = [];
layui.$(function () {
parent.parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
outboundLogic(result);
},
error: function(res) {
if (res.errMsg.indexOf('function_not_exist') > 0) {
alert('版本过低请升级')
}
}
});
});
outboundLogic = function (result) {
barCodeList.push(result);
layer.confirm("是否继续扫描", {
btn: ["扫描", "取消"]
}, function () { // 继续
layer.close(layer.index); // 关闭弹窗
parent.parent.parent.parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
outboundLogic(result)
}
})
}, function () { // 取消
// 关闭当前页
layui.$("#barCodeList", window.parent.document).val(barCodeList);
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
})
}
</script>
</body>
</html>

123
target/classes/templates/pages/scanQrCode/ScanBarCodeOut.html

@ -1,123 +0,0 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>扫码</title>
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
<!--[if lt IE 9]>
<script src="/static/js/html5.min.js"></script>
<script src="/static/js/respond.min.js"></script>
<![endif]-->
<!-- vue相关-->
<script src="../static/js/vue/vue.js"></script>
<script src="../static/js/vue/vue-router.js"></script>
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
</head>
<body>
<div style="width: 500px" id="reader">
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script>
// 用于判断是否包含字母
let barCodeList = [];
var depository;
var place;
// 是否扫描二维码标志位
var flag = false;
const html5QrCode = new Html5Qrcode("reader");
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
var formatName = decodedResult.result.format.formatName;
/* 扫描成功 */
// console.log(decodedText,decodedResult);
if (formatName.includes("QR_CODE")||formatName.includes("AZTEC")) {
// console.log("二维码",decodedText);
// 如果扫描的位本地二维码
flag = true;
// 先解密
let jmResult = {};
jmResult.result = decodedText;
layui.$.ajax({
url: "/material/decode3Des",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(jmResult),
success:function (d) {
let parse = JSON.parse(d.data);
if (parse.did !== undefined) {
// 如果扫描的是仓库二维码
depository = parse;
}
if (parse.pid !== undefined) {
// 如果扫描的是库位二维码
place = parse;
}
}
})
}else{
// 如果是条形码
barCodeList.push(decodedText);
}
html5QrCode.stop().then((ignore) => {
// 暂停扫描
layer.confirm("是否继续扫描?",
{
btn: ["继续", "取消"]
},
function () {// 继续
// 弹出选择框
layer.close(layer.index);
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
},
function () { // 取消当前操作
layer.close(layer.index); // 关闭弹窗
// 将数据暂存到redis
var param = {};
param.barCodeList = barCodeList;
param.flag = flag;
layui.$.ajax({
url:"/material/temporaryBarCodeValueForMaterial",
type:"post",
datatype:"json",
data:JSON.stringify(param),
contentType: "application/json;charset=utf-8",
});
if(flag){
var params = {};
params.depository = depository;
params.place = place;
params.materialList = [];
layui.$.ajax({
url: "/material/temporaryValue",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(params)
});
}
// 关闭当前页
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
)
}).catch((err) => {
console.log(err)
// 停止失败,处理它。
});
};
const config = { fps: 10, aspectRatio: 2 };
// Select back camera or fail with `OverconstrainedError`.
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
</script>
</body>
</html>
Loading…
Cancel
Save