|
|
|
@ -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) { |
|
|
|
|