Browse Source

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

lwx_dev
erdanergou 3 years ago
parent
commit
84c7372af7
  1. 419
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  2. 59
      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. 868
      src/main/resources/templates/pages/applicationForStorageCenter/application-out_scanQrCode.html
  6. 46
      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. 868
      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

419
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
@ -327,6 +328,7 @@ public class MaterialController {
/**
* 用于根据物料id获取物料基础信息
*
* @param map
* @return
*/
@ -646,16 +648,34 @@ public class MaterialController {
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);
}
}
map.put("materialList", materailList);
redisTemplate.opsForValue().set("scanQrCodeValue" + userByPort.getNumber(), JSONObject.toJSONString(map));
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);
}
}
// 将入库物料数据暂存到redis中
@ -684,54 +704,6 @@ 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")
@ -853,48 +825,6 @@ 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")
@ -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) {
@ -1161,57 +1029,6 @@ 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")
@ -1254,62 +1071,6 @@ 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) {
@ -1364,130 +1125,6 @@ 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) {

59
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -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);
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;
}
mv.addObject("materialList", materialList);
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");
if (Integer.compare(userByPort.getMaindeparment(), 361) == 0) {
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;
}
});
}
}
})
}
//用于页面初始化时的卡片构造

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

File diff suppressed because it is too large

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

@ -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,32 +118,38 @@
<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() {
@ -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({
/*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;
}
})
return false;
};
applicationIn = function () {
var index = layer.open({

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;
}
});
}
}
})
}
//用于页面初始化时的卡片构造

868
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