|
|
|
@ -3,6 +3,8 @@ package com.dreamchaser.depository_manage.controller; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.dreamchaser.depository_manage.config.PortConfig; |
|
|
|
import com.dreamchaser.depository_manage.entity.Inventory; |
|
|
|
import com.dreamchaser.depository_manage.entity.MaterialAndPlace; |
|
|
|
import com.dreamchaser.depository_manage.entity.Place; |
|
|
|
import com.dreamchaser.depository_manage.entity.UserByPort; |
|
|
|
import com.dreamchaser.depository_manage.pojo.RestResponse; |
|
|
|
@ -14,6 +16,7 @@ import com.dreamchaser.depository_manage.service.PlaceService; |
|
|
|
import com.dreamchaser.depository_manage.service.StockTakingService; |
|
|
|
import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; |
|
|
|
import com.dreamchaser.depository_manage.utils.CrudUtil; |
|
|
|
import com.dreamchaser.depository_manage.utils.DateUtil; |
|
|
|
import com.dreamchaser.depository_manage.utils.Md5; |
|
|
|
import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
@ -21,10 +24,7 @@ import org.springframework.data.redis.core.RedisTemplate; |
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -277,8 +277,7 @@ public class StockTakingController { |
|
|
|
String minIds = (String) map.get("minIds"); |
|
|
|
String[] split = minIds.split(","); |
|
|
|
List<Integer> minIdList = new ArrayList<>(); |
|
|
|
for (int i = 0; i < split.length; i++) { |
|
|
|
String s = split[i]; |
|
|
|
for (String s : split) { |
|
|
|
if ("".equals(s)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
@ -290,4 +289,81 @@ public class StockTakingController { |
|
|
|
Integer transfer = stockTakingService.stockTakingTransfer(map, userToken,crypt); |
|
|
|
return CrudUtil.postHandle(transfer,minIdList.size()); |
|
|
|
} |
|
|
|
|
|
|
|
@PostMapping("/temporaryStorageForTakingResult") |
|
|
|
public void temporaryStorageForTakingResult(@RequestBody Map<String,Object> map,HttpServletRequest request){ |
|
|
|
// 获取当前盘点人
|
|
|
|
UserByPort userToken = (UserByPort) request.getAttribute("userToken"); |
|
|
|
// 获取当前暂存的结果id
|
|
|
|
String key = "wms_stockTaking_" + userToken.getId() + "_"+ DateUtil.getNowTime()+"_"+map.get("id"); |
|
|
|
map.put("flagForSubmit","false"); |
|
|
|
redisTemplateForHash.opsForHash().putAll(key,map); |
|
|
|
// 存储到今天的12点
|
|
|
|
redisTemplateForHash.expire(key,DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/submitStockTaking") |
|
|
|
public RestResponse submitStockTaking(@RequestBody Map<String,Object> map,HttpServletRequest request){ |
|
|
|
UserByPort userToken = (UserByPort) request.getAttribute("userToken"); |
|
|
|
|
|
|
|
String header = request.getHeader("user-agent"); |
|
|
|
String crypt = Md5.crypt(header); |
|
|
|
// 获取所有有关当前key的键
|
|
|
|
String keyPatten = "wms_stockTaking_"+userToken.getId()+"_"+DateUtil.getNowTime()+"*"; |
|
|
|
Set<String> keys = redisTemplateForHash.keys(keyPatten); |
|
|
|
int success = 0; |
|
|
|
int size = 0; |
|
|
|
if (keys != null && keys.size() > 0) { |
|
|
|
size = keys.size(); |
|
|
|
// 定义用于插入的盘点记录
|
|
|
|
Map<String,Object> param = new HashMap<>(); |
|
|
|
// 如果存在
|
|
|
|
for (String key : keys) { |
|
|
|
Boolean flagForSubmit = ObjectFormatUtil.toBoolean(redisTemplateForHash.opsForHash().get(key, "flagForSubmit")); |
|
|
|
if(flagForSubmit != null && !flagForSubmit){ |
|
|
|
// 如果是第一次提交
|
|
|
|
|
|
|
|
// 获取盘点时的物料与库位的对应关系id
|
|
|
|
Integer id = ObjectFormatUtil.toInteger(redisTemplateForHash.opsForHash().get(key, "id")); |
|
|
|
// 获取物料与库位的对应关系
|
|
|
|
MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id); |
|
|
|
|
|
|
|
Object unit = redisTemplateForHash.opsForHash().get(key, "unit"); |
|
|
|
String takingResult = (String) redisTemplateForHash.opsForHash().get(key, "takingResult"); |
|
|
|
Object number = redisTemplateForHash.opsForHash().get(key, "number"); |
|
|
|
Object oldInventory = redisTemplateForHash.opsForHash().get(key, "oldInventory"); |
|
|
|
Integer newInventory = ObjectFormatUtil.toInteger(oldInventory); |
|
|
|
if ("Inventory_down".equals(takingResult)) { |
|
|
|
// 如果盘亏
|
|
|
|
newInventory -= ObjectFormatUtil.toInteger(number); |
|
|
|
|
|
|
|
}else if("Inventory_up".equals(takingResult)){ |
|
|
|
// 如果盘盈
|
|
|
|
newInventory += ObjectFormatUtil.toInteger(number); |
|
|
|
} |
|
|
|
param.put("newInventory", newInventory); |
|
|
|
param.put("depositoryId",map.get("depositoryId")); |
|
|
|
param.put("placeId",map.get("placeId")); |
|
|
|
param.put("departmentManager",map.get("departmentManager")); |
|
|
|
param.put("state",3); |
|
|
|
param.put("departmentManagerState",3); |
|
|
|
param.put("originator",userToken.getId()); |
|
|
|
|
|
|
|
param.put("mid", placeAndMaterial.getMid()); |
|
|
|
param.put("oldInventory", oldInventory); |
|
|
|
|
|
|
|
param.put("takingResult", takingResult); |
|
|
|
param.put("inventory", number); |
|
|
|
param.put("unit",unit); |
|
|
|
success += stockTakingService.insertStockTaking(param); |
|
|
|
param.remove("id"); |
|
|
|
|
|
|
|
} |
|
|
|
redisTemplateForHash.opsForHash().put(key,"flagForSubmit","true"); |
|
|
|
} |
|
|
|
} |
|
|
|
return CrudUtil.putHandle(success,size); |
|
|
|
} |
|
|
|
} |
|
|
|
|